发新帖

解决修改“package”属性制作共存时,不能安装的问题

[复制链接]
38812 30
本帖最后由 水波摇曳 于 2015-2-10 10:19 编辑

我想大家都应该看过天哥那篇99%成功制作Apk共存的视频,方式就是:
修改 AndroidManifest.xml 中的“package”属性,
这样就可以保证安装后的 /data/data/文件的包名不一致,也就能到达共存的目的,但是相对于大的应用,也就是1%就可能
会出现:当你已经安装原包时,自己修改的包却安装不上的情况。曾纠结过很长时间,只简单的知道是因为安装数据文件的问题,
但一直未很明了的解决,前几天看了一个帖子,恍然大悟

12年的帖子 我都堡垒+惭愧了..
帖子有点长 摘抄重要的部分:
2、修改AndroidManifest.xml中的包名,
     将package后面的包名com.tencent.qbx改为你想要的新包名,我改为了com.tianxiao.tencentweb
     将涉及原包名的com.tencent.qbx的相关activity的声明中的包名均改为新包名com.tianxiao.tencentweb
至于intent-filter里面的action名中包含原包名的,则可以不改,如果改的话,代码中也要相应的改变
     另外,如果有provider,provider的authorities也得改,这个在同一手机上必须唯一,否则安装会失败

3、在E:\apkTool\qq4\smali目录下,有很多子目录,子目录下的文件多以smali结尾,这中文件的语法有点类似于汇编语言,具体原理就不深究了。
将smali目录下的所有文件中的原包名的声明形式com/tencent/qbx改为新包名com/tianxiao/tencentweb
具体如下,用UEdit在文件中替换即可,将目标目录指向E:\apkTool\qq4\smali,这个将近1000条左右
     如果之前改为action里面的包名,也要将字符串形式的包名com.tencent.qbx改为com.tianxiao.tencentweb
     如果有provider也要讲原来的authorities值改为在AndroidManifest.xml中新改的authorities值。

如果安装失败,报错的信息是:
出错信息如下: Can't install because provider name qbx_bookmarks (in package com.tianxiao.tencentweb) is already used by com.tencent.qbx

原因是:
主要是忘了 provider的authorities的处理,

至于他说的 provider的authorities 值,下面的评论中已经说明了:
provider的authorities如同网站的域名,多个应用间不能相同,不修改就会报错,试试就知道。 。。

有人还贴出了一段代码:
[XML] 纯文本查看 复制代码
<provider android:name="com.amazon.kindle.contentprovider.ExternalQueryRouter" android:permission="com.amazon.CONTENT_PROVIDER_ACCESS" android:exported="true" android:authorities="com.amazon.kindle.bookmetadataprovider" android:syncable="false" />
        <provider android:name="com.amazon.kcp.content.KindleDownloadProvider" android:permission="com.amazon.CONTENT_PROVIDER_ACCESS" android:exported="true" android:authorities="com.amazon.kindle.downloadprogressprovider" android:syncable="false" />
        <provider android:name="com.amazon.kcp.search.SearchProvider" android:exported="false" android:authorities="kindle" android:syncable="false" />
        <provider android:name="com.amazon.kcp.search.ReaderSearchProvider" android:exported="false" android:authorities="kindlereader" android:syncable="false" />


所以以后制作共存时,如果出现安装不上的问题,那还是老实全局修改关键词吧..
具体步骤我博客里有..

希望懂得编程的童鞋好好解释下 provider的authorities的属性哈 求明确下..

同样隐藏几天..
支持论坛




举报 使用道具

回复

精彩评论31

kanon    发表于 2015-2-7 18:11:25 | 显示全部楼层
恩恩 多谢分享 3q

举报 使用道具

回复 支持 反对
花墨    发表于 2015-2-7 18:12:13 | 显示全部楼层
收藏,回家看

举报 使用道具

回复 支持 反对
永恒丶    发表于 2015-2-7 18:14:21 来自手机  | 显示全部楼层
顶!!!

举报 使用道具

回复
烈火    发表于 2015-2-7 18:14:46 | 显示全部楼层
Good! 从未做过共存,说不定下次就用上

举报 使用道具

回复 支持 反对
默小坑    发表于 2015-2-7 18:15:38 | 显示全部楼层
学习了。。

举报 使用道具

回复
海鸥    发表于 2015-2-7 18:18:36 来自手机  | 显示全部楼层
跟着大神学习

举报 使用道具

回复 支持 反对
dayeve    发表于 2015-2-7 18:21:52 | 显示全部楼层
2个包里不能有一样provider 是无法安装的
authorities属性是 provider所在的包名+provider的名称

举报 使用道具

回复 支持 反对
dayeve    发表于 2015-2-7 18:23:10 | 显示全部楼层
果然预料之内 你安装不上是因为provider 问题

点评

楼主你这么给力你爸妈知道吗?: 5.0 啥也不说了,顶楼主!: 5.0
楼主你这么给力你爸妈知道吗?: 5 啥也不说了,顶楼主!: 5
你为啥啥都知道... 我会的你都会,..我不懂你还懂,醉了..  发表于 2015-2-7 19:37

举报 使用道具

回复 支持 反对
guangz    发表于 2015-2-7 20:12:48 | 显示全部楼层
恍然大悟

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表