スポンサーリンク

2016年6月16日木曜日

Android アプリのリリースで zipalign エラー

Androidアプリをデベロッパーコンソールにアップロードしようとしたらこんなエラーが出てしまいました。



あれっ?また何かやらかしてしまったかなとちょっと焦りました。今まで見たことのないエラーです。zipalignがどうのこうのと言っています。



zipalignが何か調べてみると、apk内のリソースファイルなどを適切なバイト境界に配置して、アクセスを効率よくするツールのようです。Android SDKのbuild-toolsに含まれているコマンドです。これをかけていないapkはデベロッパーコンソールが受け付けてくれません。Android Studioでビルドする限り、Gradleスクリプトの中で自動的に実行してくれていたようです。こんなコマンド存在すら知りませんでした。

とにかくzipalignを実行せよと言っているので、マニュアルで実行してみます。

zipalign -v 4 xxxx.apk

すると大量のエラーを吐き出し、FAILEDとなってしまいました。

調べてみると原因が分かりました。自分はAndroid Studioを Dev Channel で使っていているのですが、最近 v2.2 preview3 にアップデッートされました。それに伴い、Gradle Plugin for Androidも 2.2.2-alpha3 というバージョンにアップデートされました。このプラグインに問題があった様です。このバージョンを使ってビルドしたapkがzipalignで処理できないのです。

alphaと名が付くバージョンなので何となく嫌だなと思っていたのですが、プロジェクトを開くたびに更新しろと言われるので、ついアップデートしてしまいました。

ではどうすればいいかというと、このプラグインを前のバージョンに戻してやればOKです。ルートディレクトリの build.gradle を以下の様に変更します。

classpath 'com.android.tools.build:gradle:2.2.0-alpha3' 

   ↓

classpath 'com.android.tools.build:gradle:2.1.2'

これでめでたくリリースすることができました。

Gradleプラグインに問題があるのか、それに追従していないzipalignに問題があるのか分かりませんが、もう一つ、Gradleのビルドスクリプトが zipalign のエラーをちゃんとキャッチしていない事も分かりました。

流石にこの問題は致命的なので、そのうち直るでしょう。Android StudioをDev Channel(またはCanary Channel)で使っている人の期間限定の問題だと思います。やはり仕事ではStable Channelを使えということなのかもしれません。

参考ページ
http://stackoverflow.com/questions/37783751/android-apk-not-zip-aligned-when-uploading-to-google-play/37786864

0 件のコメント :

コメントを投稿