2014年10月5日日曜日

apkへの署名で、「-tsaまたは-tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。」という警告が出た

署名付きapkファイル作成で警告が発生


ここ→http://techbooster.org/android/environment/1445/
を参考に、コマンドでapkファイルに署名を行うと、以下の警告文が表示された。



jarは署名されました。

警告: 
-tsaまたは-tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。タイムスタンプがないと、署名者証明書の有効期限(2042-02-19)後または将来の失効日後に、ユーザーはこのjarを検証できない可能性があります。

  • 警告は出るが、署名付きファイルは無事生成される
  • 警告は気にしなくていい、と書いているサイトもある


原因と解決方法


原因

JDKのバージョンが1.7 u51以降だったため


JDKのバージョン確認は"java -version"コマンド実行


解決方法

解決方法は3種類あります。

  1. JDK1.7 u51以前のバージョンのJDK7をインストール ※1
  2. JDK6をインストール
  3. 署名時に使うjarsignerコマンドのオプションに"-tsa http://timestamp.digicert.com"を追加
今回は3を行いました。(なので、1と2は未確認になります。)


署名用コマンドは下記のとおりです。

jarsigner -verbose -tsa http://timestamp.digicert.com -keystore hogehoge.keystore android_app.apk hogehoge


(2015/01/30 追記)
※1 jarsignerの署名方式のデフォルト値がJDK6までとJDK7以降で変更されているようなので、これにハマったので注意。→「パッケージファイルに正しく署名されていません」にハマった