2020-10-25に更新

bundletool build-apksでたくさんエラーが出る時

いつものようにFlutterで作成したaabファイルを実機で試そうと思いapksに変換するため bundletool build-apks を実行しようとしたところ大量にエラーが出た。Windowsにて。

bundletool自体のバージョンが低かった(0.13くらい)ため最新の 1.3.0 にバージョンアップした。しかしまだエラーが出る。ただ、よく見るとエラーの内容が変わっていた。こんな感じ。最初は関係ないかと思ったが、どうもOutOfMemoryErrorが怪しいっぽい。

[BT:1.3.0] Error: java.io.IOException: Failed to obtain compression information for entry
java.io.UncheckedIOException: java.io.IOException: Failed to obtain compression information for entry
        at com.android.tools.build.bundletool.io.ApkzlibApkSerializerHelper.writeToZipFile(ApkzlibApkSerializerHelper.java:103)
        at com.android.tools.build.bundletool.io.StandaloneApkSerializer.writeToDiskInternal(StandaloneApkSerializer.java:76)
        at com.android.tools.build.bundletool.io.StandaloneApkSerializer.writeToDisk(StandaloneApkSerializer.java:43)
        at com.android.tools.build.bundletool.io.ApkSetBuilderFactory$ApkSetArchiveBuilder.addStandaloneApk(ApkSetBuilderFactory.java:130)
        at com.android.tools.build.bundletool.io.ApkSerializerManager.lambda$null$3(ApkSerializerManager.java:221)
        at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:117)
        at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:38)
        at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Failed to obtain compression information for entry
        at com.android.tools.build.apkzlib.zip.ZFile.processAllReadyEntries(ZFile.java:1890)
        at com.android.tools.build.apkzlib.zip.ZFile.add(ZFile.java:1765)
        at com.android.tools.build.apkzlib.zip.ZFile.add(ZFile.java:1747)
        at com.android.tools.build.apkzlib.zip.ZFile.add(ZFile.java:1711)
        at com.android.tools.build.bundletool.io.ApkzlibApkSerializerHelper.addFile(ApkzlibApkSerializerHelper.java:247)
        at com.android.tools.build.bundletool.io.ApkzlibApkSerializerHelper.addNonAapt2Files(ApkzlibApkSerializerHelper.java:239)
        at com.android.tools.build.bundletool.io.ApkzlibApkSerializerHelper.writeToZipFile(ApkzlibApkSerializerHelper.java:144)
        at com.android.tools.build.bundletool.io.ApkzlibApkSerializerHelper.writeToZipFile(ApkzlibApkSerializerHelper.java:101)
        ... 11 more
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:502)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:461)
        at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:83)
        at com.android.tools.build.apkzlib.zip.ZFile.processAllReadyEntries(ZFile.java:1883)
        ... 18 more
Caused by: java.lang.OutOfMemoryError: Java heap space

解決法

調べてみたところ、やはりメモリエラーなのでは……ということで、メモリ上限の設定を入れてみた。Windowsのため、他のOSと同様のコマンドで使えるよう、下記のようなbundletool.batファイルを作成して使っていた。

java -jar C:\NVPACK\jdk1.8.0_77\bin\bundletool-all-1.3.0.jar %*

これに下記のようなパラメータを付けてみた。5Gとか大きすぎるとそんなパラメータは使えないというエラーが出たので、下げていって最終的に1Gになった。環境によって違うのかもしれない。

java -Xmx1G -jar C:\NVPACK\jdk1.8.0_77\bin\bundletool-all-1.3.0.jar %*

原因

原因は全然わからないが、最近Javaのアップデートが実行された気がするのでそのあたりなのかも?

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, React, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント