Google からの発売前レポートが届くと、常にこのクラッシュが発生する 1 つのデバイス (Huawei Mate 9) があります: 「ScriptC スクリプトの読み込みに失敗しました」。他のデバイスでこの問題が発生したことはありません。
まず、ネイティブの renderscript がクラッシュします。
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'HUAWEI/MHA-L29/HWMHA:7.0/HUAWEIMHA-L29/C567B190:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 23408, tid: 23408, name: bcc >>> /system/bin/bcc <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20
x0 0000000000000000 x1 0000007bab3b6dc8 x2 0000007baac00000 x3 0000000000000005
x4 000000000000017c x5 0000007baaf5d6b8 x6 0000007bab72a6be x7 6871736eff736877
x8 0000000000000000 x9 0000007baba0c748 x10 000000000000017c x11 0000000000000000
x12 0000007baba0c788 x13 0000000000000003 x14 000000000000000c x15 2e8ba2e8ba2e8ba3
x16 0000007bad1b3e18 x17 0000007baca5521c x18 0000000000000002 x19 0000007baba97fe8
x20 0000000000000000 x21 0000000000000000 x22 0000007bab3b6dc8 x23 0000007fe3f04078
x24 588d44aeb495b6a2 x25 0000007bab3b6dc8 x26 0000007baad7c890 x27 588d44aeb495b6a2
x28 0000007fe3f037c0 x29 0000007fe3f03670 x30 0000007bac9ff048
sp 0000007fe3f035a0 pc 0000007baca55258 pstate 0000000020000000
backtrace:
#00 pc 0000000000add258 /system/lib64/libLLVM.so (_ZN4llvm22AssumptionCacheTracker18getAssumptionCacheERNS_8FunctionE+60)
#01 pc 0000000000a87044 /system/lib64/libLLVM.so (_ZN4llvm14InlineFunctionENS_8CallSiteERNS_18InlineFunctionInfoEPNS_9AAResultsEb+21468)
#02 pc 0000000000039c4c /vendor/lib64/libbccArm_v2.so (_ZN12rsTranslator29buildTranslatableFunctionListEPN4llvm6ModuleERNS0_9MapVectorIPNS0_8FunctionEN5RsAPI19rootFunctionProps_tENS0_8DenseMapIS5_jNS0_12DenseMapInfoIS5_EENS0_6detail12DenseMapPairIS5_jEEEENSt3__16vectorINSF_4pairIS5_S7_EENSF_9allocatorISI_EEEEEE+2344)
#03 pc 000000000003d0bc /vendor/lib64/libbccArm_v2.so (_ZN12rsTranslator9translateEPN4llvm6ModuleES2_PFPvPKvPKcPmES5_+2448)
#04 pc 000000000003710c /vendor/lib64/libbccArm_v2.so (_Z21translateModuleToMaliPN3bcc8RSScriptEPN4llvm6ModuleES4_+348)
#05 pc 0000000000067854 /system/lib64/libbcc.so (_ZN3bcc8RSScript11LinkRuntimeERS0_PKc+228)
#06 pc 000000000005cf78 /system/lib64/libbcc.so (_ZN3bcc16RSCompilerDriver13compileScriptERNS_8RSScriptEPKcS4_S4_S4_b+152)
#07 pc 000000000005df4c /system/lib64/libbcc.so (_ZN3bcc16RSCompilerDriver17buildForCompatLibERNS_8RSScriptEPKcS4_S4_b+56)
#08 pc 00000000000054a4 /system/bin/bcc
#09 pc 000000000001a68c /system/lib64/libc.so (__libc_init+88)
#10 pc 0000000000003f8c /system/bin/bcc
そして、読み込みが失敗したという正式なメッセージが表示されます (レンダリング スクリプトを AsyncTask に読み込みます)。
FATAL EXCEPTION: AsyncTask #1
Process: com.example.renderscripttest, PID: 23315
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:330)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:255)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:776)
Caused by: android.support.v8.renderscript.RSRuntimeException: Loading of ScriptC script failed.
at android.support.v8.renderscript.ScriptC.<init>(ScriptC.java:61)
at com.example.renderscripttest.ScriptC_CalcScript.<init>(ScriptC_CalcScript.java:42)
at com.example.renderscripttest.ScriptC_CalcScript.<init>(ScriptC_CalcScript.java:34)
at com.example.renderscripttest.MainActivity.createScript(MainActivity.java:15660)
at com.example.renderscripttest.InitGPUThread.doInBackground(InitGPUThread.java:12)
at com.example.renderscripttest.InitGPUThread.doInBackground(InitGPUThread.java:5)
at android.os.AsyncTask$2.call(AsyncTask.java:316)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more
これが私のgradle設定です:
compileSdkVersion 28
buildToolsVersion '27.0.3'
defaultConfig {
applicationId "com.example.renderscripttest"
minSdkVersion 17
targetSdkVersion 28
versionCode 40
versionName "1.1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
renderscriptTargetApi 17
renderscriptSupportModeEnabled true
}
これを修正するにはどうすればよいですか?