使用React Native Android的JSApplicationIllegalArgumentException

时间:2016-10-10 13:09:49

标签: android android-ndk crash react-native

最近,我们通过简单的文本视图将react native集成到我们的应用程序中。我们在所有类型的设备上都遭遇了这次崩溃。

Fatal Exception: com.facebook.react.bridge.JSApplicationIllegalArgumentException: Error while updating property 'flex' in shadow node of type: RCTView
       at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateShadowNodeProp(ViewManagersPropertyCache.java:109)
       at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackShadowNodeSetter.setProperty(ViewManagerPropertyUpdater.java:148)
       at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:52)
       at com.facebook.react.uimanager.ReactShadowNode.updateProperties(ReactShadowNode.java:222)
       at com.facebook.react.uimanager.UIImplementation.createView(UIImplementation.java:177)
       at com.facebook.react.uimanager.UIManagerModule.createView(UIManagerModule.java:222)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:318)
       at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
       at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
       at android.os.Looper.loop(Looper.java:234)
       at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
       at java.lang.Thread.run(Thread.java:818)
Caused by java.lang.IllegalArgumentException: method com.facebook.react.uimanager.LayoutShadowNode.setFlex argument 1 has type float, got java.lang.String
       at java.lang.reflect.Method.invoke(Method.java)
       at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateShadowNodeProp(ViewManagersPropertyCache.java:99)
       at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackShadowNodeSetter.setProperty(ViewManagerPropertyUpdater.java:148)
       at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:52)
       at com.facebook.react.uimanager.ReactShadowNode.updateProperties(ReactShadowNode.java:222)
       at com.facebook.react.uimanager.UIImplementation.createView(UIImplementation.java:177)
       at com.facebook.react.uimanager.UIManagerModule.createView(UIManagerModule.java:222)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:318)
       at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
       at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
       at android.os.Looper.loop(Looper.java:234)
       at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
       at java.lang.Thread.run(Thread.java:818)

我们使用React Native

显示简单文本
'use strict';

import React from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';

class HelloWorld extends React.Component {
  render() {
    return (
      <Text style={{color: 'white'}}>React Native is running</Text>
    )
  }
}

AppRegistry.registerComponent('8fit', () => HelloWorld);

我们使用React Native 0.35.0-rc.0但我们在稳定版本0.33.1中也遇到了同样的崩溃。

您可以在此处找到完整的崩溃报告。 https://gist.github.com/sealskej/1e2398ef1cd9dda2d1b2630348fa612a

非常感谢任何导致修复问题的帮助!

2 个答案:

答案 0 :(得分:2)

我不知道为什么这不起作用,但也许解决方案是将其包装在View中并在那里设置flex的值。例如:

  render() {
    return (
      <View style={{flex: 1}}>
         <Text style={{color: 'white'}}>React Native is running</Text>
      </View>
    )
  }

答案 1 :(得分:0)

正在使用的package.json文件中的react版本可能与apk中使用的sdk版本不同。

这可能每次都会产生IllegalArgumentException。