Android3.0と3.1とRenderScriptと。
Android3.0 HoneyCombには、新しく(実は昔からあるそうな?)RenderScriptという3D描画用のエンジンが載っていたりするのですが、、、
先日のAndroid3.1の発表と共に、RenderScriptを使ったアプリケーションが動かなくなってしまいました。
動作的には、アプリ起動直後にエラー終了。
動作ログはというと、
E/AndroidRuntime(24361): FATAL EXCEPTION: main E/AndroidRuntime(24361): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.samples/com.android.samples.RsList}: android.renderscript.RSRuntimeException: Loading of ScriptC script failed. E/AndroidRuntime(24361): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736) E/AndroidRuntime(24361): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) E/AndroidRuntime(24361): at android.app.ActivityThread.access$1500(ActivityThread.java:123) E/AndroidRuntime(24361): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) E/AndroidRuntime(24361): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(24361): at android.os.Looper.loop(Looper.java:126) E/AndroidRuntime(24361): at android.app.ActivityThread.main(ActivityThread.java:3997) E/AndroidRuntime(24361): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(24361): at java.lang.reflect.Method.invoke(Method.java:491) E/AndroidRuntime(24361): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) E/AndroidRuntime(24361): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) E/AndroidRuntime(24361): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime(24361): Caused by: android.renderscript.RSRuntimeException: Loading of ScriptC script failed. E/AndroidRuntime(24361): at android.renderscript.ScriptC.(ScriptC.java:60) E/AndroidRuntime(24361): at com.android.samples.ScriptC_rslist. (ScriptC_rslist.java:32) E/AndroidRuntime(24361): at com.android.samples.RsListRS.initRS(RsListRS.java:119) E/AndroidRuntime(24361): at com.android.samples.RsListRS.init(RsListRS.java:82) E/AndroidRuntime(24361): at com.android.samples.RsListView.ensureRenderScript(RsListView.java:39) E/AndroidRuntime(24361): at com.android.samples.RsListView. (RsListView.java:28) E/AndroidRuntime(24361): at com.android.samples.RsList.onCreate(RsList.java:32) E/AndroidRuntime(24361): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) E/AndroidRuntime(24361): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700) E/AndroidRuntime(24361): ... 11 more
こんな感じ。
initializeの部分で死んでるとか言われても、手の打ちようが無いわけで。
現象を纏めると。
・元々、Android3.1のSDKが来るまで動いていた
・3.1のSDKが来てからは、手元の3.0XOOMでは動かないAPKも、3.1XOOMでは動いてた。
・RenderScriptのサンプル全て同じ現象
・自分で作ってたのも同じ用に動かない
で、原因は、、
Android3.1の発表と共に配られた「platform-tools revision4」の問題。
これをrevision3に落とすと、この問題は解決しました。
以下を残したいがために記事を書いたんだけど。
現在SDKのダウンロードは(platform-tools含む)
/tools/android
を使用して最新を落としてくる。
で、下位バージョンを落とすためには、
参考リンク:Android SDK ライブラリ強制インストール
以下にブラウザからアクセスすればいい。(platform-toolsに限る)
http://dl-ssl.google.com/android/repository/platform-tools_r◯-△.zip
◯ → revision 今回は 「03」を指定。
△ → OSの種類 今回は 「macosx」と記載。
これで無事に、手持ちの3.0XOOMでもRenderScriptで遊べるようになりましたとさっ!