在 Android ICS 上编译 react-native fork: java.lang.NoClassDefFoundError: com/facebook/react/uimanager/Re

Posted

技术标签:

【中文标题】在 Android ICS 上编译 react-native fork: java.lang.NoClassDefFoundError: com/facebook/react/uimanager/ReactProp【英文标题】:Compiling react-native fork on Android ICS: java.lang.NoClassDefFoundError: com/facebook/react/uimanager/ReactProp 【发布时间】:2016-08-16 11:15:47 【问题描述】:

我正在开发一个支持 android ICS 的 React-Native fork。 我现在在 Android 4.0.3 上运行时遇到问题,我正在使用 Ubuntu 14.04 64 位。

这是我所做的(根据以下说明:https://facebook.github.io/react-native/docs/android-building-from-source.html):

forked react-native 所以我有自己的 添加了兼容性内容(链接:https://github.com/CodeBuffet/react-native/tree/ics-compat,在ics-compat 分支上) 在 android 4.0.3 上本地测试

在解决了由于版本低导致的一些错误后,我遇到了以下错误,想知道你们是否知道它是什么。

我认为这与它试图寻找项目中不存在的com/facebook/react/uimanager/ReactProp(但com.facebook.react.uimanager.annotations.ReactProp 存在)这一事实有关。

E/AndroidRuntime( 1270): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime( 1270):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
E/AndroidRuntime( 1270):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
E/AndroidRuntime( 1270):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
E/AndroidRuntime( 1270):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
E/AndroidRuntime( 1270):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
E/AndroidRuntime( 1270):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
E/AndroidRuntime( 1270):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
E/AndroidRuntime( 1270):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
E/AndroidRuntime( 1270):    at java.lang.Thread.run(Thread.java:856)
E/AndroidRuntime( 1270): Caused by: java.lang.NoClassDefFoundError: com/facebook/react/uimanager/ReactProp
E/AndroidRuntime( 1270):    at java.lang.reflect.Method.getAnnotation(Native Method)
E/AndroidRuntime( 1270):    at java.lang.reflect.Method.getAnnotation(Method.java:275)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManagersPropertyCache.extractPropSettersFromViewManagerClassDefinition(ViewManagersPropertyCache.java:400)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManagersPropertyCache.getNativePropSettersForViewManagerClass(ViewManagersPropertyCache.java:301)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.<init>(ViewManagerPropertyUpdater.java:116)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.<init>(ViewManagerPropertyUpdater.java:110)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManagerPropertyUpdater.findManagerSetter(ViewManagerPropertyUpdater.java:73)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManagerPropertyUpdater.getNativeProps(ViewManagerPropertyUpdater.java:60)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.ViewManager.getNativeProps(ViewManager.java:199)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.UIManagerModuleConstantsHelper.createConstants(UIManagerModuleConstantsHelper.java:62)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.UIManagerModule.createConstants(UIManagerModule.java:128)
E/AndroidRuntime( 1270):    at com.facebook.react.uimanager.UIManagerModule.<init>(UIManagerModule.java:80)
E/AndroidRuntime( 1270):    at com.facebook.react.CoreModulesPackage.createNativeModules(CoreModulesPackage.java:68)
E/AndroidRuntime( 1270):    at com.facebook.react.ReactInstanceManagerImpl.processPackage(ReactInstanceManagerImpl.java:895)
E/AndroidRuntime( 1270):    at com.facebook.react.ReactInstanceManagerImpl.createReactContext(ReactInstanceManagerImpl.java:812)
E/AndroidRuntime( 1270):    at com.facebook.react.ReactInstanceManagerImpl.access$700(ReactInstanceManagerImpl.java:102)
E/AndroidRuntime( 1270):    at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:198)
E/AndroidRuntime( 1270):    at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:181)
E/AndroidRuntime( 1270):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
E/AndroidRuntime( 1270):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
E/AndroidRuntime( 1270):    ... 5 more
E/AndroidRuntime( 1270): Caused by: java.lang.ClassNotFoundException: com.facebook.react.uimanager.ReactProp
E/AndroidRuntime( 1270):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime( 1270):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime( 1270):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime( 1270):    ... 25 more
W/ActivityManager(  875):   Force finishing activity com.ma3akom/.MainActivity

一些信息:

为什么要引入对这么旧的 Android 版本的支持?

因为我正在制作一个应用程序,其用户是 90% 的 Android ICS 用户。我们已经在不知不觉中开始使用 React-Native,所以现在我正在尝试使 React-Native 与 ICS 兼容,这样我们就不会再遇到这个问题了。

【问题讨论】:

你有没有得到这个工作?遇到与您相同的错误,但我似乎无法弄清楚是什么原因造成的。 【参考方案1】:

您可能需要额外的工作。 请检查https://github.com/facebook/react-native-website/issues/653和https://github.com/facebook/react-native/issues/22118。

【讨论】:

以上是关于在 Android ICS 上编译 react-native fork: java.lang.NoClassDefFoundError: com/facebook/react/uimanager/Re的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg neon 在 android 上编译 - 汇编错误

如何让 KTOR Logging 在 Android 上编译?

转Ubuntu 上编译Android出现cannot find -lstdc++解决办法

在Ubuntu Server14.04上编译Android6.0源码

怎么在ubuntu上编译android源码

“你需要合适的加载器”,使用 react native 和 expo。应用程序无法在 web 上编译,但在 android 上运行