Android 极速版的那些事
开篇废话
随着项目越来越大,为了下沉用户,让低端手机也能享受到我们App带来的服务,所以就衍生出了极速版,有些同学可能不知道极速版需要注意哪些事项,所以我就来总结一下,我遇到的问题,以及是如何解决的。
先讲结论
- Java 代码的包名和 applicationId 不相干。
- 极速版可以直接使用 applicationIdSuffix 。
- AndroidManifest.xml 中写的 package 标签只是为了在 AndroidManifest.xml 使用。
- 需要注意两个项目的 ContentProvider 的 authorities 不可相同。
Java包名&applicationId
首先说明,Java 层的包名和 applicationId 之间互不相干,安装包和填写到第三方的包名使用的是 applicationId 。
applicationId
使用applicationIdSuffix
有不同包名软件也可以直接添加 applicationIdSuffix 添加后缀,基本不需要修改其它地方。
applicationidSuffix
然后构建的 application 包为就会是com.example.myapplication.jisuban
。
AndroidManifest中的package
这时候,可能就会有小伙伴疑问了,那我们在 AndroidManifest 中填写的的 package 是什么作用呢?
package
在默认 text 的情况下,AndroidManifest 中的 package 还是原来的com.example.myapplication
然后而且 package 是为了方便 activity 标签的使用。
在 Merged Manifest 下为com.example.myapplication.MainActivity
。
ContentProvider的authorities
还要注意的一点是两个项目的 ContentProvider 的 authorities 不可相同。
如果相同了会发生什么呢?
安装冲突
怎么解决呢?就是将极速版中与主版中相同的 ContentProvider 的 authorities 进行更改。这里就不上图了,简单说明一下,为什么 ContentProvider 的 authorities 不能相同呢?
因为 ContentProvider 中 authorities 就是为内容提供者指定一个唯一的标识,这样别的应用才可以唯一获取此 Provider ,同时 App 中自己的 ContentProvider 中 authorities 也不能和 Android 系统的 authorities 一致。
结束小语
如果其它同学还在开发极速版中遇到了什么奇葩事,也可以给我留言,我添加在文中,方便给有需要的同学踩坑。