android - 如何重新安装 android 联系人应用程序以替换原来的应用程序进行调试?

标签 android android-contacts

我在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/

相关文章:

java - Picasso 加载 PHOTO_THUMBNAIL_URI 但不加载 PHOTO_URI

android - 未调用自定义 ArrayAdapter 的 getView

Android DOMparser 无法获取子节点?

android - 改造缓存数据以供离线使用

android - 从 Android 联系人中获取联系人姓名和姓氏

android - 如何使用联系人的 lookup_key 删除联系人

java - 如何在android中搜索字符串数组?

java - 以编程方式向 EditText 添加引力

android - 在 Android Contact Content Provider 中显示联系人的电话号码

android - 通过不在 android 游标中工作来排序