読者です 読者をやめる 読者になる 読者になる

俺とプログラミング

某IT企業でエンジニアをしてます。このブログではプログラミングに関わることを幅広く発信します。

Ubuntu + libGDX + Android あたりのバグ

libGDX Android

Ubuntu上でのlibGDXのAndroid実行にかなり手間取ったので、解決方法を記しておきます。
どなたかの参考になれば幸いです。

私の環境は

Ubuntu 14.04
Android API 20
libGDX 1.6.5

です。

以下のリンクにコマンドラインからの実行方法が載っています。環境が変わっても、gradlewを実行すれば、ほぼ同じコマンドでアプリケーションを動かせるのは、非常に便利です。Windowsの場合、gradlewがgradlew.batに変わるぐらいのものです。
Gradle on the Commandline · libgdx/libgdx Wiki · GitHub



まず、以下のコマンドについてです。

$ ./gradlew android:run

このコマンドは普通単体では使いません。なぜなら、このコマンドは実機に既にインストールされているアプリを起動しているだけだからです。つまり、変更は反映されません。
また、私の環境では実機をつないでいないと以下のエラーが出力されます。

finished with non-zero exit value 255

つかう場合は実機につないでから、

$ ./gradlew android:installDebug android:run

とします。

以下のコマンドを実行すると実機にインストールされます。

$ ./gradlew android:installDebug

しかし、上記のコマンドを私の環境で実行したところ、下記のようなエラーが出力されました。

AAPT err(1182738865): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(553971014): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(1941852674): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(517600684): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(921562108): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(786784465): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(805299572): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(312497444): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(2125144304): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(1681651773): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(688814298): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(1092895317): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(1289256265): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(2085783707): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
AAPT err(2119585940): /home/luiz/Android/Sdk/build-tools/23.0.0_rc2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
Exception in thread "png-cruncher_4" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_3" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_10" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_6" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_9" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_14" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_5" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_17" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "png-cruncher_13" java.lang.RuntimeException: Timed out while waiting for slave aapt process, try setting environment variable SLAVE_AAPT_TIMEOUT to a value bigger than 5 seconds
at com.android.builder.png.AaptProcess.waitForReady(A aptProcess.java:104)
at com.android.builder.png.QueuedCruncher$1.creation( QueuedCruncher.java:107)
at com.android.builder.tasks.WorkQueue.run(WorkQueue. java:204)
at java.lang.Thread.run(Thread.java:745)

これはLinuxのadb関連のバグのようです。私は以下のパッケージをインストールすることで、解決しました。

$ sudo apt-get install libgl1-mesa-dri:i386
$ sudo apt-get install ia32-libs-multiarch:i386
$ sudo apt-get install ia32-libs-multiarch

私はIntelliJ IDEAで開発していますが、
please select android sdk
というエラーメッセージが全く消えないということもありました。SDKのディレクトリも絶対指定しているはずなのに、どういうことなのかさっぱりわかりませんでした。
これについては、android sdk managerでもう一度 Android SDK Build-toolsとAPIをインストールしなおしたあとに
gdx-setup.jar
でもう一度プロジェクトを作ることで、解決しました。
adb not responding
というエラーもあったような気がしますが、それについては上記のパッケージをインストールすれば解決する模様です。

似たような環境でわからないことや不明なバグなどあれば、お助けできるかもしれないので、是非コメントをお寄せください。

Androidゲームプログラミング A to Z

Copyright © 2016 ttlg All Rights Reserved.