android - React Native 与现有 Android 应用集成闪退

标签 android react-native integration

我会尽力阐述我的问题并提供足够的信息来显示细节。 首先,粘贴错误日志(FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: 执行 doInBackground() 时发生错误):

FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                                          at android.os.AsyncTask$3.done(AsyncTask.java:299)
                                                                                          at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
                                                                                          at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
                                                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:239)
                                                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
                                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                                          at java.lang.Thread.run(Thread.java:841)
                                                                                       Caused by: java.lang.IllegalAccessError: tried to access method android.support.v4.net.ConnectivityManagerCompat.<init>:(Lcom/facebook/react/bridge/ReactApplicationContext;)V from class com.facebook.react.modules.netinfo.NetInfoModule
                                                                                          at com.facebook.react.modules.netinfo.NetInfoModule.<init>(NetInfoModule.java:55)
                                                                                          at com.facebook.react.shell.MainReactPackage.createNativeModules(MainReactPackage.java:67)
                                                                                          at com.facebook.react.ReactInstanceManagerImpl.processPackage(ReactInstanceManagerImpl.java:751)
                                                                                          at com.facebook.react.ReactInstanceManagerImpl.createReactContext(ReactInstanceManagerImpl.java:688)
                                                                                          at com.facebook.react.ReactInstanceManagerImpl.access$600(ReactInstanceManagerImpl.java:84)
                                                                                          at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:177)
                                                                                          at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:162)
                                                                                          at android.os.AsyncTask$2.call(AsyncTask.java:287)
                                                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:234)
                                                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
                                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                                                          at java.lang.Thread.run(Thread.java:841)

我的项目结构:

project structrue

android part

安卓依赖:

dependencies {
    ...
    compile 'com.facebook.react:react-native:0.20.0'
}

AndroidManifest.xml:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>

主要 Activity .java:

public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {

    private ReactRootView mReactRootView;
    private ReactInstanceManager mReactInstanceManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mReactRootView = new ReactRootView(this);
        mReactInstanceManager = ReactInstanceManager.builder()
                .setApplication(getApplication())
                .setBundleAssetName("index.android.bundle")
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();
        mReactRootView.startReactApplication(mReactInstanceManager, "AndroidToRn03", null);

        setContentView(mReactRootView);
    }
    ...
}

package.json:

{
  "name": "androidtorn03",
  "version": "1.0.0",
  "description": "",
  "main": "index.android.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node node_modules/react-native/local-cli/cli.js start"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react-native": "^0.26.2"
  }
}

然后,index.android.js:

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

class AndroidToRn03 extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.hello}>React Native....</Text>
      </View>
    )
  }
}
var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
  },
  hello: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
});

AppRegistry.registerComponent('AndroidToRn03', () => AndroidToRn03);

我根据docs on facebook's website试过很多次了,但都失败了,应用程序在打开时闪退。 我需要你的帮助!你介意花点时间帮助我吗?

最佳答案

改变文件app/build.gradle依赖:

编译 'com.android.support:appcompat-v7:23.0.1'

关于android - React Native 与现有 Android 应用集成闪退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37536102/

相关文章:

java - 如何将Scala语言与Spring Security集成

android - 在 Jetpack Compose 中将 Drawable 实例设置为 Image

java - 如何使用 Jsoup 在 Android 中获取元素的一部分

react-native - 如何在带有 React Native 的 Android 中隐藏状态栏?

javascript - react native : How to add script tag in the component

javascript - 错误 : Looks like you have nested a 'NavigationContainer' inside another. 通常你只需要一个容器在应用程序的根目录

android - 在 Facebook 上分享 Google Play 链接和错误的缩略图

android - android studio 中图形的硬件和软件 GLES 2.0 选项是什么?

java - Spring集成疑问: CRUD operations and sharing events between components

Python - 将整个列表与高斯分布相结合