Android Studio + Gradle またはコマンドラインを使用した Android apk の署名とパッケージング
<スパン 公式のドキュメントです。 https://developer.android.com/tools/publishing/app-signing.html
デフォルトはデバッグモードで、シグネチャファイルをinして使用します。 $HOME/.android/debug.keystore
例えば、C:㊙Userschengcj1↩.android㊙debug.keystore
<スパン 1. Gradleコマンドラインでの署名
<スパン
a. リリースモードシグネチャ。
<スパン <スパン build.gradle :
- <スパン <スパン アンドロイド {
- signingConfigs {
- releaseConfig {
- <スパン キーエイリアス 'stone'
- <スパン キーパスワード 'mypwd'
- storeFile file('/Users/stone/Documents/project_AS/myapplication/stone.keystore')
- ストアパスワード 'mypwd'
- }
- }
- buildTypes {
- <スパン リリース
- ...
- signingConfig signingConfigs.release
- }
- }
- }
signingConfigs つまり、署名のための設定です。コンフィギュレーション名 releaseConfig{ //コンフィギュレーションの内容 }.
リリース時のsigningConfigsに対応する設定名をbuildTypesで指定する。
b. gradleコマンドを実行します。 $ グラドルウ アセンブルリリース
<スパン コンパイルしてリリースします。build/outputs/apk/の下に、無署名のapkと署名済みのapkが表示されます。
<スパン 署名ファイルを使用しない場合は、デバッグモードのデバッグ署名を使用します。そうすると、デバッグ署名付きのapkが生成されます
<スパン
<スパン
c. gradleで書かれた署名入りパスワードは安全ではありません。
- <スパン signingConfigs { //gradle assembleRelease
- myConfig {
- storeFile ファイル("stone.keystore")
- <スパン storePassword System.console().readLine("\nKeystore password: ")。
- keyAlias "stone"。
- <スパン keyPassword System.console().readLine("\nKey password: ")。
- }
- }
そのため、コマンド実行時にパスワードが要求されます
<スパン 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
関連
-
Android プロジェクトのライブラリに armeabi-v7a、armeabi、x86 が追加されました。
-
Androidでコンストラクタのインテントを解決できない原因と解決策
-
Eclipse パッケージエクスプローラーの開き方
-
Jniエラー:構造体でも組合でもないものにメンバー 'FindClass' を要求する、 解決方法
-
Android 開発の問題点:ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません
-
Android LayoutInflaterの原則の分析は、ビュー(a)のステップの深い理解によってあなたのステップを取る
-
Androidバージョン一覧
-
Androidのレイアウトにおけるmarginとpaddingの違いについて
-
appの実行エラー:ターゲットデバイスが見つかりませんでした。
-
no target device found 問題が解決した
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android 問題集 第42回:INSTALL_FAILED_OLDER_SDK
-
Rは変数に解決できない
-
AndroidでSPAN_EXCLUSIVE_EXCLUSIVEスパンが長さ0にできない場合、EditTextでコンテンツを削除する
-
Intellij Ideaは、シンボルが見つからない、RクラスまたはRパッケージが存在しない、というエラーを報告します。
-
Androidにおける縦の点線
-
Android Studioのヒント - これを読めば、すべてのヒントが役に立つ
-
Android TextViewの自動改行問題
-
android.content.res.Resources$NotFoundException: 文字列リソースID #0x1 Sinkhole!
-
AndroidManifestのuses-permissionの設定
-
React Native エラー。アプリケーション XXX は登録されていません ソリューション