关于引用正式环境的步骤:
ReactAndroid module下的build/outputs/aar/ReactAndroid-release.aar
到
打包后手动修改地址
D:\repo\com\facebook\react\react-native\0.61.5-jitsi.2\react-native-0.61.5-jitsi.2.pom
变为
D:\repo\com\facebook\react\ReactAndroid\0.61.5-jitsi.2\ReactAndroid-0.61.5-jitsi.2.pom
这个路径并打开,ReactAndroid 修改
build.gradle(:sdk) 224行
if (artifactId.startsWith(‘react-native-’)) {
groupId = rootProject.ext.moduleGroupId
}
if(artifactId.startsWith(“ReactAndroid”)){
artifactId = “react-native”
}
D:\Android\caches 删除重新bulid
Building React Native for Android
开启 npx react-native start
更新库 npm install
打包
cd .. 返回上一层
cd ~/jitsi-meet/
./android/scripts/release-sdk.sh /home/jitsi/me/
黄色主要修改ReactAndroid的内容
node_modules/graceful-fs/polyfills.js
// fs.stat = statFix(fs.stat)
// fs.fstat = statFix(fs.fstat)
// fs.lstat = statFix(fs.lstat)
1.内容在react-native根目录下创建local.properties文件
sdk.dir=/home/jitsi/Android/Sdk
ndk.dir=/home/jitsi/Android/Sdk/ndk/18.1.5063045
2.添加gradle依赖
(1) 在生成的React Native工程中,将android/build.gradle文件中添加gradle-download-task依赖。
dependencies { // gradle可以不替换,还是原来的版本 classpath ‘com.android.tools.build:gradle:1.3.1’ classpath ‘de.undercouch:gradle-download-task:3.1.2’ //新增加的内容 // 注意:不要把你的应用的依赖放在这里; // 它们应该放在各自模块的build.gradle文件中 }
(2) 添加:ReactAndroid项目,在android/settings.gradle中添加:ReactAndroid项目。
//包含ReactAndroid工程 include ‘:ReactAndroid’ //指出ReactAndroid工程的地址 project(’:ReactAndroid’).projectDir = new File(rootProject.projectDir, ‘…/node_modules/react-native/ReactAndroid’)
(3) 修改你的android/app/build.gradle文件,使用:ReactAndroid替换预编译库。例如用compile project(’:ReactAndroid’):替换compile ‘com.facebook.react:react-native:+’
(4) 让第三方模块使用你的分支
如果你使用第三方的React Native模块,你需要重写它们的依赖以避免它们仍然打包官方的预编译库。否则当你编译时会报错-Error: more than one library with package name ‘com.facebook.react’.(错误:有几个重名的’com.facebook.react’的包)
修改你的android/app/build.gradle文件,添加如下内容:
configurations.all {
exclude group: ‘com.facebook.react’, module: ‘react-native’
}
编译运行
在Android Studio欢迎页中选择Import project,随后选择应用所在的文件夹。
然后开始Run,这个过程需要下载200多M的文件然后才开始编译,编译快的可能几分钟,有时候甚至不一定成功。
在我编译的时候查看Gradle Console的时候发现一直卡在downloadBoost这个task上,
查看ReactAndroid/build.gradle里面的内容可以看到这个任务(如下)下载的是C++的boost库,文件大小接近105M,因此我们把 https://downloads.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.zip 替换成 http://mirror.nienbo.com/boost/boost_1_57_0.zip 就会快很多。或者直接从 官网地址 下载并复制到ReactAndroid工程的build/downloads目录下,这样就会直接跳过downloadBoost这个task,编译速度就会快很多。
还有一种方法,就是直接下载
用gradle即使*也很难访问github,所以建议直接把task内的地址放在浏览器里下载,这样的task有4个,分别是downloadBoost,downloadDoubleConversion,downloadFolly,downloadGlog。注意最后一个downloadJSCHeaders不能通过这种方式下载,正常用gradle下载也能成功
clean与build 问题
当我们成功编译运行后,clean的时候会将我们之前下载的文件包括boost库文件删除掉,因此为了clean之后再次下载编译so库的问题,我们需要执行以下三个步骤。
1.将ReactAndroid/build/react-ndk
文件夹移动到ReactAndroid项目下也就是ReactAndroid/react-ndk目录下,
这一个目录是编译生成的so文件。
2.将ReactAndroid/build.gradle里面的
SourceSets.main里面的jniLibs.srcDir的目录 332行
从"$buildDir/react-ndk/exported"改为"react-ndk/exported",
这样就编译的时候就会去寻找ReactAndroid/react-ndk目录的so文件。
sourceSets.main { jni.srcDirs = [] jniLibs.srcDir “react-ndk/exported”
//so库目录 res.srcDirs = [‘src/main/res/devsupport’, ‘src/main/res/shell’, ‘src/main/res/views/modal’] java { srcDirs = [‘src/main/java’, ‘src/main/libraries/soloader/java’, ‘src/main/jni/first-party/fb/jni/java’] exclude ‘com/facebook/react/processing’ exclude ‘com/facebook/react/module/processing’ } }
3.将ReactAndroid/build.gradle里面编译so文件的task注释掉,
并将clean依赖于cleanReactNdkLib的task也注视掉,这样clean的时候才不会出错。