如何制作我的应用系统

时间:2013-01-10 11:17:16

标签: java android

我需要创建我的应用程序作为系统,因为我需要获得权限android.permission.WRITE_SECURE_SETTINGS。 安装到虚拟设备(Eclipse)后,我的应用程序显示在'/data/app'中。我尝试手动将他移至'/system/app',设置权限644,但是当我启动我的应用时 - 敬酒'App isn't installed'。重启后(关闭虚拟设备并重启),我的应用程序从'/system/app'消失。

添加: - 1.为什么android无法在'/system/app'中看到我的应用程序? - 2.为什么重启虚拟设备后我的应用程序从'/system/app'消失了?

在Eclipse Emulator和真实设备上制作我的应用系统的最佳方法是什么?

4 个答案:

答案 0 :(得分:3)

Android设备上安装的应用可根据其安装位置大致分为系统应用或用户应用。用户应用程序只是通过Google Play商店,Amazon Appstore或侧载的常规应用安装。这些进入Android手机的/ data分区,这是内部存储器的一部分,可用于用户数据和应用程序。

系统应用程序基本上是预先安装了ROM的应用程序。在标准的Android用户环境中,用户没有对/ system分区的写入权限,因此无法直接安装或卸载系统应用程序。这个过程并不像听起来那么难。然而,有一个问题。

要在Android设备上将应用程序安装为系统应用程序,您的设备必须已植根,或者已安装自定义恢复(或两者都有)。通常,每个安装了自定义恢复的人都使用root用户ROM,因此我们只会使用root用户手机的方法。 转到下面的tutorial.it可能会帮助你。

Make Your app System App

答案 1 :(得分:1)

默认情况下,您无法将应用设为系统应用。除了rooted phones之外,您还可以使用其他一些方法将其他常规应用作为系统应用。

您可以使用以下步骤将APK安装到/ system / app。

  1. 将APK推送到SD卡。

    $ adb push SecureSetting.apk /sdcard/

  2. 进入控制台并获取shell

    $ adb shell

  3. 切换到超级用户。如果您的设备未植根,请先将其设置为root。 (如果你不知道如何做到这一点,那就是谷歌。)

    $ su

  4. 使用WRITE权限重新安装系统分区。

    $ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

  5. 将你的APK从/ sdcard /发送到/ system /,由于不支持cp,有些人因cp命令而失败。所以请改用猫。

    $ cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk

  6. 将Remout /系统分区返回READ-ONLY,然后退出

    $ mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
    $ exit

  7. 然后重新启动设备,APK应该已安装在/ system / app上。 如上所述here

答案 2 :(得分:0)

您无法在模拟器上将应用程序设置为系统应用程序。但是您可以在设备上将应用程序设置为系统应用程序。为此,您需要在PC上设置git repo,并在设置回购后,复制 repo文件夹/ p​​ackages / apps 中的app文件夹并将其放入compile.and你将在repo的文件夹中获取system.img然后你可以在sd卡上刷制system.img,这样您将把您的应用程序作为系统应用程序。这是将应用程序制作为系统应用程序的唯一方法。

答案 3 :(得分:0)

如果设备未植根,则无法将任何内容复制到系统或数据分区。

使用root在命令提示符或linux shell中执行以下命令,所有这些都应该没问题:

adb push fileName /data/local/tmp
adb shell
su
mount -o remount, rw /system
cp /data/local/tmp/fileName /system/folderOfYourChoise
chmod 644 (if its an apk and you want the system to use it as a system app)
exit (exits the su shell)
exit (exits the adb shell)
adb reboot (to apply and see changes on the device)