ReactNatvie集成到原生项目填坑备忘录

Standard

1. 目录结构

以下结构为建议结构,不强制,使用该结构可以解决很多困难存在的问题。
Snip20170115_1

2.引用的react native版本

本来这个问题不应该存在,但是在jcenter和本地maven都存在的时候,发现默认引用的是0.2x的版本,导致很多类都对应不上,按照官方的文档集成也是各种报错,此时可以尝试检查引用的com.facebook.react.modules.core.DefaultHardwareBackBtnHandler,看看是否和你npm安装的版本一致。
Snip20170115_2

3.maven配置

按照第一点的目录结构,那么项目的配置build.properties如下:
注意$rootDir/node_modules/react-native/android路径。

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Android binaries) is installed from npm
            url "$rootDir/node_modules/react-native/android"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

4.编译版本问题

表现为,运行时报错:
Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.net.ConnectivityManagerCompat.<init>()' is inaccessible to class 'com.facebook.react.modules.netinfo.NetInfoModule'

怀疑是React Native使用的版本原因,请设置app/build.gradle (设置'com.android.support:appcompat-v7:23.0.1')

其他待续(坑较多,慢慢来)