我在android 2.3的基础上修改了联系人应用程序代码,编译成Contacts.apk,然后我把它推到system/app/,但是联系人应用程序在启动器中消失了,然后我重新安装它,我得到了INSTALL_FAILED_SHARED_USER_INCOMPATIBLE ,如何调试?
最佳答案
Andoid 为您安装的包创建“共享用户”。有时,这些共享用户的管理会变得一团糟,您会:
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
共享用户管理保存在/data/system/packages.xml
中:
如何解决?你需要一个 root 手机和 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 进行签名。但通常无法从手机制造商处获得该证书。
在这种情况下,您可以尝试打开 list 文件并找到:
android:sharedUserId="some_string"
并用不同的东西改变它。重建 apk,清除 packages.xml,重新启动并再次安装。
关于android - 如何重新安装 android 联系人应用程序以替换原来的应用程序进行调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563770/