あれっ?また何かやらかしてしまったかなとちょっと焦りました。今まで見たことのないエラーです。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 件のコメント :
コメントを投稿