因需求,需要對(duì)項(xiàng)目包名進(jìn)行更換(原來(lái)的包名太短),遂在網(wǎng)上收集一波,看了各種方法,結(jié)合對(duì)比后用了一個(gè)算是穩(wěn)妥的方法
如圖所示,點(diǎn)擊小齒輪,取消勾選Compact Middle Packages

取消勾選的效果如下

這里就可以在包名的每個(gè)層級(jí)使用重命名

選擇Rename后彈出提示框

選擇Rename current

修改后點(diǎn)擊Refactor應(yīng)用,當(dāng)前選擇的層級(jí)包名就改好了,包名后續(xù)的層級(jí)這樣改就行了,如遇到包名層級(jí)都,那就再對(duì)應(yīng)的層級(jí)下新建package,最后把代碼的所有包移到包名的最后一層里
這里修改完后,接著去AndroidManifest.xml修改<manifest .../>下的package的包名

繼續(xù)去app下的build.gradle下的applicationId,替換成新的包名
理論上這些修改完就可以Build->Clean Project->Make project
其實(shí)不然,這里知識(shí)修改了部分,代碼里R文件所在的包名還沒(méi)有更改,總不可能一個(gè)個(gè)去class文件下去修改
幸好Android studio有一鍵修改的方法

如圖,選擇自己的應(yīng)用所在的module,鼠標(biāo)右鍵后選擇Replace in Path
第一行的輸入原包名的R,第二行的輸入新的包名的R,然后點(diǎn)擊右下角的Replace All就好了

這樣編譯run就能運(yùn)行了
不過(guò)還有事情要注意,代碼混淆的問(wèn)題
一般對(duì)bean實(shí)體類(lèi)都會(huì)進(jìn)行混淆,所以在app下的proguard-rules.pro問(wèn)價(jià)下使用Ctrl+F對(duì)當(dāng)前文件進(jìn)行搜索,把原來(lái)的包名替換成新的包名,替換界面跟全局替換的界面差不多的,就不上圖了
入股有使用GreenDao,在app下的build.gradle也配置了greendao,也需要更改其包名
做完這些工作,可以算完成了!
寫(xiě)這篇文章的原因也是因?yàn)橹拔磳?duì)代碼混淆下的包名進(jìn)行替換,導(dǎo)致打包的apk運(yùn)行時(shí),post的實(shí)體類(lèi)參數(shù)被混淆,結(jié)果就請(qǐng)求失敗,找了一圈才發(fā)現(xiàn)是代碼混淆文件下沒(méi)有進(jìn)行修改
解決了問(wèn)題還是很高興的!經(jīng)驗(yàn)+1豈不美哉