android flavor在開發(fā)中的應(yīng)用

今天要說的不是多渠道打包問題。
我們先來看這么一個場景,你有沒有在要發(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?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容