Я создал приложение с использованием RenderScript, которое отлично работает на большинстве телефонов, но вылетает при инициализации на fi. эмулятор с API 21. Я свернул свой код рендеринга, чтобы увидеть, когда он все еще падает. Это происходит в macOS Catalina и в Ubuntu 19.10.
Компилируется:
#pragma version(1)
#pragma rs java_package_name(com.me.my-obfuscated_package-name);
rs_allocation myFirstAlloc;
Но происходит сбой во второй строке:
private val renderScript = RenderScript.create(context)
private val scriptTest = ScriptC_test(renderScript)
В этой конкретной строке в ScriptC.java
:
/**
* Only intended for use by the generated derived classes.
*
* @param rs
*/
protected ScriptC(RenderScript rs, String resName, byte[] bitcode32, byte[] bitcode64) {
super(0, rs);
long id = 0;
if (RenderScript.sPointerSize == 4) {
id = internalStringCreate(rs, resName, bitcode32);
} else {
id = internalStringCreate(rs, resName, bitcode64); // <<< Exception thrown here
}
if (id == 0) {
throw new RSRuntimeException("Loading of ScriptC script failed.");
}
setID(id);
}
Logcat
--------- beginning of crash
04-18 14:51:25.656 20905-21024/com.myapp.debug A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 21024 (handshare.debug)
04-18 14:51:25.763 12867-12867/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-18 14:51:25.763 12867-12867/? I/DEBUG: Build fingerprint: 'generic_x86_64/sdk_google_phone_x86_64/generic_x86_64:5.0.2/LSY66K/5523115:eng/test-keys'
04-18 14:51:25.763 12867-12867/? I/DEBUG: Revision: '0'
04-18 14:51:25.763 12867-12867/? I/DEBUG: ABI: 'x86_64'
04-18 14:51:25.764 12867-12867/? I/DEBUG: pid: 20905, tid: 21024, name: handshare.debug >>> com.myapp.debug <<<
04-18 14:51:25.764 12867-12867/? I/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
04-18 14:51:25.771 12867-12867/? I/DEBUG: rax 0000000000000000 rbx 0000000000005220 rcx ffffffffffffffff rdx 0000000000000006
04-18 14:51:25.771 12867-12867/? I/DEBUG: rsi 0000000000005220 rdi 00000000000051a9
04-18 14:51:25.771 12867-12867/? I/DEBUG: r8 0000000000000018 r9 00007f7652a76668 r10 0000000000000008 r11 0000000000000206
04-18 14:51:25.771 12867-12867/? I/DEBUG: r12 0000000000000002 r13 0000000000000006 r14 0000000000000010 r15 00007f763be2a9e0
04-18 14:51:25.771 12867-12867/? I/DEBUG: cs 0000000000000033 ss 000000000000002b
04-18 14:51:25.771 12867-12867/? I/DEBUG: rip 00007f7653944507 rbp 00007f76398efb70 rsp 00007f76398ee518 eflags 0000000000000206
04-18 14:51:25.772 12867-12867/? I/DEBUG: backtrace:
04-18 14:51:25.772 12867-12867/? I/DEBUG: #00 pc 0000000000076507 /system/lib64/libc.so (tgkill+7)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #01 pc 000000000002829f /system/lib64/libc.so (pthread_kill+143)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #02 pc 0000000000029571 /system/lib64/libc.so (raise+17)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #03 pc 0000000000022e1d /system/lib64/libc.so (abort+61)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #04 pc 0000000000023143 /system/lib64/libbcc.so (ELFObject<64u>::relocateX86_64(void* (*)(void*, char const*), void*, ELFSectionRelTable<64u>*, ELFSectionProgBits<64u>*)+1603)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #05 pc 0000000000020d6f /system/lib64/libbcc.so (ELFObject<64u>::relocate(void* (*)(void*, char const*), void*)+1071)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #06 pc 0000000000020909 /system/lib64/libbcc.so (bcc::ELFObjectLoaderImpl::relocate(bcc::SymbolResolverInterface&)+25)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #07 pc 0000000000029844 /system/lib64/libbcc.so (bcc::ObjectLoader::Load(void*, unsigned long, char const*, bcc::SymbolResolverInterface&, bool)+164)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #08 pc 0000000000029b54 /system/lib64/libbcc.so (bcc::ObjectLoader::Load(bcc::FileBase&, bcc::SymbolResolverInterface&, bool)+436)
04-18 14:51:25.772 12867-12867/? I/DEBUG: #09 pc 000000000001791c /system/lib64/libbcc.so (bcc::RSExecutable::Create(bcc::RSInfo&, bcc::FileBase&, bcc::SymbolResolverProxy&)+44)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #10 pc 0000000000015d07 /system/lib64/libbcc.so (bcc::RSCompilerDriver::loadScript(char const*, char const*, char const*, unsigned long, char const*, bcc::SymbolResolverProxy&)+2423)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #11 pc 0000000000012e5c /system/lib64/libRSCpuRef.so (android::renderscript::RsdCpuScriptImpl::init(char const*, char const*, unsigned char const*, unsigned long, unsigned int, char const*)+3132)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #12 pc 0000000000011e34 /system/lib64/libRSCpuRef.so (android::renderscript::RsdCpuReferenceImpl::createScript(android::renderscript::ScriptC const*, char const*, char const*, unsigned char const*, unsigned long, unsigned int)+100)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #13 pc 0000000000014800 /system/lib64/libRSDriver.so (rsdScriptInit(android::renderscript::Context const*, android::renderscript::ScriptC*, char const*, char const*, unsigned char const*, unsigned long, unsigned int)+32)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #14 pc 000000000003e58c /system/lib64/libRS.so (android::renderscript::ScriptC::runCompiler(android::renderscript::Context*, char const*, char const*, unsigned char const*, unsigned long)+380)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #15 pc 000000000003eb13 /system/lib64/libRS.so (android::renderscript::rsi_ScriptCCreate(android::renderscript::Context*, char const*, unsigned long, char const*, unsigned long, char const*, unsigned long)+99)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #16 pc 000000000004615a /system/lib64/libRS.so (android::renderscript::rsp_ScriptCCreate(android::renderscript::Context*, void const*, unsigned long)+42)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #17 pc 0000000000042185 /system/lib64/libRS.so (android::renderscript::ThreadIO::playCoreCommands(android::renderscript::Context*, int)+453)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #18 pc 000000000002dd7f /system/lib64/libRS.so (android::renderscript::Context::threadProc(void*)+2207)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #19 pc 000000000002731e /system/lib64/libc.so (__pthread_start(void*)+46)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #20 pc 000000000002339b /system/lib64/libc.so (__start_thread+11)
04-18 14:51:25.773 12867-12867/? I/DEBUG: #21 pc 0000000000019885 /system/lib64/libc.so (__bionic_clone+53)
04-18 14:51:25.886 12867-12867/? I/DEBUG: Tombstone written to: /data/tombstones/tombstone_01
Модуль приложения build.gradle
android {
buildToolsVersion versions.buildToolsVersion
compileSdkVersion versions.compileSdk
defaultConfig {
minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk
}
}
dependencies {
implementation project(":shared")
implementation project(":presentation")
implementation project(":domain")
implementation project(":data")
}
Модуль данных build.gradle
android {
buildToolsVersion versions.buildToolsVersion
compileSdkVersion versions.compileSdk
defaultConfig {
minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk
renderscriptTargetApi 21
renderscriptSupportModeEnabled false
}
}
Уровень проекта build.gradle
buildscript {
ext.versions = [
'compileSdk' : 29,
'minSdk' : 21,
'targetSdk' : 29,
'buildToolsVersion': '29.0.3'
]
}
Где я ошибся?