[英]Android Studio: Switching a URL depending on buildtype? (used for testing in debug /release)
我一直在閱讀有關變體和構建類型的內容,我不知道我是否理解正確,但我想存儲一個用於 locahost(測試)和一個用於生產(互聯網上的實時站點)的 URL。
我需要根據構建類型來切換它們。 這是正確的方法嗎? 還是有另一種選擇?
有沒有人有一個小例子?
有沒有辦法將這些信息存儲在我不需要提交到源代碼控制的文件中? 我正在使用 gradle.properties 文件來存儲一些 gradle 用於簽名的密碼。這很好用,因為我沒有在版本控制中共享這個文件。
我對正確的使用方法以及如何實現它有點困惑。
有任何想法嗎?
您可以使用 BuildConfig 為每個 BuildType 提供不同的 URL
buildTypes {
debug {
buildConfigField "String", "SERVER_URL", '"http://someurl/"'
}
release{
buildConfigField "String", "SERVER_URL", '"http://someotherurl/"'
}
}
每次將項目與 gradle 文件同步時,都會自動生成 BuildConfig。 在您的代碼中,您可以像這樣訪問 URL:
BuildConfig.SERVER_URL
如果您不想提交這些 URL,您可以將它們存儲在您的 gradle.properties 中,就像您的密碼等,並在 build.gradle 中引用它們。
buildConfigField "String", "SERVER_URL", serverurl.debug
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", "BASE_URL", '"url1"'
debuggable false
}
debug {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", "BASE_URL", '"url2"'
debuggable true
}
您需要在 gradle 中執行此操作,並在同一部手機中運行兩個應用程序(發布和調試),只需添加
applicationIdSuffix ".debug"
在調試部分。 因為包名會有所不同。 這對我有用。
我正在與圖像共享該過程,因為我們需要在buildTypes
添加 API URL 時特別注意 java 的轉義序列,否則 URL 將無法在BuildConfig
正確生成並產生Cannot resolve ...
錯誤,如下圖所示 -
所以正確的解決方案是添加遵循轉義序列的 URL,如下圖所示 -
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.