对于我们应用程序的下一个版本,我想更改 sharedUserId,因为我们现在使用一个内部控制仪表板应用程序,该应用程序必须写入其他应用程序的设置文件。
但是由于该应用程序已经安装在许多手机上,这会是一个问题吗?我在模拟器上运行了一个小测试,我在设备日志中看到无法写入 *.bak 版本的首选项文件的异常。不确定这有多重要。奇怪的是,安全设置似乎仍然有效,即使 shared_prefs 文件夹是使用另一个 Linux 用户 ID 创建的。
以前有人试过吗?
对于我们应用程序的下一个版本,我想更改 sharedUserId,因为我们现在使用一个内部控制仪表板应用程序,该应用程序必须写入其他应用程序的设置文件。
但是由于该应用程序已经安装在许多手机上,这会是一个问题吗?我在模拟器上运行了一个小测试,我在设备日志中看到无法写入 *.bak 版本的首选项文件的异常。不确定这有多重要。奇怪的是,安全设置似乎仍然有效,即使 shared_prefs 文件夹是使用另一个 Linux 用户 ID 创建的。
以前有人试过吗?
并再次回答我自己的问题:
不,这不安全。由于通过 Android Market 更新应用程序不会删除数据库和偏好文件,因此新版本将无法读取或写入这些文件(因为它们是在不同的 Linux 用户 ID 下创建的),并且应用程序在更新后会崩溃. 您必须要求您的用户完全卸载并重新安装该应用程序,这当然不推荐。
作为一般规则,我由此得出结论:每当您开始开发新应用程序时,请务必设置手册android:process
和android:sharedUserId
属性!如果您不需要它并没有什么坏处,但它可以让您完全控制哪些应用程序可以访问此应用程序的私有资源。
目前还没有解决方案,但关注已注册的问题可能会让谷歌解决这个问题: