Gradleコマンドラインを使用して、署名されていないリリースAPKと署名されたリリースAPKの両方を生成する必要があります(gradlew assembleRelease
はimが現在使用しているコマンドです)
APKを揃える必要があります。私はこれをチェックしました: Gradleで署名されていないAPKをビルドする しかし、これを達成するための古い方法のようですが、現在は機能せず、最新バージョンのAndroid =とgradleのコンパイル。また、リリースモードや署名なしモードだけでなく、両方のapkを同時に生成する必要があります。
buildTypes
はproductFlavors
よりも適切な場所だと思います。
signingConfigを置き換えることで、リリースビルドを拡張できます。
buildTypes {
release {
....
signingConfig signingConfigs.release
}
releaseUnsigned.initWith(buildTypes.release)
releaseUnsigned {
signingConfig null
}
}
次に、両方のAPKファイルを作成します。
./gradlew assemble
または、リリースビルドのみが必要な場合
./gradlew assembleRelease assembleReleaseUnsigned
or ./gradlew assR assRU
本当にassembleReleaseタスクのみを使用したい場合は、この依存関係を作成できます
assembleRelease.dependsOn assembleReleaseUnsigned
そして、
./gradlew assembleRelease
私はそれがかなり古い答えであることを知っていますが、それでも誰かが余分な味を追加することなくあなたの目標を達成するのを助けるかもしれません(私の場合のように、プロジェクトには多くの依存関係があるので難しいかもしれません)。
Android {
signingConfigs {
release { ... }
}
productFlavors {
signed {
signingConfig (checkUnsigned() ? null : signingConfigs.release)
}
}
def checkUnsigned () {
return project.hasProperty("unsigned")
}
それを使用するには、
gradle assembleRelease
または
gradle assembleRelease '-Punsigned'
署名なしを作成するため(CIの引用符、それ以外の場合は必要ない場合があります)
このソリューションの欠点は、複数のフレーバーを1行にまとめたい場合です。
gradle assembleRelease assembleDebug assembleRelease '-Punsigned'
assembleReleaseはコマンドラインのすべてのプロパティをチェックするため、最初のassembleReleaseはparam'-Punsigned 'でも呼び出されます。2つのコマンドを使用してこのCIの問題を解決しました。1つは署名付き、もう1つは署名なしバージョンです。
gradle assembleRelease assembleOtherFlavour '-Punsigned'
gradle assembleDebug assembleRelease assembleOtherFlavour
リンクした答えは正しいです-選択したバリアント(ビルドタイプとフレーバーの組み合わせ)が「署名準備完了」署名設定を使用していない場合、gradleは署名されていないAPKを作成します。
したがって、次のような設定を定義できます。
Android {
signingConfigs {
release { ... }
}
productFlavors {
signed {
signingConfig signingConfigs.release // defined above
}
unsigned {} // use the default options
}
}
次に、./gradlew :app:assembleRelease
を実行するとAPKが作成されます。
app/build/outputs/apk
├── app-signed-release.apk
├── app-signed-release-unaligned.apk
└── app-unsigned-release-unsigned.apk
新しいbuildTypeを定義してもうまくいきませんでした。ただし、デバッグ/リリースでは機能します。
buildTypes {
release {
signingConfig null
}
debug {
signingConfig null
}
}
これは署名されていないapkを作成します