2018/01/19

PRODUCT_DEFAULT_DEV_CERTIFICATE にパスワード付き署名を設定する場合は注意

AOSP をビルドする際、デフォルトだと署名には build/target/product/security/ 以下にある testkey.x509.pemtestkey.pk8 が使われます。 しかし、実際にリリースするデバイスには自分の署名を使うべきです。

普通は sign_target_files_apks を使いますが、PRODUCT_DEFAULT_DEV_CERTIFICATE を使うことも可能ということでやってみました。 (ただし、 Android 4.4!)

参考
- [Signing Builds for Release  |  Android Open Source Project](https://source.android.com/devices/tech/ota/sign_builds) - [Android keys - release keys | Cool Fish In Glacier](http://cfig.github.io/2015/10/15/signing-keys-in-android/)

パスワード付き署名を使うとビルドが通らない

まずは、パスワード無しの署名を設定してみたところ、無事ビルドが通りました。 /system/etc/security/otacerts.zip も正しく作成されていました。

ところが、署名にパスワード設定したところビルドが通らなくなってしまったのです。

-j8 を取るしか無い?

エラーを見てみると、パスワード入力を求められて終了しています。

どこかに回避策は無いかと探してみたところ、make の並列オプション -j8 1 をとれば、パスワード入力のところで止まるよというアドバイス。 確かにそうだろうけど、このご時世に並列ビルドしないなんて。

他にも /source/build/tools/signapk/SignApk.java を改造してパスワードをハードコーディングすればいい。というのも。 せめて、外部ファイルからパスワードを読み込めるようにする方が良いんじゃない?

参考
- [Certificate password prompt in build - Google グループ](https://groups.google.com/forum/#!topic/android-building/3L-ZJOyWSdY)

結局 PRODUCT_DEFAULT_DEV_CERTIFICATE を使うのは止めました

AOSP の公式サイトにも PRODUCT_DEFAULT_DEV_CERTIFICATE の記述は無くなっていますし2、使うべきではないということなのでしょう。

諸事情で sign_target_files_apks ではない方法を探していたのですが。

  1. 8 は並列数 
  2. 昔はあった様子 
?

0 件のコメント: