app備份/恢復(fù)應(yīng)用數(shù)據(jù)的方法(免root,僅適用太極陰、應(yīng)用轉(zhuǎn)生等內(nèi)覆簽的應(yīng)用)
(本文主要介紹安卓手機(jī)免root備份app data分區(qū)數(shù)據(jù)的實(shí)現(xiàn)方法(實(shí)驗(yàn)性),操作擁有低危險(xiǎn)性,可能導(dǎo)致數(shù)據(jù)丟失。包括不限于以下后果:無(wú)法安裝回官方app、恢復(fù)數(shù)據(jù)后應(yīng)用不斷閃退或功能錯(cuò)誤等。一切風(fēng)險(xiǎn)后果需讀者自己承擔(dān),請(qǐng)知悉。)
經(jīng)過(guò)80多個(gè)小時(shí)的探索、研究、試驗(yàn)、寫(xiě)教程。
教程已經(jīng)盡量想的最周到、最全面、最貼心,把所有能想到的情況和意外都寫(xiě)進(jìn)去了。
入門(mén)
實(shí)踐本教程之前,教程假設(shè)您了解安卓應(yīng)用的安裝、卸載、升級(jí)、覆蓋安裝、清除數(shù)據(jù)的意義。
需要備份、恢復(fù)應(yīng)用數(shù)據(jù)的應(yīng)用,必須試在太極、應(yīng)用轉(zhuǎn)生等經(jīng)過(guò)覆簽過(guò)再安裝的。
您應(yīng)了解應(yīng)用data分區(qū)數(shù)據(jù)的含義。且下文“應(yīng)用數(shù)據(jù)”若無(wú)特殊解釋,則僅專指應(yīng)用的data分區(qū)數(shù)據(jù)。
如果這些都了解了,可以直接閱讀教程正文。
前言(探索過(guò)程與原理解釋,這部分可以跳過(guò)不看)
一般來(lái)說(shuō),安卓用戶想備份app的data分區(qū)應(yīng)用數(shù)據(jù),比較常見(jiàn)的方法有三類
一、使用專用app讀取data分區(qū),復(fù)制或壓縮data分區(qū)的應(yīng)用數(shù)據(jù)到內(nèi)置存儲(chǔ)目錄。
如:鈦備份、re文件瀏覽器等。但是需要獲取root權(quán)限。
二、連接數(shù)據(jù)線,使用adb backup命令備份應(yīng)用數(shù)據(jù)到電腦。
helium氦備份app的工作原理就是這樣,當(dāng)然也可以自己打adb命令。但是現(xiàn)在的應(yīng)用幾乎都拒絕了allowBackup權(quán)限,已經(jīng)基本失效了。
三、進(jìn)入第三方recovery,全量備份data分區(qū)。
小編只知道twrp支持備份,cwm啥的沒(méi)試過(guò)。但是使用第三方rec很可能需要解鎖BL、線刷rec鏡像、清除全機(jī)數(shù)據(jù)。
不難發(fā)現(xiàn),在現(xiàn)如今的智能機(jī)環(huán)境下,應(yīng)用數(shù)據(jù)的備份困難重重。root權(quán)限已經(jīng)極難獲取,而第三方rec,也是可能需要解鎖BL、線刷rec鏡像、清除全機(jī)數(shù)據(jù)。很多的機(jī)型甚至根本沒(méi)有提供BL解鎖的入口,更不要提什么第三方rec了?;蛟S很幸運(yùn),您的機(jī)型可以解鎖bl,但是這將可能直接導(dǎo)致失去保修資格,而且面臨泄露隱私、手機(jī)“變磚”等風(fēng)險(xiǎn)。相信這是大家不愿意見(jiàn)到的吧。
而且解鎖bl,將會(huì)清除全機(jī)數(shù)據(jù),這還備份個(gè)毛。
難道就沒(méi)有免root免解BL的備份方法嗎?真是愁煞人哉!為此,我經(jīng)過(guò)不斷的進(jìn)行探索與試驗(yàn),終于找到了可行的解決方案。
首先,我想到了剛才所說(shuō)的第一種方法,直接使用專用軟件復(fù)制或壓縮應(yīng)用數(shù)據(jù)到內(nèi)置存儲(chǔ)。如果說(shuō)能夠免root實(shí)現(xiàn)讀寫(xiě)應(yīng)用數(shù)據(jù),就可以備份了。而想免root讀取應(yīng)用數(shù)據(jù),就只有這個(gè)應(yīng)用本身可以做到。
試驗(yàn)過(guò)程:使用文件管理應(yīng)用,訪問(wèn)自己的數(shù)據(jù)目錄。使用mixplorer成功訪問(wèn)uri目錄 flie://data/data/com.mixplorer/??梢哉Wx寫(xiě)。
也就是說(shuō),如果將mixplorer的包名替換成需要備份數(shù)據(jù)的應(yīng)用的包名,然后再替換安裝,就可以直接訪問(wèn)到file://data/data/包名/ 目錄,然后復(fù)制或者壓縮到內(nèi)部存儲(chǔ),實(shí)現(xiàn)應(yīng)用數(shù)據(jù)的備份與恢復(fù)。
但是,這就遇到了另外一個(gè)難題了,替換包名,必然會(huì)改變簽名,而安卓核心擁有驗(yàn)簽機(jī)制。安卓核心不允許改簽了的應(yīng)用覆蓋安裝,也不允許低版本應(yīng)用覆蓋安裝高版本應(yīng)用。
這可愁煞人哉!難道免root備份應(yīng)用數(shù)據(jù)的路,就這樣走到盡頭了嗎?就當(dāng)我?guī)捉^望放棄之時(shí),突然想起了之前看到過(guò)一篇介紹adb命令的文章,讓我看到了希望。有一個(gè)命令,可以卸載app但保留應(yīng)用數(shù)據(jù)。這樣的話,再安裝改包名的mixplorer,不就可以實(shí)現(xiàn)備份了?
說(shuō)干就干,試驗(yàn)過(guò)程:使用adb命令卸載mixplorer但保留數(shù)據(jù),然后用mt管理器覆簽mixplorer,再重新安裝。
卸載應(yīng)用但保留數(shù)據(jù)的adb命令:adb shell pm uninstall -k 應(yīng)用包名
毫無(wú)疑問(wèn),失敗了。是我想多了,安卓?jī)?nèi)核的驗(yàn)簽機(jī)制是不可能留下這個(gè)漏洞的。與其說(shuō)是卸載,不如說(shuō)是凍結(jié)更像一些。
而且,到這時(shí)我才發(fā)現(xiàn)一個(gè)問(wèn)題,我使用apk editor pro改mixplorer包名后居然無(wú)法安裝!提示解析錯(cuò)誤!這是為啥呢?我最終也沒(méi)搞明白,可能是安裝包被各種混淆、類名復(fù)雜、各種復(fù)雜引用導(dǎo)致的吧。。。
于是,這個(gè)思路就暫時(shí)放棄了,我開(kāi)始了各種姿勢(shì)的繞遠(yuǎn)。
我想起一開(kāi)始所說(shuō)的第二種方法使用adb backup命令的方法,在xposed installer官方庫(kù)里有一款名叫backup all apps的xposed模塊,使用了這個(gè)模塊就可以直接用adb backup命令或者h(yuǎn)elium直接備份而繞過(guò)allowbackup權(quán)限。
試驗(yàn)過(guò)程:從應(yīng)用轉(zhuǎn)生安裝mixplorer和backup all apps模塊并啟用,然后連接電腦執(zhí)行adb backup命令備份mixplorer應(yīng)用數(shù)據(jù)。
毫無(wú)疑問(wèn),又失敗了。因?yàn)閎ackup all apps模塊的工作需要修改系統(tǒng),這并不是太極陰和應(yīng)用轉(zhuǎn)生能夠做到的,必須root才行。
想折騰來(lái)這里下載模塊:https://repo.xposed.info/module/com.pyler.backupallapps
然后我冒出了好多奇奇怪怪的危險(xiǎn)想法,我開(kāi)始從國(guó)內(nèi)外搜集各種資料,查找高通、mtk平臺(tái)芯片的cve安全漏洞……當(dāng)然,這幾乎是無(wú)效的,做的都是無(wú)用功。換言之,即便是找到了可以用的漏洞,也不具有普遍性,在別的手機(jī)上很難有用武之地。然后我又嘗試adb獲取設(shè)備管理員權(quán)限,接管app安裝,這簡(jiǎn)直是驢唇不對(duì)馬嘴……反正這種莫名其妙的辦法也試了一些,都失敗了。
后來(lái)我終于想到了一個(gè)比較靠譜的方案:直接從太極陰或者應(yīng)用轉(zhuǎn)生啟用針對(duì)備份應(yīng)用數(shù)據(jù)的xposed模塊,模塊直接hook應(yīng)用,讓它自己把自己數(shù)據(jù)復(fù)制壓縮/解壓縮,以實(shí)現(xiàn)應(yīng)用數(shù)據(jù)的備份/恢復(fù)。
其實(shí)這是一個(gè)最方便、操作簡(jiǎn)單易懂、最易成功的免root備份應(yīng)用數(shù)據(jù)的方法,非??尚?。只可惜我翻遍全網(wǎng),也沒(méi)能找到這樣的模塊。畢竟在模塊開(kāi)發(fā)者的方面想,既然你已經(jīng)用了xposed框架和模塊了,就默認(rèn)用戶已經(jīng)有root權(quán)限了,所以模塊開(kāi)發(fā)者們根本不會(huì)想到去開(kāi)發(fā)使用xp模塊備份恢復(fù)應(yīng)用數(shù)據(jù)的這種雞肋功能的模塊。
然后我開(kāi)始嘗試自己開(kāi)發(fā)這種xposed模塊,雖然說(shuō)我以前開(kāi)發(fā)過(guò)安卓端app,但是我那些都是使用nirenr大佬的androlua開(kāi)發(fā)的,對(duì)安卓底層和java xposed api等基本上不了解,只對(duì)lua比較熟練。后來(lái)好不容易又挖掘到了使用lua開(kāi)發(fā)xposed的方法,但是由于缺少開(kāi)發(fā)文檔而且bug很多,所以就只能放棄了自己開(kāi)發(fā)xposed模塊的想法。
于是,我又一次走到了死胡同。最可行的方法被堵住了,說(shuō)實(shí)話很令我絕望。
經(jīng)過(guò)一周多的不斷試驗(yàn)、探索,難道就這樣走到末路了嗎?這能令我甘心嗎?
就當(dāng)我正要徹底放棄的時(shí)候,我開(kāi)機(jī)用于試驗(yàn)的模擬器準(zhǔn)備清理刪除它時(shí),突然發(fā)現(xiàn)自己忽略了一個(gè)近在眼前的方法。
是,安卓核心不允許改簽和低版本應(yīng)用覆蓋安裝,但是在太極陰和應(yīng)用轉(zhuǎn)生中安裝的app,不都是已經(jīng)改過(guò)簽了嗎?所以再?gòu)奶珮O陰和應(yīng)用轉(zhuǎn)生中直接覆蓋安裝改好包名的文件管理器,豈不是美滋滋?我敲一下自己傻傻的腦殼,奧利給!于是又再次回到了剛才早已放棄了的那支思路——繼續(xù)解決mixplorer改包名后無(wú)法安裝的問(wèn)題。
我當(dāng)時(shí)使用的工具是安卓軟件apk editor pro(下載地址見(jiàn)文章尾),一是因?yàn)楦腶pp包名成功率比較高,但更重要的是因?yàn)榭梢苑奖愕男薷腶pp的versioncode版本號(hào)。當(dāng)然,比較會(huì)的也可以用mt管理器,反編譯xml修改android:versioncode標(biāo)簽,但是完整反編譯xml、改app包名可能需要充vip,這直接勸退了像我這樣的困難群眾。mixplorer的無(wú)法安裝,我當(dāng)時(shí)以為是apk編輯軟件本身的原因,所以我尋找其他能夠編輯apk的軟件。如:安卓廚房、apk editor、mt管理器、apk editor pro等。但逐一試驗(yàn)后發(fā)現(xiàn),不論是用何種編輯軟件,改過(guò)mixplorer應(yīng)用包名后都無(wú)法安裝,這才發(fā)覺(jué)是mixplorer的問(wèn)題。
于是我嘗試使用其他的文件管理器和壓縮軟件,但是絕大多數(shù)的文件管理器和壓縮軟件app,改包名后都無(wú)法安裝。比如rar、zarchiver pro、rootexplorer、es文件瀏覽器、mt管理器……常見(jiàn)的基本上都試了,都會(huì)出現(xiàn)無(wú)法解析安裝包、安裝后屢次閃退、功能不正常等問(wèn)題。有個(gè)lemon的小眾管理器可以使用,但是它的壓縮功能欠佳,有興趣的同學(xué)可以去酷安搜索lemon下載。
于是我又開(kāi)始了自己的繞遠(yuǎn)之路——我打算自己開(kāi)發(fā)一個(gè)文件管理器。當(dāng)然,純粹的獨(dú)立開(kāi)發(fā)對(duì)我來(lái)說(shuō)不太可能,畢竟我是個(gè)小白嘛。。。
長(zhǎng)話短說(shuō),github上有個(gè)簡(jiǎn)單的仿re文件管理器,然后我下載下來(lái),使用aide稍微改了改然后打包安裝,成功的訪問(wèn)了應(yīng)用自己的數(shù)據(jù)目錄,并成功讀寫(xiě)。而且打包出來(lái)的apk,很容易就可以改包名和版本號(hào)。即使是無(wú)法改也不用擔(dān)心,畢竟有源碼嘛,從源碼改然后再打包安裝不就得了。但是這個(gè)方法最后讓我廢棄了,原因是這個(gè)管理器不僅太舊了,甚至還有有很多bug而我又沒(méi)有能力修復(fù),還缺少很多功能。鏈接寫(xiě)在下方,有興趣的可以去下載看看。
https://github.com/outofmemo/AndroidExplorer
(注意我下載后從aide改動(dòng)了一下源碼,把新建標(biāo)簽選項(xiàng)里的外置存儲(chǔ)路徑改成了如下,其他的基本上未改動(dòng))
此外又找了許多其他的文件管理器的源碼,但都不符合要求。然后我甚至開(kāi)始嘗試使用androlua獨(dú)立開(kāi)發(fā),這可難為死孩子了……最終只能以失敗告終。
于是我只能從網(wǎng)絡(luò)的海洋中苦苦尋找,終于在一個(gè)角落里找到了一個(gè)名叫total commander的文件管理器app,改包名后可以正常安裝,而且還具有壓縮功能。
于是我興奮的全程試驗(yàn)了一遍:我從太極陰里安裝了qq,登錄qq發(fā)幾個(gè)消息然后斷網(wǎng)。然后用apk editor pro修改了total commander的應(yīng)用信息——包名和版本號(hào)改成與安裝的qq相同。然后從太極陰里覆蓋安裝,執(zhí)行打開(kāi)命令file://data/user/0/com.tencent.mobileqq/,把所有文件和文件夾壓縮到sdcard目錄。
緊接著又試驗(yàn)了一遍恢復(fù)數(shù)據(jù):打開(kāi)設(shè)置-應(yīng)用-com.tencent.mobileqq-清除應(yīng)用數(shù)據(jù),然后再用total commander把剛才壓縮到sdcard的壓縮包解壓回目錄file://data/user/0/com.tencent.mobileqq/,用太極陰安裝回qq,打開(kāi)qq,自動(dòng)進(jìn)入了登錄狀態(tài)并且有之前發(fā)消息的聊天記錄。
順便測(cè)試了一下file://data/user_de/0/com.tencent.mobileqq/也可以正常讀取,不過(guò)這個(gè)一般用不到,所以就沒(méi)測(cè)試寫(xiě)入、備份、恢復(fù)。
從模擬器中試驗(yàn)完畢,這基本上就算是成功了吧,于是我準(zhǔn)備從真機(jī)上再實(shí)際操作一遍。但是又遇到了一個(gè)難題!不知道為什么,從手機(jī)上用apk editor pro修改total commander的包名,回編譯打包后,竟然又無(wú)法解析安裝包了!無(wú)法安裝。但是我從模擬器修改,發(fā)到真機(jī)上就又可以安裝了,這真是蜜汁操作啊。
追溯原因,我假設(shè)是x86架構(gòu)導(dǎo)致的,但當(dāng)我使用一臺(tái)魅族舊機(jī)再次試驗(yàn)的時(shí)候,卻又可以正常安裝了。所以我推測(cè),這是apk editor pro不能完善的支持較新安卓版本導(dǎo)致的。
驗(yàn)證:安卓x86 7.1模擬器測(cè)試正常安裝、華為和聯(lián)想android9真機(jī)測(cè)試解析安裝包錯(cuò)誤、魅族安卓7.0真機(jī)測(cè)試正常安裝。
果然如此。所以,如果機(jī)器的安卓系統(tǒng)版本較新,就可以從電腦裝安卓模擬器、或從手機(jī)裝vmos,然后從模擬器內(nèi)安裝apk editor pro修改total commander應(yīng)用信息,然后再導(dǎo)入真機(jī)就好了。
終于成功了,這不得不令人感嘆。
教程簡(jiǎn)述
對(duì)于有較深搞機(jī)經(jīng)驗(yàn)的人,只聽(tīng)這兩三句簡(jiǎn)述就懂了。除外請(qǐng)直接略過(guò)看教程正文。
①首先,目標(biāo)應(yīng)用必須是經(jīng)過(guò)私簽了的,如太極、應(yīng)用轉(zhuǎn)生內(nèi)的應(yīng)用,zipsigner覆簽的應(yīng)用?;蛘咂平饬税沧亢诵?。
②然后,把一個(gè)文件管理器或者壓縮app的包名、版本號(hào)改成與目標(biāo)應(yīng)用相同。并覆簽。
③替換安裝,訪問(wèn)“/data/data/包名/”目錄,通過(guò)復(fù)制粘貼/壓縮解壓縮實(shí)現(xiàn)備份/恢復(fù)應(yīng)用數(shù)據(jù)。
教程正文
準(zhǔn)備工具
一臺(tái)功能完整的安卓手機(jī),一個(gè)木函、mt管理器、apk editor pro、total commander安裝包。
可能需要一臺(tái)windows系統(tǒng)電腦,逍遙安卓模擬器、新建安卓7.1-64bit鏡像(建議)。
(工具的下載鏈接見(jiàn)文章尾)
需要備份的目標(biāo)應(yīng)用:.必須是太極陰、應(yīng)用轉(zhuǎn)生里的app,才可以實(shí)現(xiàn)免root備份。
教程以太極陰和qq做為應(yīng)用數(shù)據(jù)備份的演示。
送給小白的話:
完整備份app,需要拷貝的目錄至少有
/data/data/包名/
/data/user_de/0/包名/
/sdcard/Android/data/包名/
以及其他關(guān)聯(lián)的文件夾…
本教程主要目的是教大家免root備份data分區(qū)應(yīng)用數(shù)據(jù),路徑一般是"/data/data/包名/",小白一定要知悉!不要再來(lái)問(wèn)為什么用本教程備份了瀏覽器的應(yīng)用數(shù)據(jù),但是恢復(fù)后下載的文檔卻丟了這樣的問(wèn)題!不要來(lái)怪我,要知道腦子是個(gè)好東西!
好了,正文開(kāi)始(請(qǐng)完整的看完以下內(nèi)容再操作):
備份
第一步:獲取目標(biāo)應(yīng)用的包名和版本號(hào)
比較方便的獲取方法,就是使用一個(gè)木函的應(yīng)用管理功能。
安裝并打開(kāi)一個(gè)木函---打開(kāi)應(yīng)用管理---搜索qq---點(diǎn)擊qq應(yīng)用信息---記住包名和版本號(hào)信息。
*建議,此處也可以點(diǎn)擊提取安裝包以備份。保存路徑為/sdcard/download/woodbox/apk/。
第二步:修改total commander的包名和版本號(hào)并替換安裝
下載文章尾部的apk editor并安裝,下載total commander安裝包到手機(jī)、不安裝。
打開(kāi)apk編輯器+---選擇下載的total commander安裝包---點(diǎn)擊簡(jiǎn)單編輯---把包名和版本號(hào)修改為剛才獲取的--生成新app后使用太極替換安裝qq。
apk editor pro生成新app默認(rèn)保存路徑:/sdcard/apkeditor/tmp/gen_signed.apk。
注意1:如果手機(jī)安卓版本>7,大概率會(huì)出現(xiàn)新app安裝包解析失敗的情況。所以建議從電腦安裝安卓模擬器,或從手機(jī)安裝vmos,然后再操作此步驟,生成的新app復(fù)制到真機(jī),再?gòu)奶珮O替換安裝。
注意2:請(qǐng)確認(rèn)版本號(hào)改的相同,如果新app版本號(hào)改高了,將會(huì)導(dǎo)致無(wú)法覆蓋裝回原app。獲得安裝包的版本名,建議使用mt管理器,如圖。
注意3:某些機(jī)型點(diǎn)擊安裝apk時(shí)不顯示太極安裝選項(xiàng),這種情況一般問(wèn)題出在系統(tǒng)intent調(diào)用上,由于主線是備份,所以原理就不過(guò)多解釋了,這種情況建議打開(kāi)太極手動(dòng)添加,直接指向新生成apk的路徑。這樣就可以成功的覆蓋安裝了。
注意4:如果安裝過(guò)程中提示安裝未完成,請(qǐng)卸載之前安裝過(guò)的total commander。如果未解決請(qǐng)參閱“補(bǔ)充筆記”。
第三步:使用total commander備份應(yīng)用數(shù)據(jù)
打開(kāi)新覆蓋安裝的total commander---點(diǎn)擊下方的加號(hào)新增命令---選擇更改目錄,命令手動(dòng)輸入設(shè)置為"/data/data/第一步中獲得的包名/"---然后執(zhí)行這個(gè)命令進(jìn)入數(shù)據(jù)目錄---全部選擇后,壓縮到/sdcard/目錄。
提示:點(diǎn)擊左側(cè)圖標(biāo)可以多選
注意1:部分機(jī)型,數(shù)據(jù)目錄只能是/data/user/0/包名/。
注意2:如果手機(jī)性能較差,請(qǐng)調(diào)低壓縮級(jí)別。過(guò)于卡頓可能閃退、導(dǎo)致數(shù)據(jù)錯(cuò)誤,為了穩(wěn)定我一般使用2級(jí)別。
注意3:壓縮包的目錄選擇到/sdcard/,別忘了加.zip后綴名。
注意4:若部分應(yīng)用需要備份緩存,可再新增一個(gè)更改目錄的路徑。一般緩存目錄在/data/user_de/0/包名/。一般不需要備份緩存。
第四步:裝回原app
這就不用多說(shuō)了吧,把原app裝回到太極。
如果第一步中備份了原app,就前往備份的路徑安裝。
或者去市場(chǎng)安裝最新版。我第一步演示時(shí)沒(méi)備份qq安裝包,所以從酷安下載最新版從太極安裝了。
注意:下載的app版本需較新或相同,版本若低于原app,將會(huì)安裝失敗。
恢復(fù)
第一步、第二步、第四步與備份應(yīng)用數(shù)據(jù)時(shí)相同,所以這里只介紹第三步。
依然以太極陰、qq為演示。
第一步:同備份第一步
第二步:同備份第二步
第三步:使用total commander恢復(fù)應(yīng)用數(shù)據(jù)
*建議先刪除全部原data應(yīng)用數(shù)據(jù)再執(zhí)行恢復(fù)(請(qǐng)參照備份第三步,進(jìn)入應(yīng)用數(shù)據(jù)目錄---全選---刪除)
打開(kāi)新覆蓋安裝的total commander---找到之前備份的數(shù)據(jù)壓縮包文件并打開(kāi)---全選里面的文件夾和文件---點(diǎn)擊下方按鈕,解壓到手動(dòng)輸入路徑"/data/data/第一步中獲取的包名/"---覆蓋全部。
提示:點(diǎn)擊左側(cè)圖標(biāo)可以多選
注意1:部分機(jī)型,數(shù)據(jù)目錄只能是/data/user/0/包名/。
注意2:如果需要恢復(fù)其他目錄的數(shù)據(jù),如/data/user_de/0/包名/,改解壓路徑即可。
注意3:如果恢復(fù)中途失敗,就把"壓縮包/lib/"里的所有l(wèi)ibtc***.so文件刪除,再恢復(fù)應(yīng)該就可以了。
第四步:同備份第四步
使用total commander,免root備份app數(shù)據(jù)的操作教程,就此結(jié)束。
風(fēng)險(xiǎn)與其他注意事項(xiàng)
風(fēng)險(xiǎn)1:total commander是個(gè)小眾且官方維護(hù)較少的文件管理應(yīng)用,請(qǐng)當(dāng)心此應(yīng)用本身可能存在的bug。
風(fēng)險(xiǎn)2:apk editor pro改包名并不完美,而且不能夠完善的支持安卓8+,修改的total commander等app某些情況下可能導(dǎo)致閃退等問(wèn)題。
風(fēng)險(xiǎn)3:total commander安裝后,將會(huì)在data目錄生成一些文件和文件夾,這些將主要包括:一些依賴的庫(kù)、SharedPreferences的xml數(shù)據(jù)存儲(chǔ)文件,自動(dòng)生成的文件有可能覆蓋被備份應(yīng)用原有的同名同路徑文件。其中某幾個(gè)xml文件,有更高的覆蓋可能性,并有可能導(dǎo)致致命后果。但總體風(fēng)險(xiǎn)極小,絕大多數(shù)情況下不需要擔(dān)心。想盡可能的避免此風(fēng)險(xiǎn)請(qǐng)參照閱讀“備用解決方案”。
風(fēng)險(xiǎn)4:如果data分區(qū)和sdcard目錄的文件系統(tǒng)不同,解壓縮時(shí)有較小的可能出現(xiàn)bug而終止、壓縮時(shí)有較小的可能出現(xiàn)錯(cuò)誤而導(dǎo)致壓縮包無(wú)法被正常讀取。
風(fēng)險(xiǎn)5:其他未知的風(fēng)險(xiǎn)。
注意事項(xiàng)1:本教程應(yīng)用于正當(dāng)用途。
注意事項(xiàng)2:為保證數(shù)據(jù)安全,操作者應(yīng)充分擁有意識(shí)與常識(shí)。如備份前先使用模擬器測(cè)試一遍、恢復(fù)數(shù)據(jù)前檢查一下壓縮包完整性等。
注意事項(xiàng)3:操作全程原則上應(yīng)避免息屏、反復(fù)喚醒、切出頁(yè)面、中途關(guān)機(jī)等操作,以備份/恢復(fù)data分區(qū)的應(yīng)用數(shù)據(jù)為中心,此外盡量少操作total commander。若需備份sdcard等其他目錄的數(shù)據(jù)宜選擇外部應(yīng)用。這樣做的目的是為了防止意外錯(cuò)誤的發(fā)生。
注意事項(xiàng)4:雖暫未發(fā)現(xiàn)xposed模塊的不利影響,但仍建議盡量禁用所有xposed模塊后再操作。
注意事項(xiàng)5:本文主要介紹的免root備份數(shù)據(jù)的實(shí)現(xiàn)方法僅為實(shí)驗(yàn)性,操作擁有低危險(xiǎn)性,可能導(dǎo)致數(shù)據(jù)丟失。包括不限于以下后果:無(wú)法安裝回官方app、恢復(fù)數(shù)據(jù)后應(yīng)用不斷閃退或功能錯(cuò)誤等。一切風(fēng)險(xiǎn)后果需讀者自己承擔(dān),請(qǐng)知悉。
注意事項(xiàng)6:非必要情況下,應(yīng)用數(shù)據(jù)的備份與恢復(fù),不建議跨機(jī)操作。即,不建議備份手機(jī)的應(yīng)用數(shù)據(jù),恢復(fù)到另一部手機(jī)。更不建議跨平臺(tái)操作(x86/ARM/MIPS)。
備用解決方案
備用解決方案可以避免教程中正常方案的某些風(fēng)險(xiǎn),或者在正常方案不能正常工作時(shí),可以使用本方案替代。
注意1:雖然避免了正常方案的某小部分的風(fēng)險(xiǎn),但備用方案具容易丟失重要數(shù)據(jù),所以帶來(lái)了更大的另一部分的風(fēng)險(xiǎn)。且編者測(cè)試備用方案?jìng)浞輖q時(shí)確實(shí)丟失了大量數(shù)據(jù)。
注意2:up未完整測(cè)試過(guò)備用方案,請(qǐng)自行測(cè)試。備用方案可能不完善支持安卓11+。
注意3:雖然可以盡可能的避免風(fēng)險(xiǎn)3,但并不是完全杜絕,經(jīng)測(cè)試依然有較少sharedpreference數(shù)據(jù),但相對(duì)此風(fēng)險(xiǎn)較小。
方案簡(jiǎn)述:
備用方案一,使用aide編輯并打包仿re文件管理器,可以盡可能避免風(fēng)險(xiǎn)2,詳見(jiàn)前言。
備用方案二,使用lemon替代total commander,詳見(jiàn)前言。
備用方案不再贅述,只建議擔(dān)心遭遇風(fēng)險(xiǎn)3的用戶自行研究或嘗試。
已知缺陷與禁忌
(尚不明確,歡迎并感謝積極反饋)
局限性聲明
對(duì)于在太極、應(yīng)用轉(zhuǎn)生以外安裝的應(yīng)用,若想備份這些應(yīng)用的data分區(qū)應(yīng)用數(shù)據(jù),有額外的局限性:
1.應(yīng)用必須經(jīng)過(guò)私簽,并您保留了簽名文件以備覆簽。
2.目標(biāo)應(yīng)用如果是內(nèi)置應(yīng)用,將不能應(yīng)用本教程。因?yàn)閼?yīng)用幾乎不可能經(jīng)過(guò)了您私簽。
如果您設(shè)備的安卓核心經(jīng)過(guò)了破解,將不會(huì)存在這些局限性,不需要私簽覆簽等操作就可以直接覆蓋安裝,甚至可能不需要修改total commander的版本號(hào)信息。
即使目標(biāo)應(yīng)用已多開(kāi),只要是利用系統(tǒng)多用戶的通用方式多開(kāi)的,直接使用本教程替換主應(yīng)用,然后再打開(kāi)主應(yīng)用或者多開(kāi)應(yīng)用即可按照教程正常備份/恢復(fù)它們的應(yīng)用數(shù)據(jù),但有以下局限性:
1:備份/恢復(fù)多開(kāi)應(yīng)用數(shù)據(jù)時(shí),一般可以工作正常。但如果您的安卓系統(tǒng)有缺陷或者不知名原因?qū)е聼o(wú)/data/data/目錄,您將不能直接使用/data/user/0/替代,并且無(wú)法直接訪問(wèn)/data/user_de/0/包名/。除非您獲得了從應(yīng)用賬戶身份code替換0。
查看user列表adb命令(僅供參考):adb shell pm list users
2:一般主從應(yīng)用數(shù)據(jù)互相隔離,即主應(yīng)用只能備份/恢復(fù)主應(yīng)用數(shù)據(jù)、從應(yīng)用只能備份/恢復(fù)從應(yīng)用數(shù)據(jù)。
3:想說(shuō)啥來(lái)著,突然忘了,以后想起來(lái)再來(lái)補(bǔ)上吧。
補(bǔ)充筆記
請(qǐng)先卸載或替換已安裝的total commander,否則不可以備份/恢復(fù)其他應(yīng)用。因?yàn)椴徽搕otal commander是否經(jīng)過(guò)修改過(guò)包名等信息,都將被安卓只允許安裝一個(gè)。這可能是因?yàn)閍pk editor的缺陷而導(dǎo)致未能成功替換所有類名,所以安裝時(shí)出現(xiàn)類名沖突。
如果您想嘗試編輯(增刪改)應(yīng)用數(shù)據(jù),原則上不能直接從total commaner中,應(yīng)當(dāng)備份出來(lái)、修改、恢復(fù)回去才是硬道理。這是為了防止意外錯(cuò)誤,并且在其中不論是使用intent還是scheme各種方式調(diào)起其他外部應(yīng)用,都無(wú)法正常被編輯。詳見(jiàn)注意事項(xiàng)3。
如果能夠有備份/恢復(fù)應(yīng)用數(shù)據(jù)的專用xposed模塊,這是最方便可行的。如果讀者可以找到這樣的模塊,或自己開(kāi)發(fā)了這樣的模塊,建議在太極陰、應(yīng)用轉(zhuǎn)生等啟用模塊而不是應(yīng)用本教程。
使用mixplorer替換total commander的作用將會(huì)更好,因?yàn)榍罢呤鞘鼙娸^大、官方維護(hù)多的免費(fèi)應(yīng)用。只是我未能成功的修改mixplorer包名和版本號(hào),修改安裝后屢次閃退。如果有可能的話,您應(yīng)該優(yōu)先使用mixplorer而不是total commander。
如果您生效了能夠修改系統(tǒng)的xposed,如太極陽(yáng)、lsposed、xposed installer等,但卻沒(méi)有開(kāi)啟root,這種極特殊情況下將可以更容易的實(shí)現(xiàn)免root備份。只需要在xposed中安裝backup all apps模塊并啟用,然后再使用helium或者adb backup命令即可。這樣不僅可以避免已知的風(fēng)險(xiǎn),并且?guī)缀醪辉倬哂芯窒扌裕词故窍到y(tǒng)內(nèi)置的應(yīng)用也可以備份。但是這似乎對(duì)多開(kāi)的應(yīng)用支持的并不友好。
所有工具下載
*一個(gè)木函,致力于高效工作的工具集合。教程中主要使用應(yīng)用管理功能查看應(yīng)用信息、備份apk。
酷安網(wǎng)下載
https://www.coolapk.com/apk/com.One.WoodenLetter
*apk editor pro,play商店中的apk編輯神器。教程中主要用來(lái)修改total commander安裝包的包名和版本號(hào)。原版無(wú)漢語(yǔ),翻譯的有兩個(gè)版本,只下載其中一個(gè)就可以了。
2.5.1漢化版(新)
https://wwa.lanzous.com/ivma5oxbsgh
1.10.0 MD2風(fēng)格漢化版(穩(wěn)定)
https://wwa.lanzous.com/imCi5oxczgf
*total commander,一款雙窗口操作風(fēng)格的文件管理器應(yīng)用,支持中文。教程中的主角應(yīng)用,具有壓縮解壓縮/復(fù)制粘貼等基礎(chǔ)功能,直接用于備份/恢復(fù)應(yīng)用數(shù)據(jù)。
官網(wǎng)下載(薦)
http://ghisler.com/tcandroid.apk
藍(lán)奏云下載
https://wwa.lanzous.com/iZGPToxbslc
mt管理器,國(guó)產(chǎn)的強(qiáng)大文件管理工具和apk逆向神器。教程中用的較少,主要用來(lái)二次確認(rèn)導(dǎo)出應(yīng)用的包名和版本號(hào)正確性。
酷安網(wǎng)下載
https://www.coolapk.com/apk/bin.mt.plus
*逍遙安卓模擬器,一個(gè)很適合用于開(kāi)發(fā)調(diào)試的模擬器。教程中用于更加兼容的運(yùn)行apk editor pro,修改total commander安裝包信息。我用的安卓7.1 64bit鏡像。
去逍遙模擬器官網(wǎng)下載
https://www.xyaz.cn/
一般情況用不到的工具(可以跳過(guò)不看)
vmos pro模擬器,從安卓套娃安卓。如果不打算使用電腦,可以用此工具替代逍遙模擬器。注意,可能只支持arm平臺(tái)的設(shè)備使用。
酷安網(wǎng)下載
https://www.coolapk.com/apk/com.vmos.pro
mixplorer,如果你想嘗試使用mixplorer替代total commander的工作,可以下載。進(jìn)入設(shè)置頁(yè)可以改顯示語(yǔ)言。
https://www.coolapk.com/apk/com.mixplorer
仿re文件瀏覽器源碼,如果你想打包它并替代total commander的工作,可以去github下載。下載鏈接詳見(jiàn)前言。
編譯打包可能需要用到aide,且打包時(shí)自動(dòng)下載某些庫(kù)文件,注意這些文件的下載可能需要學(xué)科上網(wǎng)。
酷安網(wǎng)下載(英文版)
https://www.coolapk.com/apk/com.aide.ui
極特殊情況用的工具(可以跳過(guò)不看)
helium氦備份,無(wú)需root也可以備份app數(shù)據(jù),但需要連接數(shù)據(jù)線和allowbackup特殊權(quán)限。
https://soft.shouji.com.cn/down/25191.html
backup all apps,一個(gè)強(qiáng)制通過(guò)allowbackup標(biāo)簽權(quán)限的xpoed模塊,需要具有system權(quán)限的xposed環(huán)境。
https://repo.xposed.info/module/com.pyler.backupallapps
搞機(jī)工具箱,晨鐘醬大佬開(kāi)發(fā)的adb工具箱,如果你打算手動(dòng)敲adb backup命令可以從這里下載工具。adb backup具體命令自己搜吧不贅述了。
聯(lián)系客服