我向商店发送了一个新版本,当我打开它时,它崩溃了。在调试模式下没有发生,但在发布构建类型中我可以重现它。
例外的是:
Fatal Exception: java.lang.RuntimeException: Unable to create application asd.esa.persistent.ESApp: com.getkeepsafe.relinker.MissingLibraryException: librealm-jni.so
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6123)
at android.app.ActivityThread.access$1200(ActivityThread.java:213)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6923)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)
Run Code Online (Sandbox Code Playgroud) 我使用 NDK 在 C 中的文件如下,我查看了 Kotlin 中的包名称和 C 类 (NDK) 中的包名称,没有发现任何区别:
jstring Java_com_test1_app1_ui_BaseActivity_getLocalKeyOld(JNIEnv* env, jobject obj, jstring id) {
const char *nativeString = (*env)->GetStringUTFChars(env, id, 0);
char* deviceIdEncode = base64encode(nativeString);
int lenght = strlen(deviceIdEncode);
jstring result;
if(lenght < 16) {
result = (*env)->NewStringUTF(env,"+-0wef2ccfeqa0-+");
} else if(lenght > 16) {
char subbuff[17];
memcpy( subbuff, &deviceIdEncode[0], 16 );
subbuff[16] = '\0';
result = (*env)->NewStringUTF(env,subbuff);
} else {
result = (*env)->NewStringUTF(env,deviceIdEncode);
}
return result;
}
jstring Java_com_test1_app1_ui_BaseActivity_getLocalKey(JNIEnv* env, jobject obj, jstring id) { …Run Code Online (Sandbox Code Playgroud)