我修改了基于android 2.3的联系人应用程序代码,并编译为Contacts.apk,然后将其推送到system/app/,但联系人应用程序在Launcher中消失了,然后我重新安装它,我得到了INSTALL_FAILED_SHARED_USER_INCOMPATIBLE,如何调试?
问问题
5251 次
1 回答
1
Andoid 为您安装的软件包创建“共享用户”。有时这些共享用户的管理会变得混乱,你会得到:
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
共享用户管理保存在/data/system/packages.xml
:
怎么解决?您需要有根电话和 adb:
adb shell su -c "chmod 666 /data/system/packages.xml"
adb pull /data/system/packages.xml
现在获取文件的备份副本,然后编辑文件并从文件中删除共享用户:
<shared-user name="com.your.target.app" userId="10000">
<sigs count="1">
<cert index="4" />
</sigs>
<perms>
<item name="android.permission.READ_PHONE_STATE" />
<item name="android.permission.DISABLE_KEYGUARD" />
<item name="android.permission.INTERNET" />
<item name="android.permission.WRITE_EXTERNAL_STORAGE" />
<item name="android.permission.ACCESS_FINE_LOCATION" />
<item name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<item name="android.permission.ACCESS_COARSE_LOCATION" />
<item name="android.permission.READ_CONTACTS" />
<item name="android.permission.WRITE_CONTACTS" />
<item name="android.permission.ACCESS_NETWORK_STATE" />
<item name="android.permission.WAKE_LOCK" />
<item name="android.permission.MODIFY_AUDIO_SETTINGS" />
</perms>
</shared-user>
然后将修改后的文件复制回来:
adb push packages.xml /data/system/packages.xml
adb shell rm /data/dalvik-cache/*
adb shell su -c reboot
编辑
另一件事是,如果它具有共享用户 ID,您需要使用与其他已安装应用程序相同的证书对 apk 进行签名。但通常不可能从手机制造商处获得该证书。
在这种情况下,您可以尝试打开清单文件并找到:
android:sharedUserId="some_string"
并用不同的东西改变它。重建apk,清理packages.xml,重新启动并再次安装。
于 2012-07-19T15:12:48.803 回答