日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

修改安卓系统应用,将自己的app变成系统应用

發(fā)布時(shí)間:2023/12/3 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修改安卓系统应用,将自己的app变成系统应用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在安卓系統(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ò),歡迎將生活随笔推薦給好友。