1. ホーム
  2. アンドロイド

Android Studio + Gradle またはコマンドラインを使用した Android apk の署名とパッケージング

2022-01-24 13:55:14

<スパン 公式のドキュメントです。 https://developer.android.com/tools/publishing/app-signing.html

デフォルトはデバッグモードで、シグネチャファイルをinして使用します。  $HOME/.android/debug.keystore

例えば、C:㊙Userschengcj1↩.android㊙debug.keystore

<スパン 1. Gradleコマンドラインでの署名

<スパン a. リリースモードシグネチャ。

<スパン <スパン build.gradle :

  1. <スパン <スパン アンドロイド {  
  2.     signingConfigs {  
  3.         releaseConfig {  
  4. <スパン             キーエイリアス 'stone'  
  5. <スパン             キーパスワード 'mypwd'  
  6.             storeFile file('/Users/stone/Documents/project_AS/myapplication/stone.keystore')  
  7.             ストアパスワード 'mypwd'  
  8.         }  
  9.     }  
  10.         buildTypes {  
  11. <スパン            リリース  
  12.              ...  
  13.              signingConfig signingConfigs.release  
  14.            }  
  15.         }  
  16. }  

signingConfigs つまり、署名のための設定です。コンフィギュレーション名 releaseConfig{ //コンフィギュレーションの内容 }.

リリース時のsigningConfigsに対応する設定名をbuildTypesで指定する。 


b. gradleコマンドを実行します。  $  グラドルウ  アセンブルリリース

<スパン コンパイルしてリリースします。build/outputs/apk/の下に、無署名のapkと署名済みのapkが表示されます。

<スパン 署名ファイルを使用しない場合は、デバッグモードのデバッグ署名を使用します。そうすると、デバッグ署名付きのapkが生成されます

<スパン <スパン


c. gradleで書かれた署名入りパスワードは安全ではありません。

  1. <スパン signingConfigs { //gradle assembleRelease  
  2.     myConfig {  
  3.         storeFile ファイル("stone.keystore")  
  4. <スパン         storePassword System.console().readLine("\nKeystore password: ")。  
  5.         keyAlias "stone"。  
  6. <スパン         keyPassword System.console().readLine("\nKey password: ")。  
  7.     }  
  8. }  

そのため、コマンド実行時にパスワードが要求されます


<スパン 2. Android Studioを使った署名とパッケージング

   メニュー Build > Generate Signed APK


<スパン 3. Android Studio を使ってパッケージに自動的に署名する

<スパン    a. Project Structureを開くと、以下のように表示されます。

<スパン

   b. ビルドするムードルを選択し、Signingを開き、configを追加します。

   実行が完了すると、signingConfigs{ config {...} が自動的に build.gradle に追加されます }。

   c. オープンビルドタイプ ->リリース


<スパン     署名するConfigで定義された構成を選択します。

    zip align enabled デフォルトはtrueで、Apkの最適化を有効にします。

    d. $ gradle build

    build types で定義されたビルドタイプが build/outputs/apk/ ディレクトリに出力されます。例えば

    myapplication-debug-unaligned.apk
    myapplication-debug.apk
    myapplication-release-unaligned.apk
    myapplication-release-unsigned.apk
    myapplication-release-unsigned.apk


<スパン 4. Android SDKとJDKのコマンドを使用して、APKに署名し、パッケージ化する

<スパン  シグネチャの作成
<スパン keytool -genkey -v -keystore stone.keystore -alias stone -keyalg RSA -keysize 2048-validity 10000 署名ファイルを生成します。
 apkに署名する
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore stone.keystore unsigned.apk stone 新しいファイルが生成されない。
 apkが署名されているかどうかを検出する
jarsigner -verbose -certs -verify signed.apk 
 最適化apk
<スパン zipalign -f -v 4 signed_unaligned.apk signed_aligned.apk