web-dev-qa-db-ja.com

gradleを使用して署名付きおよび署名なしのAPKを生成するにはどうすればよいですか?

Gradleコマンドラインを使用して、署名されていないリリースAPKと署名されたリリースAPKの両方を生成する必要があります(gradlew assembleReleaseはimが現在使用しているコマンドです)

APKを揃える必要があります。私はこれをチェックしました: Gradleで署名されていないAPKをビルドする しかし、これを達成するための古い方法のようですが、現在は機能せず、最新バージョンのAndroid =とgradleのコンパイル。また、リリースモードや署名なしモードだけでなく、両方のapkを同時に生成する必要があります。

12

buildTypesproductFlavorsよりも適切な場所だと思います。
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
7
Stas Parshin

私はそれがかなり古い答えであることを知っていますが、それでも誰かが余分な味を追加することなくあなたの目標を達成するのを助けるかもしれません(私の場合のように、プロジェクトには多くの依存関係があるので難しいかもしれません)。

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
6
Lazy Beard

リンクした答えは正しいです-選択したバリアント(ビルドタイプとフレーバーの組み合わせ)が「署名準備完了」署名設定を使用していない場合、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
4

新しいbuildTypeを定義してもうまくいきませんでした。ただし、デバッグ/リリースでは機能します。

 buildTypes {
         release {
                signingConfig null
            }
         debug {
                signingConfig null
            }
    }

これは署名されていないapkを作成します

0
Yazazzello