ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【修改react-native跳过ssl验证】

2022-02-23 11:03:43  阅读:226  来源: 互联网

标签:ndk 编译 gradle react ssl build ReactAndroid native


关于引用正式环境的步骤:
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的时候才不会出错。

//注释掉下面两个任务

tasks.withType(JavaCompile) {

compileTask -> compileTask.dependsOn packageReactNdkLibs //开始编译前先进行ndk编译

}

clean.dependsOn cleanReactNdkLib

这样clean之后再次build就不会重新进行ndk编译so文件,缩短编译的时间。

4. local_only_symbol_list\debug\R-def.txt’ specified for property ‘localResourcesFile’ does not exist.

5. 删除根目录下的.gradle

标签:ndk,编译,gradle,react,ssl,build,ReactAndroid,native
来源: https://blog.csdn.net/qq_27591421/article/details/123085016

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有