我正在构建一个将作为系统应用程序捆绑在 android 设备上的应用程序。制造商是向我们提供设备的出路,因此同时我想在模拟器中授予我的应用系统级权限,以便我可以开发自动更新功能,无需任何交互即可静默安装 APK来自用户。根据我的阅读,我的理解是,能够在 android 上进行静默安装的唯一方法是,如果您的应用使用与操作系统相同的证书进行签名。那么如何在模拟器中模拟呢?
问问题
14570 次
2 回答
31
如果你想要一个signatureOrSystem权限,你只需要放在系统镜像上即可;您不需要使用任何特殊证书进行签名。您可以一次性执行此操作(直到您退出模拟器),如下所示:
> adb root
> adb remount
> adb push /path/to/My.apk /system/app/My.apk
完成此操作后,您可以使用正常流程在数据分区上安装更多更新(“adb install -r /path/to/My.apk”,这是您从 Eclipse 运行时开发人员工具所做的)。以这种方式安装时,应用程序保留了它在系统映像上从原始版本请求的任何签名或系统权限,但无法获得任何新的此类权限。
如果您需要纯签名权限,则需要使用与声明这些权限的任何证书相同的证书对您的应用程序进行签名(通常是核心框架,但媒体系统是单独的证书等)。如果您正在请求签名权限,您不需要安装在系统映像上,您可以将其作为普通应用程序安装,并且由于签名,它仍然可以获得权限。
于 2012-03-10T09:07:43.660 回答
2
据我所知,您需要:
- 下载 Android 源代码并构建模拟器固件映像。
- 使用 Android 源代码树中的密钥为您的应用程序签名
/build/target/product/security/
。 - 添加
android:sharedUserId="android.uid.system"
到应用程序的清单中。 - 使用步骤 1 中构建的映像在模拟器上运行您的应用程序。
必须构建自己的固件映像的原因是您可以获得密钥。现在,标准模拟器映像的密钥可能在某处可用,这将为您节省构建自己的 Android 的漫长而极其乏味的过程,但恐怕我不知道这些可能在哪里。
免责声明:我自己从未尝试过。
于 2012-03-04T10:42:15.453 回答