【发布时间】:2017-05-02 00:29:48
【问题描述】:
我们正在尝试将 react-native 集成到我们现有的 android 应用程序中: 我们的 build.gradle 的 SDK 要求是:
minSdkVersion 16
targetSdkVersion 23
我们使用 Intent 调用初始的 React index.js:
Intent inte = new Intent(this, ReactNativeStarter.class);
startActivity(inte);
其余代码来自 react 集成教程。
当我们尝试调用我们的 react 组件时,我们得到以下错误:
12-16 09:37:52.041 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4
Process: XXXXX, PID: XXXX
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libfbjni.so" needed by "libreactnativejni.so"; caused by cannot locate symbol "_ZSt16__get_once_mutexv" referenced by "libfbjni.so"...
at java.lang.Runtime.load(Runtime.java:331)
at java.lang.System.load(System.java:982)
at com.facebook.soloader.DirectorySoSource.loadLibrary(DirectorySoSource.java:63)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:209)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:178)
at com.facebook.react.bridge.JSCJavaScriptExecutor.<clinit>(JSCJavaScriptExecutor.java:25)
at com.facebook.react.bridge.JSCJavaScriptExecutor$Factory.create(JSCJavaScriptExecutor.java:20)
at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:183)
at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:169)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
你能帮忙吗?
【问题讨论】:
-
通过在 PackagingOptions 中将 exclude 更改为 pickFirst 来解决问题。之后我们有一个新的 react-native 错误:原因:java.lang.IllegalAccessError:方法 'void android.support.v4.net.ConnectivityManagerCompat.
()' is inaccessible to class 'com.facebook.react. modules.netinfo.NetInfoModule'('com.facebook.react.modules.netinfo.NetInfoModule' 的声明出现在 /data/data/at.??????/files/instant-run/dex/slice-com. facebook.react-react-native-0.20.1_3762d580ab3ced1fa2f7503493d38e666994b9fa-classes.dex) -
这个错误你解决了吗?
-
您好,是的。通过为库添加 pickFirst instad 的 Exclude 解决了该问题
-
你能把那个代码贴出来
标签: android react-native react-native-android