Install apps silently, with granted INSTALL_PACKAGES permission

后端 未结 16 2259
梦谈多话
梦谈多话 2020-11-22 10:32

I am trying to silently install apk into the system. My app is located in /system/app and successfully granted permission \"android.permission.INSTALL_PACKAGES\"

Ho

16条回答
  •  太阳男子
    2020-11-22 10:56

    I have checked how ADB installs apps.
    - It copies the APK to /data/local/tmp
    - it runs 'shell:pm install /data/local/tmp/app.apk'

    I have tried to replicate this behaviour by doing: (on pc, using usb-cable)
    adb push app.apk /sdcard/app.apk
    adb shell
    $ pm install /sdcard/app.apk
    This works. The app is installed.

    I made an application (named AppInstall) which should install the other app.
    (installed normally, non-rooted device)
    It does:
    Runtime.getRuntime().exec("pm install /sdcard/app.apk").waitFor();
    But this gives the error:
    java.lang.SecurityException: Neither user 10019 nor current process has android.permission.INSTALL_PACKAGES.
    It seems like the error is thrown by pm, not by AppInstall.
    Because the SecurityException is not catched by AppInstall and the app does not crash.

    I've tried the same thing on a rooted device (same app and AppInstall) and it worked like a charm.
    (Also normally installed, not in /system or anything)
    AppInstall didn't even ask root-permission.
    But thats because the shell is always # instead of $ on that device.

    Btw, you need root to install an app in /system, correct?
    I tried adb remount on the non-rooted device and got:
    remount failed: Operation not permitted.
    That's why I could not try the /system thing on the non-rooted device.

    Conclusion: you should use a rooted device
    Hope this helps :)

提交回复
热议问题