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で遊べるようになりましたとさっ!