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

19

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

两个应用程序可以使用相同的Linux用户ID,这样它们就可以访问彼此的文件。为了节省系统资源,使用相同用户ID的应用程序还可以安排在同一个Linux进程中运行并共享同一个虚拟机(这些应用程序还必须使用相同的证书进行签名)。

我们如何实现两个应用程序具有相同的用户ID? 有任何示例吗?

1个回答

29

您可以通过在AndroidManifest.xml文件中将sharedUserIdsharedUserLabel设置为相同的值来实现此操作。例如,如果我有以下两个清单文件(我只包括开头部分):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.package1" 
      android:sharedUserId="userId"
      android:sharedUserLabel="@string/label_shared_user" 
      android:versionCode="1" 
      android:versionName="1.0.0">

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.package2" 
      android:sharedUserId="userId"
      android:sharedUserLabel="@string/label_shared_user" 
      android:versionCode="1" 
      android:versionName="1.0.0">

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


7
然而,我强烈不建议这样做。绝大多数应用程序都不应该这样做;这只适用于特殊情况。使用这种方法会导致许多微妙的行为差异(例如所有应用程序共享相同的权限),大多数开发人员不应该在自己身上施加这种影响。 - hackbod
太好了!但是是否有一种方法可以从第三方应用程序获取具有相同shareUserId的应用程序。我的意思是,我希望检测到具有相同sharedUserId的2个应用程序。 - AbhishekB
请查看http://developer.android.com/reference/android/content/pm/ApplicationInfo.html:uid对于两个应用程序将是相同的。 - Femi
3
一个重要的补充是,只有在两个应用程序都使用相同的证书签名时,您才能安装具有相同shareduserid的两个应用程序。 - Zar E Ahmer
“这只适用于特殊情况。” 你能举些例子吗? - Mehdi Charife

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接