開(kāi)篇廢話(huà)
隨著項(xiàng)目越來(lái)越大税迷,為了下沉用戶(hù)永丝,讓低端手機(jī)也能享受到我們App帶來(lái)的服務(wù),所以就衍生出了極速版箭养,有些同學(xué)可能不知道極速版需要注意哪些事項(xiàng)慕嚷,所以我就來(lái)總結(jié)一下,我遇到的問(wèn)題毕泌,以及是如何解決的喝检。
先講結(jié)論
- Java 代碼的包名和 applicationId 不相干。
- 極速版可以直接使用 applicationIdSuffix 撼泛。
- AndroidManifest.xml 中寫(xiě)的 package 標(biāo)簽只是為了在 AndroidManifest.xml 使用挠说。
- 需要注意兩個(gè)項(xiàng)目的 ContentProvider 的 authorities 不可相同。
Java包名&applicationId
首先說(shuō)明愿题,Java 層的包名和 applicationId 之間互不相干损俭,安裝包和填寫(xiě)到第三方的包名使用的是 applicationId 。
使用applicationIdSuffix
有不同包名軟件也可以直接添加 applicationIdSuffix 添加后綴潘酗,基本不需要修改其它地方杆兵。
然后構(gòu)建的 application 包為就會(huì)是com.example.myapplication.jisuban
。
AndroidManifest中的package
這時(shí)候仔夺,可能就會(huì)有小伙伴疑問(wèn)了琐脏,那我們?cè)?AndroidManifest 中填寫(xiě)的的 package 是什么作用呢?
在默認(rèn) text 的情況下缸兔,AndroidManifest 中的 package 還是原來(lái)的com.example.myapplication
然而 package 是為了方便 activity 標(biāo)簽的使用日裙。
在 Merged Manifest 下為com.example.myapplication.MainActivity
。
ContentProvider的authorities
還要注意的一點(diǎn)是兩個(gè)項(xiàng)目的 ContentProvider 的 authorities 不可相同灶体。
如果相同了會(huì)發(fā)生什么呢阅签?
怎么解決呢?就是將極速版中與主版中相同的 ContentProvider 的 authorities 進(jìn)行更改蝎抽。這里就不上圖了政钟,簡(jiǎn)單說(shuō)明一下路克,為什么 ContentProvider 的 authorities 不能相同呢?
因?yàn)?ContentProvider 中 authorities 就是為內(nèi)容提供者指定一個(gè)唯一的標(biāo)識(shí)养交,這樣別的應(yīng)用才可以唯一獲取此 Provider 精算,同時(shí) App 中自己的 ContentProvider 中 authorities 也不能和 Android 系統(tǒng)的 authorities 一致。
結(jié)束小語(yǔ)
如果其它同學(xué)還在開(kāi)發(fā)極速版中遇到了什么奇葩事碎连,也可以給我留言灰羽,我添加在文中,方便給有需要的同學(xué)踩坑鱼辙。