0

Gradle ビルド システムを使用して 2 つまたは 3 つの異なるビルド (Android ビルド) を作成する必要があります。各ビルドは異なるサーバーと API キーを指していますか? 現在、これらのサーバー URL と API キーは Java ファイルにハードコーディングされています。デバッグ ビルドとリリース ビルドは適切にビルドできましたが、異なるサーバー URL と API キーのセットを使用して別のビルドを生成する必要がありますか?

前もって感謝します!

4

2 に答える 2

0

別のビルド タイプを作成し、そのビルド タイプに対して別のリソースを構成することで、要件を解決しました。たとえば、私の 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')
}

ご支援ありがとうございます!

于 2013-10-21T12:46:48.820 に答える
0

(私が理解していれば)ビルドごとにバッチファイルを準備する外部実行可能ファイルを使用します。

.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"

ここで、リソース内の文字列を置き換える必要があります。私はそれをやったことがありませんが、(例えば)あなたは見ることができます:

文字列リソースを Android Gradle に置き換える方法

于 2013-09-06T14:19:46.150 に答える