デバッグ、ベータ、リリースの3つの異なるビルドタイプのプロジェクトがあります。私のテストパッケージは常にデバッグビルド用に作成されていますが、QAはベータビルドを使用しており、QAが膨大な数のデバイスでこれらのテストを実行することを望んでいます。
ベータビルドと同じキーで署名されたQAのテストAPKを作成しようとしています。 Android-Gradleのドキュメントを見ると、これができないことを示すものは何もありませんが、これを構成する方法はわかりません。とにかく、テストAPKをアセンブルするときに使用するキーストアを構成できますか?または、署名されていないテストAPKを作成する方法はありますか?
これは、あなたができないことを文書化するという点であなたの質問に対する不完全な答えですが、プロジェクトでconnectedAndroidTest
テストを実行するandroidTest
タスクは、実行するようにハードコードされていますdebug
ビルドタイプですが、別のビルドタイプを指す方法がわかりません。
Gradleでタスクの依存関係を一覧表示する方法はありますか? からアドバイスを受けて、次のコマンドを実行した場合、タスクの依存関係ツリーを調べます。
./gradlew tasks --all
あなたはあなたの出力でこれを得る:
Verification tasks
------------------
app:check - Runs all checks. [app:lint]
app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest]
app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest]
app:deviceCheck - Runs all device checks using Device Providers and Test Servers.
connectedAndroidTest
タスクのドキュメントでは、debug
に対してテストを実行すると主張しており、タスクの依存関係(-all
フラグで表示)は、タスクがassembleDebug
。
ビルドタイプとフレーバーを追加しても、組み込みのdebug
タイプへの依存性には影響しないようです。
私よりもGradle-fuが大きい場合は、タスクを再配線してテストを別のビルドタイプに依存させることができますが、APIでサポートされていないものに依存するため、これを行うと脆弱になる可能性があります。 Android Gradleプラグイン。
ただし、質問に最も直接的に答えるために、別の証明書を使用してビルドに対してテストを実行するだけの場合は、ベータ証明書を使用するようにdebug
ビルドの署名構成を変更できます。
Android {
signingConfigs {
beta {
keyAlias 'key'
keyPassword 'password'
storeFile file('/path/to/beta_keystore.jks')
storePassword 'password'
}
}
buildTypes {
debug {
signingConfig signingConfigs.beta
}
beta {
signingConfig signingConfigs.beta
}
}
}
私はそれをテストし、この方法でカスタムキーストアを使用するデバッグビルドに対してandroidTestターゲットを実行することができます。ただし、ベータ版に対してテストを実行したいと思うので、これで問題が解決するとは思えません。 ビルド、ベータ版のデバッグビルドではありません 証明書。
これを別のターゲットに向けることができます。これがいつ発生したかはわかりませんが、 ドキュメントから:
現在、1つのビルドタイプのみがテストされています。デフォルトではデバッグビルドタイプですが、これは次のように再構成できます。
Android { ... testBuildType "staging" }
ビルドバリアントのテストソースセットを追加するには、次の手順に従います。
これで、上記の手順に従って新しいテストを追加することにより、この新しいソースセットにテストを追加できます。 [宛先ディレクトリの選択]ダイアログが表示されたら、新しいバリアントテストソースセットを選択します。
src/androidTest/
ソースセットのインストルメント化されたテストは、すべてのビルドバリアントで共有されます。アプリの「MyFlavor」バリアントのテストAPKをビルドする場合、Gradle
はsrc/androidTest/
とsrc/androidTestMyFlavor/
ソースセットの両方を組み合わせます。 ==
もう1つの方法は、次の行をデフォルトの構成にすることです。
現在、1つのビルドタイプのみがテストされています。デフォルトではデバッグビルドタイプですが、これは次のように再構成できます。
Android {
...
testBuildType "staging"
}