在安卓系統(tǒng)的機(jī)制里面 ,只要是將app復(fù)制到系統(tǒng)的system文件/system/app 文件夾中的app,都是系統(tǒng)應(yīng)用,如果你把系統(tǒng)內(nèi)置的應(yīng)用從里面刪除了,也就是徹底移除了作為系統(tǒng)應(yīng)用的條件 .這就是很多軟件可以刪除 操控系統(tǒng)應(yīng)用的一個(gè)實(shí)際干的事情…
當(dāng)然,要做這個(gè)操作,就必須得先root,不然是不可能做到的.
首先 : 可以用adb 命令 ,adb 命令是需要在電腦端完成的.
(不明白adb命令的,可以去看我的博客里面的說明(https://blog.csdn.net/u012930316/article/details/90314634)
可以先把你要設(shè)置的app ,復(fù)制到sd卡的目錄下面,也就是 /sdcard/
這個(gè)操作也可以使用adb來完成
adb push demo.apk /sdcard/
進(jìn)入手機(jī)的shell 命令行:
adb shell
然后切換root 用戶
su root
如圖:
然后解鎖系統(tǒng)分區(qū),就鎖這個(gè)分區(qū)后,就可以往里面復(fù)制我們的app安裝包了 :
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
5.再復(fù)制我們第一步時(shí)的app 至 系統(tǒng)分區(qū)下面的app目錄下面
cat /sdcard/demo.apk > /system/app/demo.apk // 這一步可以用 cp 實(shí)現(xiàn),但一般設(shè)備中沒有包含該命令。如果使用 mv 會(huì)出現(xiàn)錯(cuò)誤:
6. mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 還原分區(qū)屬性,只讀。
然后,關(guān)機(jī)重啟, 將自己的app設(shè)置為系統(tǒng)app就完成了.但是,弄完這一步,并不能保證我們的app能正常運(yùn)行,還需要進(jìn)行下面的操作 .
在我們的app中,可能會(huì)有 lib 相關(guān)的關(guān)聯(lián)包,你通過這樣的方式引用的,需要手動(dòng)去復(fù)制過去,那么需要進(jìn)行這樣的操作
首先,在電腦端,用解壓縮工具,將我們的app解壓到某個(gè)文件夾下面,在剛才解壓的文件夾下面有個(gè)文件夾lib
打開這個(gè)文件夾,里面會(huì)有三個(gè)文件夾,分別對(duì)應(yīng)不同的 系統(tǒng)架構(gòu)生成的 so文件 ,需要找到合適系統(tǒng)架構(gòu)的的so文件,復(fù)制到 系統(tǒng)分區(qū)的lib 目錄中去(/system/lib/) 我這里是小米5的手機(jī),我復(fù)制的是 armeabi 這個(gè)目錄下面的 so文件.
那么執(zhí)行步驟 ,
先執(zhí)行剛才的第一步,把這個(gè)so文件,全部復(fù)制到 /sdcard/ 就是文件的根目錄下面
再 執(zhí)行上面的解鎖系統(tǒng)分區(qū) 將系統(tǒng)分區(qū)解鎖,然后把這個(gè)文件 復(fù)制到 對(duì)應(yīng)的目錄
如:
cat /sdcard/libsqlcipher.so > /system/lib/libsqlcipher.so
再把系統(tǒng)分區(qū)鎖回去,然后,就可以試試app,看會(huì)不會(huì)崩了.
另外還有一個(gè)通過代碼的方式去將自己的app 設(shè)定為系統(tǒng)應(yīng)用 …原理和上面也是一樣的.
代碼貼上… 可以通過按鈕觸發(fā) setSysApp();這個(gè)方法即可
/*** 設(shè)置為系統(tǒng)應(yīng)用*/
public void setSysApp() {final Runnable runnable = new Runnable() {@Overridepublic void run() {// 解鎖系統(tǒng)分區(qū)String s = "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system";CMDUtils.upgradeRootPermission(s);//s="cat /sdcard/demo.apk > /system/app/demo.apk";CMDUtils.upgradeRootPermission(s);s="cat /sdcard/libsqlcipher.so > /system/lib/libsqlcipher.so";CMDUtils.upgradeRootPermission(s);s="mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system ";CMDUtils.upgradeRootPermission(s);}};new ExecutorUtil(runnable).execute();}public class ExecutorUtil extends Thread{final static ExecutorService cachedThreadPool = Executors.newCachedThreadPool();private Runnable runnable;public ExecutorUtil(Runnable runnable){this.runnable=runnable;}@Overridepublic void run() {try{Looper.prepare();new Handler().post(runnable);//在子線程中直接去new 一個(gè)handlerLooper.loop();//這種情況下,Runnable對(duì)象是運(yùn)行在子線程中的,可以進(jìn)行聯(lián)網(wǎng)操作,但是不能更新UI}catch (Exception e){e.printStackTrace();}}public void execute() {cachedThreadPool.execute(this);}
}// 獲取系統(tǒng)權(quán)限的方式執(zhí)行public static String upgradeRootPermission(String cmd) {Log.i(TAG, "執(zhí)行開始");//String pkgCodePath = "/sdcard";Process process = null;DataOutputStream os = null;try {process = Runtime.getRuntime().exec("su"); //切換到root帳號(hào)os = new DataOutputStream(process.getOutputStream());os.writeBytes(cmd + "\n");os.writeBytes("exit\n");os.flush();process.waitFor();StringBuilder successMsg = new StringBuilder();StringBuilder errorMsg = new StringBuilder();BufferedReader successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));BufferedReader errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));String s;while ((s = successResult.readLine()) != null) {successMsg.append(s);}while ((s = errorResult.readLine()) != null) {errorMsg.append(s);}
// cmdRsult = new CMD_Result(result, errorMsg.toString(),
// successMsg.toString());Log.i(TAG, successMsg.toString() + "執(zhí)行完成" + errorMsg.toString());return successMsg.toString();} catch (Exception e) {Log.e(TAG, "異常 upgradeRootPermission: ", e);} finally {Log.i(TAG, "執(zhí)行完成finally");try {if (os != null) {os.close();}process.destroy();} catch (Exception e) {}}return null;}
總結(jié)
以上是生活随笔為你收集整理的修改安卓系统应用,将自己的app变成系统应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。