1

アセットフォルダーにapkファイルがあります。
次に、その apk ファイルをシステム アプリケーションとしてインストールするプログラムを作成する必要があります。
次の手順でそのapkファイルをsdcardにコピーすることで、手動で可能です。

$ adb push MyApk.apk /sdcard/ 
$ adb shell
$ su
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
$ cat /sdcard/MyApk.apk > /system/app/MyApk.apk
$ pm install /system/app/MyApk.apk

しかし、コードを介して行うことは可能ですか?

4

1 に答える 1

2

以下のコードを参照して、 RootToolsメソッドを使用してルート化デバイスでユーザー アプリ apk をシステム アプリ apk に移動します。

     PackageInfo paramPackageInfo = null;
        try {
            paramPackageInfo = this.getPackageManager().getPackageInfo(
                    this.getPackageName(), 0);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }

        ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo;

String str1 = "/system/app/" + localApplicationInfo.packageName
                + ".apk";
        String str2 = "busybox mv " + localApplicationInfo.sourceDir + " "
                + str1;

        RootTools.remount("/system", "rw");
        RootTools.remount("/mnt", "rw");

        CommandCapture command = new CommandCapture(0, str2,
                "busybox chmod 644 " + str1);

        try {
            RootTools.getShell(true).add(command).waitForFinish();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        } catch (RootDeniedException e) {
            e.printStackTrace();
        }

        RootTools.remount("/system", "ro");
        RootTools.remount("/mnt", "ro");

アプリケーションで上記のコードを使用する場合、Busybox とスーパーユーザー アプリが必要です。

于 2013-04-30T05:28:00.203 に答える