Android:以编程方式将apk复制到/ system / app

我试图从我的java代码中安装一个系统应用程序,到目前为止,我还没有取得任何成功。

以下是我迄今为止所做的:

  • 我的设备已经扎根。
  • 我的“安装程序”应用程序作为系统应用程序安装。 (手动将其复制到/ system / app)
  • 我已经使用platform key签署了安装程序apk,并且在Manifest中有android:sharedUserId="android.uid.system"
  • 我一直在为Runtime.getRuntime.exec("su")尝试(尝试,然后再尝试一些Runtime.getRuntime.exec("su") 。 我打算将系统分区安装为rw ,为apk安装一个cat ,然后进行系统分区ro 。 以下是命令列表:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br>
    cat /sdcard/application.apk > /system/app/application.apk<br>
    mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
    
  • 我已申请清单中的INSTALL_PACKAGES权限。
  • 我尝试了一些exec(“”)格式的变体,包括在每个命令中使用'su -c' 。 我得到了“断管”异常和安全异常。 有时候,我没有发现异常,但文件没有被复制。


    请让我知道我在这里失踪。 有没有人得到这个工作?

    谢谢!


    我继续挖掘,这里是结果:

  • Android在su.c中有这个检查:[“android source的根目录”/system/extras/su/su.c]
  • /* Until we have something better, only root and the shell can use su.*/
    myuid = getuid();
    if (myuid != AID_ROOT && myuid != AID_SHELL) {
        fprintf(stderr,"su: uid %d not allowed to sun", myuid);
        return 1;
    }
    

    ChainsDD(超级用户)和氰基mod通过实现他们自己的su.c来解决这个问题:https://github.com/CyanogenMod/android_system_su/blob/master/su.c

  • /system/app什么特别之处? 这似乎是这样的事实,即该分区在非根设备上是只读的,防止修改/卸载应用程序。 https://android.stackexchange.com/questions/17871/what-are-the-differences-between-a-system-app-and-user-app

  • 使用平台密钥和sharedUserId = system签名的应用程序对我而言是“足够好”的,我没有必要将其复制到/ system / app。

  • 我现在接受这个答案。

    链接地址: http://www.djcxy.com/p/59575.html

    上一篇: Android : programmatically copying apk to /system/app

    下一篇: In Linux, simulate slow traffic incoming traffic to port e.g. 54000