关于Android app正式版本和测试版本的切换
生活随笔
收集整理的這篇文章主要介紹了
关于Android app正式版本和测试版本的切换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? 前段時間發版app出現了問題,app上的服務器鏈接竟然是測試服務器的鏈接,這讓我很尷尬。
? ? ? ? 因為每次正式和測試服務器的切換都是手動替換的,所以才會出現這種問題,然后我就在想能不能根據release和debug來進行切換正式和測試的服務器鏈接。最后研究出結果,在這里記錄。
?
正式和測試的代碼是在build.gradle中實現的。
?
def Base_Url = "\"http://正式服務器/\"" //斜杠必須得加,為了讓java代碼識別這是String類型 def CBase_Url = "\"http://測試服務器/\"" def Base_UM = "baidu" android { //中間省略若干代碼buildTypes {release {//混淆minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//密鑰直接run生效signingConfig signingConfigs.release//正式,其中“BASE_URL”為Java中引用的字段buildConfigField "String", "BASE_URL", Base_Url//友盟來源設置,如果你接了友盟manifestPlaceholders = [umeng_app_key: Base_UM]}debug {//混淆minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//密鑰直接run生效signingConfig signingConfigs.release//測試buildConfigField "String", "BASE_URL", CBase_UrlmanifestPlaceholders = [umeng_app_key: "ceshi"]}}//自動生成指定名稱的release發布版的 apk文件android.applicationVariants.all { variant ->def appNameif(variant.buildType.name.equals('release')){//在正式模式下,再根據服務器鏈接來判斷是否為正式服務器if(Base_Url.contains("api")){if(Base_UM.equals("guanwang")){appName = "NameV"+defaultConfig.versionName}else{appName = "Name-"+Base_UM+"V"+defaultConfig.versionName}}else if(Base_Url.contains("sixsix")){appName = "測試_V"+defaultConfig.versionName}else {appName = "未知_V"+defaultConfig.versionName}} else {appName = "測試"} // if(variant.buildType.name.equals('release')){ // } else { // }variant.outputs.all { output ->outputFileName = "${appName}.apk"}} }在java中引用BASE_URL:
String BASE_URL = BuildConfig.BASE_URL;
在AndroidManifest.xml中引用友盟來源
<meta-data android:value="${umeng_app_key}" android:name="UMENG_CHANNEL"/>最后的那個自動生成apk,是為了更加方便。因為要生成不同來源的apk進行上傳,為了不用每次生成改名字,直接這么生成名字。
總結
以上是生活随笔為你收集整理的关于Android app正式版本和测试版本的切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深信服上网行为管理系统如何配置短信?
- 下一篇: Android 滚动字幕实现