工程 svn 路径:http://tc-svn.tencent.com/ReactNative/react_native_proj/branches/rn_39_release_project
目前框架内部主要为四个部分:
如果有修改 c 代码重新打包新的 so 的需要,请在工程的 config/config.gradle
中将 ndkAutoBuild
参数设置为 true
:
此开关决定是否开启编译时 ndk 自动构建,默认为关。当打开时,若 c 部分代码存在改动,编译运行时会自动编译生成最新的 so 打入 apk,但是需要 Facebook 规定的 r10e 版本的环境。
请参照工程中提供的 local-template.properties
文件修改指定的 NDK 路径。
各平台的 NDK 下载链接如下:
快捷键:Control R (Mac) / Shift F10 (Win)
是不是很熟悉~ 是的,就是它的快捷键:
如果需要单独编译 so,也可以尝试在工程根目录下命令行输入:gradlew ndkBuild
目前项目中使用的内置 jsbundle 暂命名为 index.android.bundle
,对应注册名为 rn
,放置在 app/src/main/assets
下。
如上文结构中提到,js 代码在 jsbundle 文件夹下,若需要编译打包新的 jsbundle,可以考虑直接在 jsbundle
目录下直接命令行运行 npm install
下载需要的依赖。下载完成后,可以尝试打包 jsbundle,打包命令为:
react-native bundle --platform android --dev true --entry-file UIExplorer/UIExplorerApp.android.js --bundle-output [YOUR BUNDLE DEST PATH]index.android.bundle
将生成的 bundle 放置在上文的路径即可。
PS:后面会支持读 SD 卡的外部 bundle。
考虑到 FB 对 RN 的版本升级仍处于一个较为频繁的节奏,因此原则上我们需要尽量避免对 RN 源码进行修改,减少升级同步代码所带来的工作量。然而由于业务或工程需要(打入 log、修复隐藏的坑等等),不得不修改源码时,请将修改的部分在工程中的 CodeModificationAttention.md
文件中做好记录方便所有成员周知,例如:
ABC.java
中新增 methodA
方法、新增 paramA
成员变量… …——by 成员 ADEF.java
中 methodB
方法修改… …——by 成员 B具体请参照 CodeModificationAttention.md
内已修改部分即可。
PS:若需要升级 RN 源码请知会 joltwang && mangosmwang && timorzheng && xepherjin
当需要升级 RN 版本时,请确保从 github 上拉到的是已稳定 release 版本的 RN 源码!
从新的源码工程中提取出 ReactAndroid 与 ReactCommon 部分,替换至本工程对应的部分,需要注意的几点如下:
ndkAutoBuild
开关(参考"配置 NDK 路径")CodeModificationAttention.md
补齐对应的修改(Important)src/main/jni/Application..mk
中 APP_ABI
参数,调整为 APP_ABI := armeabi-v7a
BUCK
相关的无用文件build.gradle
中的下载编译逻辑,一些包括文件名与下载地址在内的常量信息同步更新至 config/config.gradle
,并将最新的需要下载的文件提前下载好更新至 preDownloads
目录下待补充
1、Q:打开 ndk 开关后编译报错:
Android NDK: ../FastArithmetic/ReactAndroid/src/main/jni/first-party/fb/Android.mk: Cannot find module with tag 'folly' in import path
A:请修改 NDK 版本为 r10e 版本,参照上文"配置 NDK 路径"。
2、Q:(接 1)为什么我修改了还是报这个错?
A:试试先 gradle sync ,再运行工程。
3、Q:为什么打开 ndk 开关后,我的 c 代码修改没有生效打进新的 so 中?
A:请关闭 Instant Run 功能(AS Ver >= 2.0),并设置强制每次编译强制安装最新的 apk:
4、Q:为什么 npm install 很慢,一直卡在那里不动了?
A:请切换到 staff-wifi 再运行(Mac)。
5、Q:为什么最新的 RN 官方源码工程打开后一直在 gradle sync?
A:请切换到 staff-wifi 再运行(Mac)。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有