Android Studio —— 多服務端介面地址打包技巧
阿新 • • 發佈:2019-02-09
Android開發中必不可少的就是向服務端請求資料,服務端小夥伴就會給你一個URL(http://192.168.1.194:8080)這樣
你就可以愉快的進行開發;但是隨著app的開發然後又多了外網測試地址、正式地址等等….
所以這篇文章就來說說,如何優雅的管理專案中各種介面地址
我這裡使用的是Retrofit2進行網路請求,需要定義一個BASE_URL供Retrofit進行初始化;當地址多了就會出現下面這種情況:
public interface ApiService {
/**
* 內網
*/
// String BASE_URL = "http://192.168.1.161:8191/openapi/";
// String BASE_URL = "http://192.168.1.42:8080/openapi/";
/**
* 外網
*/
String BASE_URL = "http://119.147.139.149:8191/openapi/";
// ......
}
現在我們就可以通過gradle來進行優化
在編譯專案的時候系統會為我們生成一個BuildConfig.java
類,該類位於ProjectName\app\build\generated\source\buildConfig\buildTypes\packageName\
下;(buildTypes就是當前的打包型別)
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.azhon.test";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "" ;
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}
這個檔案生成了一些應用的資訊:應用包名、當前打包型別、版本資訊等….
- 通過build.gradle根據不同的打包型別生成我們的BASE_URL屬性和值,如下:
android {
// 測試介面地址
def DEBUG_BASE_URL = "\"http://192.168.1.161:8191/openapi/\""
// 正式介面地址
def RELEASE_BASE_URL = "\"http://119.147.139.149:8191/openapi/\""
// 其它介面地址
def OTHER_BASE_URL = "\"http://119.147.129.149:8191/openapi/\""
signingConfigs {
config {
// .....
}
}
defaultConfig {
//....
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
// 定義生成在 BuildConfig.java 類中的屬性
buildConfigField("String", "BASE_URL", "${RELEASE_BASE_URL}")
}
debug {
signingConfig signingConfigs.config
buildConfigField("String", "BASE_URL", "${DEBUG_BASE_URL}")
}
//自定義打包型別時 好像必須指定簽名
beta {
signingConfig signingConfigs.config
buildConfigField("String", "BASE_URL", "${OTHER_BASE_URL}")
//(當依賴了其他module時)自定義打包型別需要加上下面這行程式碼
matchingFallbacks = ['debug']
}
}
- 然後再來修改之前在
ApiService
中定義的URL
public interface ApiService {
//直接獲取 BuildConfig中生成的BASE_URL
String BASE_URL = BuildConfig.BASE_URL;
//....
}
這樣當我們通過Build-->Generate Signed APK
選單打包時就可以選擇對應的打包版本了
當我們直接點選執行按鈕進行安裝的時候預設打包的是debug版本,那如果想除錯其他版本的地址怎麼辦呢?
- 解決辦法當然是有的了,進入Build Variants面板進行打包型別選擇這樣執行出來的apk就是你選擇的對應版本了: