8

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

补充: - 1. 为什么android 中看不到我的应用程序'/system/app'?- 2. 为什么重启虚拟设备后我的应用消失了'/system/app'

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

4

4 回答 4

4

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

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

为了在您的 Android 设备上安装应用程序作为系统应用程序,您的设备必须是 root 或安装了自定义恢复(或两者都安装)。通常几乎每个安装了自定义恢复的人都使用有根 ROM,所以我们将只使用有根手机的方法。转到下面的教程。它可能会对您有所帮助。

使您的应用成为系统应用

于 2013-01-10T11:44:53.253 回答
1

您不能将您的应用程序默认设置为系统应用程序。不过,还有其他一些方法可以让您将其他普通应用程序作为系统应用程序在rooted phones.

您可以通过以下步骤将 APK 安装到 /system/app。

  1. 将 APK 推送到 SD 卡。

    $ adb push SecureSetting.apk /sdcard/

  2. 进入控制台获取shell

    $ adb shell

  3. 切换到超级用户。如果您的设备未植根,请先将其植根。(如果您不知道该怎么做,只需谷歌。)

    $ su

  4. 使用 WRITE 权限重新挂载系统分区。

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

  5. 将您的 APK 从 /sdcard/ 转移到 /system/ ,由于不支持 cp,有些人使用 cp 命令失败。所以用 cat 代替。

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

  6. Remout /system 分区回到只读状态,然后退出

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

然后重新启动您的设备,APK 应该已经安装在 /system/app 上。如此处所述。

于 2013-01-10T11:43:06.577 回答
0

您不能在模拟器上将应用程序制作为系统应用程序。但是您可以在设备上将应用程序制作为系统应用程序。为此,您需要在您的电脑上设置 git repo,并在设置 repo 后,复制应用程序repo文件夹/packages/apps中的文件夹并放入编译。您将在repo的out文件夹中获得system.img。然后您可以将system.img刷到sd卡上,这样您就可以将您的应用程序作为系统应用程序.这是将应用程序作为系统应用程序的唯一方法。

于 2013-01-10T11:50:34.983 回答
0

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

使用 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)
于 2017-06-07T12:22:47.563 回答