Gradle ビルド システムを使用して 2 つまたは 3 つの異なるビルド (Android ビルド) を作成する必要があります。各ビルドは異なるサーバーと API キーを指していますか? 現在、これらのサーバー URL と API キーは Java ファイルにハードコーディングされています。デバッグ ビルドとリリース ビルドは適切にビルドできましたが、異なるサーバー URL と API キーのセットを使用して別のビルドを生成する必要がありますか?
前もって感謝します!
別のビルド タイプを作成し、そのビルド タイプに対して別のリソースを構成することで、要件を解決しました。たとえば、私の build.xml は次のようになります。
ビルドタイプ {
release {
signingConfig signingConfigs.release
runProguard true
proguardFile ('proguard-android-optimize-app.txt')
}
server1.initWith(buildTypes.debug)
server1 {
packageNameSuffix ".server1"
}
}
sourceSets {
main {
manifest.srcFile 'app/AndroidManifest.xml'
java.srcDirs = ['app/src']
resources.srcDirs = ['app/src']
renderscript.srcDirs = ['app/src']
res.srcDirs = ['app/res']
assets.srcDirs = ['app/assets']
}
server1 {
res.srcDirs = ['app/res/server1']
}
instrumentTest.setRoot('tests')
}
ご支援ありがとうございます!
(私が理解していれば)ビルドごとにバッチファイルを準備する外部実行可能ファイルを使用します。
.bat ファイルは、変数 (キーを含む) を渡す gradle を呼び出します。
gradle assemble -Pkey=%key%
これで、gradle スクリプト内で変数の値を取得できます。
def varKey = "$key"
これを使用して apk に署名できます。
signingConfigs {
release {
storeFile = file('../key.keystroke')
storePassword = varKey
keyAlias = "My key"
keyPassword = varKey
}
}
編集: OK、前のテキストは、異なるキーで apk ファイルに署名するのに役立ちます。
gradle を使用してサーバー URL を編集するには、最初に URL と API キーをリソース文字列に保存し、ハードコードされた文字列の代わりに Java クラス内から使用する必要があります。
<resources>
<string name="server_url">you.server.com</string>
<string name="api_key">your_api_key</string>
</resources>
次に、gradle を呼び出す .bat を検討してください。
gradle assemble -Papi_key=%api_key% -Pserver_url=%server_url%
gradle 内で、変数コンテンツを取得します。
def varApiKey = "$api_key"
def varServerUrl = "$server_url"
ここで、リソース内の文字列を置き換える必要があります。私はそれをやったことがありませんが、(例えば)あなたは見ることができます: