Android 4.4的奇巧 - SharedPreferences返回INSTALL_FAILE

2019-10-20 10:30发布

我已经工作了一段时间,现在的定位最低的4.0 ICS的项目。 最近,我得到了一个新的游戏版本,Moto G的是,正在运行的所有更新之后,搭载4.4(KK)。 所以我决定我想尝试和部署它的程序,以及我有另外两个测试设备。

一切都进行得很顺利,直到我的程序到了一个地步,这是试图通过PreferenceManager.getDefaultSharedPreferences(上下文)来访问SharedPreference。 调试并通过每帧运行后,我能弄清楚,值实际上写入首选项文件(或者至少看起来是因为在SharedPreference对象可在地图容器中包含的值,我把那里以前)。 然而,当我试图与他们各自的密钥来读取任何值,我得到一个INSTALL_FAILED_SHARED_USER_INCOMPATIBLE值来代替,而这是造成我的程序崩溃(直接没有,但它造成的是需要从首正确的输出到失败程序功能)。 这只是发生在4.4到我的知识。

我已经冲刷净等对这个答案,我似乎无法找到任何解决我的问题。 我的表现不声明或sharedUserId所以sharedUserLabel我不认为这是导致该问题。 我已经卸载了好几次重新安装包无济于事。 我的印象是,用于SharedPreference XML文件被写入我明白这就是授予程序本身至少读/写访问(除非这是在4.4有什么改变)程序的本地目录。 而且它不会出现在外部源被存储该位置,因为Moto G品质中有没有SD卡。

有没有人有任何想法如何解决此问题? 目前的情况是,我的计划是不能够被部署在4.4设备,我真的想为不如此。

Answer 1:

一些侦探后,所以,我终于想通了,我的问题。 这是多次语无伦次SO职位的高潮,只是近毫无价值谷歌搜索一样多。

我的一些偏好需要他们写入到文件之前,显然自4.2 Android已经使用OpenSSL的为新的安全提供比传统加密一个进行加密。 因此,后花了几天的研究,我通过两个强制使用加密SP,更明确规定了加密和变换算法/模式/填充,以帮助不仅使块大小一致,但这样它更解决我的问题明确这是怎么回事,而不是让API确定哪些可能是最好的。 在这种情况下,即使执行加密后,将其仍然打破因此进一步挖入A / M / P。

所以,我最初的问题掩盖了实际的异常,这是超级好玩的明白这一点。



文章来源: Android 4.4 KitKat - SharedPreferences Returning INSTALL_FAILED_SHARED_USER_INCOMPATIBLE