今天要說的不是多渠道打包問題。
我們先來看這么一個場景,你有沒有在要發(fā)布版本的時候,代碼寫完后,剛把apk打包好,突然想起來,我艸,使用的是內(nèi)網(wǎng)開發(fā)環(huán)境,這樣,你又不得不重新改域名,改一些必要的配置,然后又重新打包,這樣是不是很頭疼的事情。或者說,你們公司是做產(chǎn)品的,但是由于公司市場需求,需要一個和你現(xiàn)在開發(fā)的產(chǎn)品差不多的,但是就是應(yīng)用圖標(biāo)和名稱不同的app,先給客戶看看。這樣,你是不是又的新建一個項目,把你公司的產(chǎn)品代碼copy過去,然后,修改圖標(biāo),修改名稱...如果是這樣,那簡直了是low爆了。下面,我要說的就是在同一個工程當(dāng)中,建立多個版本,有的可以用來測試,有的可以用來發(fā)布,而他們的共同代碼是通用的,只是差異代碼放在各自的分支上。
首先你要在gridle文件中添加以下節(jié)點,internal 和dev 隨你取名,用來分表代表內(nèi)測版本和開發(fā)版本的各自的差異代碼聲明:
android {
...
productFlavors {
internal {
// applicationId "com.dingfang.org.internal"
ndk {
abiFilters "armeabi-v7a"
abiFilters "x86"
abiFilters "armeabi"
}
}
dev {
// applicationId "com.dingfang.org.dev"
ndk {
abiFilters "armeabi-v7a"
abiFilters "x86"
abiFilters "armeabi"
abiFilters "arm64-v8a"
abiFilters "x86_64"
}
}
}
}
然后建立如下的代碼結(jié)構(gòu):
在dev和internal下,如果差異的是java代碼,那么包名必須得和main下的一樣。如果是res資源文件,那么創(chuàng)建的也必須是相同目錄結(jié)構(gòu)下的文件。需要注意的是,dev和internal的文件,不能和main下的文件重名,資源文件名也是同理。
詳情可以參考:如何使用Gradle構(gòu)建不同版本的app?