最近小編經常受到失眠的困擾,因為在編寫一個安卓體能評定的軟體,同時又在構思一個桌面管理應用,不管是構想還是操作上都遇到了很多難題,所以寄希望於小編手機上的一款軟體,因為版權問題,就不說出它叫啥名字了。這個軟體功能棒棒噠,有專門治療失眠的欄目,可是必須聯網線上聽。有時候夜裡睡前是會把手機調成飛行模式的 ...
最近小編經常受到失眠的困擾,因為在編寫一個安卓體能評定的軟體,同時又在構思一個桌面管理應用,不管是構想還是操作上都遇到了很多難題,所以寄希望於小編手機上的一款軟體,因為版權問題,就不說出它叫啥名字了。這個軟體功能棒棒噠,有專門治療失眠的欄目,可是必須聯網線上聽。有時候夜裡睡前是會把手機調成飛行模式的,這樣就聽不了那些音樂了,而聽那些音樂,又常常會有加班的同事打進電話來,搞的我很煩惱。為什麼不把這些音樂下載下來呢?說的好聽,做起來難!現把我白瞟下來的步驟記錄下來,期間會略去關鍵信息,僅用於技術參考,其他概不負責。
一、準備工具
adb、安卓手機、RAR解壓軟體和瀏覽器(推薦谷歌)。
- 調試好adb在系統變數path中的路徑,以便可以直接啟動adb命令行。
- 安卓手機連接電腦,並啟動開發者模式。
二、adb命令行
(一)確認設備是否正常連接
adb shell get-state
獲取設備連接狀態。
只有設備正常連接才能進行後續操作,設備連接不成功有好多原因,比如手機USB驅動沒有安裝、數據線不穩定、手機調試模式沒有打開等等。
(二)查找目標app包名及存儲路徑並拉取
- 在命令行中輸入
adb logcat | findstr START
記錄運行程式併在其中找到剛剛啟動的程式,你會看到諸如
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10200000 cmp=XXX.XXX.XXX/XXXActivity} from pid 1461
之類的東西,其中XXX.XXX.XXX
就是要找的包名,再繼續點進我要找的音樂那個界面,發現它是WebViewActivity,這就好辦了,包里肯定有相關網址信息,然後按CTRL^C退出adb logcat。
- 按照這個思路再輸入
adb shell am start -W -n XXX.XXX.XXX/XXXActivity
啟動軟體,以確認它就是目標軟體主界面。 - 輸入
adb shell am force-stop XXX.XXX.XXX
強制關閉app。 - 輸入
adb shell pm path mtn.plaust.penewstd
獲取APP安裝路徑package:/data/app/XXX.apk
。 - 輸入
adb pull /data/app/XXX.apk
拉取apk到電腦當前目錄。
我的理解是am = Activity Manager, pm = Package Manager,-W是-Wait即等待Activity啟動 -n是指定Activity名。
三、查看apk信息
用RAR軟體查看apk,在assets/sleep/
文件夾下找到CoreXXXXXXNew.txt
,打開一看,是json格式的,在其中找到了我要的信息:
{
"name": "XXXXX",
"img": "XXX.png",
"imgSquare": "XXX.jpg",
"url": "https://www.XXXXXXX.com/XXXXXX/#/voice/146",
"description": "XXX",
"type": "music",
"style": "入睡困難",
"model": "0"
}
四、使用瀏覽器調試
- 打開瀏覽器按F12,並輸入地址訪問,在Network查看找到一條記錄,如圖所示:,也可以使用正則表達式過濾
.*\.mp3
搜索mp3格式的文件。 - 查看headers信息,找到資源文件URL地址,複製鏈接,然後使用瀏覽器就下載下來了。
五、其他方法的嘗試
根據在簡書上參考的一篇文章[使用adb查看別人家的app數據][https://www.jianshu.com/p/d25bb146ef36],我又在第二大步驟的基礎上進行了以下嘗試:
- 備份
//備份 -nosystem不備份系統 -all所有數據 -noshared除了手機存儲空間 -f data.ab輸出結果
adb backup -nosystem -all -noapk -noshared -f data.ab
- 使用abe.jar解包
java -jar abe.jar unpack data.ab data.rar 備份密碼
。
但是結果報錯,反正我的目的已經達到了,就不求甚解吧。