| ±-- com.facebook.fresco:fbcore:0.11.0

| — com.facebook.fresco:imagepipeline-base:0.11.0

| ±-- com.android.support:support-v4:23.2.1

| | — LOCAL: internal_impl-23.2.1.jar

| — com.facebook.fresco:fbcore:0.11.0

±-- com.android.support:recyclerview-v7:23.0.1

| — com.android.support:support-v4:23.2.1

| — LOCAL: internal_impl-23.2.1.jar

— com.android.support:appcompat-v7:23.0.1

— com.android.support:support-v4:23.2.1

— LOCAL: internal_impl-23.2.1.jar

查看完依赖冲突关系以后在项目中解除即可,如下:

//build.gradle中各种姿势的exclude掉依赖就行了

compile (“com.facebook.react:react-native:+”){ // From node_modules.

exclude module: ‘cglib’ //by artifact name

exclude group: ‘org.jmock’ //by group

exclude group: ‘org.unwanted’, module: ‘iAmBuggy’ //by both name and group

}

当然啦,如果你是修改过 RN 源码工程然后将源码引入的模式,依赖摘除也类似,这都是 Android 开发的必备技术了,不再多提了。不过如果你想裁剪优化 RN 则这里的依赖可以不摘除,直接想办法替换为自己项目共用已有优质 lib 即可,只不过这个过程依据团队规模和投入慎重考虑,因为 RN 版本太快,合并代码很苦逼。

3-3 动态 so 库加载策略问题


现有项目中为了安装包体积和 CPU 兼容性问题,所有 so 动态库都是放在 armeabi 目录下的,没有其他目录,而 RN 却只支持编译如下 so:

//RN 的 Application.mk

APP_ABI := armeabi-v7a x86

APP_PLATFORM := android-9

这他妈就尴尬了,你提供 SDK 竟然不考虑提供完整的 ABI 编译支持。那我只能自己想办法了,首先想到的就是你不提供我就自己编译呗(前提是将 RN 以源码形式集成进项目),于是在 RN 的 Application.mk 的 APP_ABI 多添加了一个armeabi(别问我为何加在这里,后面等我写 RN 编译链分析你就明白了,别问我这是啥语法,这是 Android 开发应该必备的技能,和 RN 无关),在 build.gradle 中也对应只添加过滤 armeabi,然后编译了一把报错了,坑爹啊,依据错误信息一查看发现是有一处 Android.mk 执行时找不到一个文件,具体如下:

//编译报错的Android.mk文件路径

//react-native\ReactAndroid\src\main\jni\third-party\jsc

//Android.mk内容

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= jsc

LOCAL_SRC_FILES := jni/$(TARGET_ARCH_ABI)/libjsc.so //编译真实报错地方

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)

include $(PREBUILT_SHARED_LIBRARY)

TARGET_ARCH_ABI 这玩意已经很明显了,做过 Android 都知道,指定是编译 armeabi ABI 时找不到 libjsc.so 文件,那就看看这个 so 是哪儿来的吧,通过 RN 源码自己的 build.gradle 可以看见如下:

// Create Android.mk library module based on so files from mvn + include headers fetched from webkit.org

task prepareJSC(dependsOn: downloadJSCHeaders) << {

copy {

from zipTree(configurations.compile.fileCollection { dep -> dep.name == ‘android-jsc’ }.singleFile)

from {downloadJSCHeaders.dest}

from ‘src/main/jni/third-party/jsc/Android.mk’

include ‘jni/**/.so’, '.h’, ‘Android.m

React Native Android 从学车到补胎和成功发车经历,kotlin静态方法相关推荐

  1. React Native Android 从学车到补胎和成功发车经历

    [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 好几个月没发车了,完全生疏了,为了接下来能持续性的发好车,这次先准 ...

  2. React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)

    [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 有了前面<React Native Android 从学车到 ...

  3. React Native Android启动白屏的一种解决方案下

    React Native Android启动白屏的一种解决方案下 参考文章: (1)React Native Android启动白屏的一种解决方案下 (2)https://www.cnblogs.co ...

  4. React Native Android启动白屏的一种解决方案上

    React Native Android启动白屏的一种解决方案上 参考文章: (1)React Native Android启动白屏的一种解决方案上 (2)https://www.cnblogs.co ...

  5. Android之Windows下搭建React Native Android开发环境(差不多搞了一天)

    Android之Windows下搭建React Native Android开发环境               穷逼买不起mac,但是他们都说React Native Android只能在mac下面 ...

  6. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  7. react native Android端保持APP后台运行--封装 Headless JS

    react native Android端保持APP后台运行--封装 Headless JS 前些日子在做后台下载时踩了后台运行这个大坑,RN官网文档上面在安卓上提供了Headless JS方法,iO ...

  8. 修改React Native Android'默认字体颜色为黑色

    修改React Native Android'默认字体颜色为黑色 找到res/values/styles.xml文件插入代码 <style name="AppTheme" p ...

  9. React Native Android 应用内存使用探究

    本文讲的是React Native Android 应用内存使用探究, 为什么我那台老旧的 Android 手机无法加载图片? 刚开始接触 React Native 应用时,我发现有个现象很奇怪,在 ...

最新文章

  1. 网络DevOps探索与实践
  2. Apriori算法进行关联分析实战
  3. 计算机开始按钮作用,Win8.1的12个变化:开始按钮回归功能不再
  4. Django startproject的问题
  5. leetcode:Sort List(一个链表的归并排序)
  6. 局域网流量控制_基于软件定义的网络准入控制体系
  7. nyoj473 A^B Problem (高速幂)
  8. 计算机科学速成视频35,计算机科学速成课30:万维网【视频】
  9. Sass 基础(三)
  10. centos 管道符取第一行_Linux用户组管理及用户权限及管道符应用
  11. Nacos(三)之架构
  12. python post参数传递不成功_Python中的API构建指南:在Flask中进行API开发
  13. beyond compare 4.2.9桌面右键集成的问题修复
  14. C# winform 跨线程修改界面
  15. 海康威视提前批-大数据算法工程师面试
  16. UML 返回消息的虚线箭头 如何画
  17. 使用netron对mnist网络结构分析
  18. 请用android手机自带浏览器,还在用手机自带浏览器吗?推荐两款无广告、功能齐全的浏览器...
  19. 在Letax中使用enumerate编辑 Step1 , Step2, ..... ,并设置缩进
  20. Android实现流量统计和网速监控悬浮窗

热门文章

  1. dancing link X
  2. cocos creator 知识点,切换场景
  3. ES6 手写一个“辨色”小游戏
  4. UML建模之正式用例描述规范
  5. 基于Proteus的四位数码管显示
  6. 武汉市专精特新中小企业培育库申请条件流程及好处详解
  7. 程序员最不喜欢的酒店房号是什么?打死你都猜不到!
  8. 能源行业走向“双碳目标”,“标本双治”是关键
  9. 2019脱单指南 | 用Python数据解决单身问题
  10. Qt源码重新编译QtMultimedia模块解决XP播放视频问题