Android Studio:Gradleを使用して署名済みAPKを生成する方法


89

GoogleとSOで検索しましたが、答えが見つかりません。

Gradleシステムで作業するのはこれが初めてで、Google Playにアップロードするための署名済みAPKを生成する段階にあります(Eclipseからプロジェクトがインポートされます)。

今、私はここの部分を読んだhttp://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Building-and-Tasksを追加する必要があることsigningConfigsにごbuild.gradle

これらの行を追加しましたが、実行する必要があることが./gradlew assembleReleaseわかりましたが、これを私のcmdで実行すると、「gradle」が内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。私はbuild.gradleを右クリックして実行しようとしましたが、成功したと言いましたが、build / apkフォルダーを見ると、app-debug-unaligned.apk

では、Gradleシステムを使用して署名済みAPKを生成するにはどうすればよいですか?



@ScottBarta部分的にトリックを実行しましたが、リリースモードに切り替えてGradleを実行した後もエラーが発生しましたが、ビルドを使用し、メニューから署名済みapkを生成すると、最終的に問題が解決しました。提供されたリンクであなたに賛成してくれてありがとう。
Gooey 2014年

Gradleファイルからv1(jar署名)またはv2(フルAPK署名)バージョンで署名しますか?ここでのソリューション:stackoverflow.com/questions/57943259/…–
user1506104

回答:


97

に従ってビルドを生成する方法は3つありますbuildType。(あなたの場合、それはリリースですが、好きな名前を付けることができます。)

  1. Android Studioの右側のパネルでGradleタスクに移動し、モジュールタスクの下assembleReleaseまたはassemble(#your_defined_buildtype)下を検索します

  2. 左パネルのビルドバリアントに移動し、ドロップダウンからビルドを選択します

  3. ファイルエクスプローラーでプロジェクトのルートディレクトリに移動し、cmd / terminalを開いて実行します。

    Linux: ./gradlew assembleRelease or assemble(#your_defined_buildtype)

    ウィンドウズ: gradlew assembleRelease or assemble(#your_defined_buildtype)

リリースビルド(のみ)を実行する場合は、Build> を使用できます。Generate Signed apk。他のビルドタイプの場合、上記の3つのオプションのみを使用できます。

module/buildビルドタイプ名が含まれているディレクトリで、生成されたAPKを見つけることができます。


4
これは、build.gradleにビルド構成がある場合にのみ、署名済みAPKをビルドします。これをソースコード管理ツールに保存するか、他の人と共有する場合は、署名キーの資格情報をソースコードから分離することを検討する必要があります。
Janusz 2014

ビルド>署名済みapkの生成...そのように単純
Atul

61

既存のAndroid Studio Gradleプロジェクトを取得し、ファイルを編集せずにコマンドラインからビルド/署名することができます。これにより、キーとパスワードを別々に保ちながら、プロジェクトをバージョン管理に保存するのに非常に便利です。

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD

1
ソースコードをコンパニオンに渡す必要があるため、これはキーストアのものを秘密に保つための最良の方法です。ありがとう。
Yeung

2
とにかく、これらのandroid.injected.signing。*プロパティの存在を知っていますか?
Tixeon

Android StudioチームからXavからこの情報を入手しましたが、このような他の変数があるかどうかはわかりません。
Wayne Piekarski 2017年

java.lang.RuntimeExceptionを取得しています:com.android.ide.common.signing.KeytoolException:キー "XXXXXX"をストア "C:\ Users \ somedirectory \ Desktop \ someKey.jks"から読み取れません:エイリアス 'XXXXXX'のキーがありませんキーストアC:\ Users \ somedirectory \ Desktop \ someKey.jksにあります。何故ですか?
Archie G.Quiñones19年

39

このコードを使用できます

android {
   ...
    signingConfigs {
        release {
            storeFile file("../your_key_store_file.jks")
            storePassword "some_password"
            keyAlias "alias_name"
            keyPassword "key_password"
        }
    }

    buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    }
   ...
}

その後、あなたのターミナルから

./gradlew assembleRelease

あなたはでAPKを取得します

your-android-app / build / outputs / apk / your-android-app-release.apk


@ozcanovuncキーストアパスをもう一度確認してください。パスが正しく定義されていない可能性があります。
bhavesh kaila 2016

これを行うと、build.gradleバージョン管理にチェックインされている可能性が高く、パスワードもチェックされている可能性があります。プロジェクトでセキュリティが重要な場合は、別のルートを取ることを検討してください。
Marco7757

1
gradle AssembleReleaseが機能しない。gradlew AssembleReleaseの代わりに使用
Sathish Gadde


-3

ビルドメニュー>署名済みAPKを生成


あなたがそれを実行すると、それはそれを行う方法ではないことがわかります。その上、その.apkファイルをアップロードすると、エラー検出または何かがオンであることを示すエラーが発生します。
Gooey 2014年

11
デバッグがオンになっていると表示されます... Android Studioの左側に、「バリアントのビルド」というタブがあります...それをクリックして、すべてを「デバッグ」から「リリース」に切り替えます...その後、署名されたapkを再度生成......
trickedoutdavid 2014年

2
これはもう機能しません!たとえば、ビルドするAPKではBuildConfig.DEBUGがtrueに設定されています。これで問題は終わりませんでした。今度はgradlew AssembleReleaseメソッドを使用する必要があります。
Ben Clayton

@BenClaytonあなたは絶対に正しいです!これで何時間も無駄にした!Android Studioのもう1つの非常に迷惑な「バグ」-トラブルで終わりが見えない...
sjkm

この簡単な手順が、明記されているように、署名されたapkを生成するのに最適な方法ではないのはなぜでしょうか。このステップはアプリを生成し、問題なく完璧に動作します。しかし、SOに関する他の多くの回答は、自分がやったことが正しい方法や何を修正していないのかと思って混乱しました。
Atul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.