爲了方便開發,都會有不同的網絡環境
android 開發中我們在項目上線前都需要結果大量的測試,爲了方便不同環境的測試,我們需要打不同網絡環境的apk
今天給大家分享下一個項目打三種apk,這三種apk可以在手機上並行安裝,不會出現覆蓋
主要利用build.gradle 的productFlavors
下面直接上代碼 這些代碼都是在build.gradle文件裏android目錄下的
flavorDimensions "color" productFlavors { productrRelease { applicationId "com.example.lishuai.productflavorsapk" resValue "string", "app_name", "FlavorsApk" buildConfigField 'int', 'SDK_APPID', '123' buildConfigField 'String', 'URL_HTTP', '"www.baidu.com"' manifestPlaceholders = [ JPUSH_PKGNAME: applicationId, JPUSH_APPKEY : "3cd6db0f0d84ef85f6a38ed3", JPUSH_CHANNEL: "developer-default", _AMAP_KEY : "63622f57b1ed9b3b9a11e4707422cbc7", _UMENG_KEY : "5ad446b3f29d98062d00007d", ] dimension "color" }
productrDebug { applicationId "com.example.lishuai.productflavorsapk.debug" resValue "string", "app_name", "FlavorsDebug" buildConfigField 'int', 'SDK_APPID', '567' buildConfigField 'String', 'URL_HTTP', '"www.mi.com"' manifestPlaceholders = [ JPUSH_PKGNAME: applicationId, JPUSH_APPKEY : "3cd6db0f0d84ef85f6a38ed3", JPUSH_CHANNEL: "developer-default", _AMAP_KEY : "63622f57b1ed9b3b9a11e4707422cbc7", _UMENG_KEY : "5ad446b3f29d98062d00007d", ] dimension "color" } }
添加後編譯會報錯,這時候我們還需要添加些東西
在build.gradle文件裏defaultConfig目錄下添加 multiDexEnabled true
這時候我們本來是可以開始打包的,但是我們爲了區分不同的apk的環境,我們可以把applicationId 的對應包名改了
app_name 對應AndroidManifest裏面Application的lable的內容,app_name的字段不要在strings.xml文件裏面出現
在productrRelease節點下有一個int類型的數據和String的數據(String的後面所根的值格式必須是'"sss"'這樣的)
我們想要用這兩個根據打包類型變更的數據的話,可以這樣引用 BuildConfig.URL_HTTP
通過上面的簡單配置我們就可以在一套代碼裏生成多種環境的app