下一版本的应用程序中,我想更改sharedUserId,因为我们现在使用一个内部控制仪表板应用程序,该应用程序必须写入其他应用程序的设置文件。但由于该应用已经安装在许多手机上,这会成为问题吗?我在模拟器上进行了一些测试,并且在设备日志中看到了异常情况,即不能写入首选项文件的*.bak版本。不确定这有多重要。有趣的是,即使使用另一个Linux用户ID创建了shared_prefs文件夹,保存设置仍然似乎可以工作。是否有人尝试过这样做?
我再次回答自己的问题:
不安全。因为通过Android市场更新应用程序不会删除数据库和首选项文件,新版本将无法读取或写入这些文件(因为它们是在不同的Linux用户ID下创建的),并且应用程序将在更新后崩溃。你必须要求用户完全卸载并重新安装应用程序,这显然是不推荐的。
从这个总的规则来说,我得出结论:
每当你开始开发一个新应用程序时,请确保设置手动android:process
和android:sharedUserId
属性!如果你不需要它,它不会有任何影响,但它可以让你完全控制哪些应用程序可以访问该应用程序的私有资源。
android:process
(用户不友好)或android:sharedUserId
(无意义,存在更好地通过IPC和“signature”级别的权限来解决问题)。 - CommonsWare