两个具有相同用户ID的Android应用程序

SBK*_*SBK 14 android

来自 http://developer.android.com/guide/topics/fundamentals.html:

可以安排两个应用程序共享相同的Linux用户ID,在这种情况下,他们可以访问彼此的文件.为了节省系统资源,具有相同用户ID的应用程序也可以安排在同一个Linux进程中运行并共享同一个VM(应用程序也必须使用相同的证书进行签名).

我们如何为两个应用程序实现相同的用户ID?任何例子?

Fem*_*emi 25

您可以通过将AndroidManifest.xml文件中的sharedUserLabeland 设置sharedUserId为相同的值来完成此操作.例如,如果我有以下2个清单文件(我只包括开头):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:sharedUserLabel="@string/label_shared_user" 
      android:sharedUserId="com.example" 
      package="com.example.package1" 
      android:versionName="2.0.0" 
      android:versionCode="2">
Run Code Online (Sandbox Code Playgroud)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:sharedUserLabel="@string/label_shared_user" 
      android:sharedUserId="com.example" 
      package="com.example.package2" 
      android:versionName="1.0.0" 
      android:versionCode="1">
Run Code Online (Sandbox Code Playgroud)

然后他们将共享同一个用户.

  • 但是我强烈反对这样做.绝大多数应用都不应该这样做; 它仅适用于特殊情况.使用这会导致行为中的许多细微差别(例如,所有共享相同权限的应用程序),大多数开发人员不应该自己造成这种差异. (6认同)
  • 一个重要的补充是您只能安装两个具有相同shareduserid的应用程序,因为这两个应用程序都使用了相同的证书签名 (2认同)