React Native Android 从学车到补胎和成功发车经历,kotlin静态方法
| ±-- 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静态方法相关推荐
- React Native Android 从学车到补胎和成功发车经历
[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 好几个月没发车了,完全生疏了,为了接下来能持续性的发好车,这次先准 ...
- React Native Android 源码框架浅析(主流程及 Java 与 JS 双边通信)
[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 有了前面<React Native Android 从学车到 ...
- React Native Android启动白屏的一种解决方案下
React Native Android启动白屏的一种解决方案下 参考文章: (1)React Native Android启动白屏的一种解决方案下 (2)https://www.cnblogs.co ...
- React Native Android启动白屏的一种解决方案上
React Native Android启动白屏的一种解决方案上 参考文章: (1)React Native Android启动白屏的一种解决方案上 (2)https://www.cnblogs.co ...
- Android之Windows下搭建React Native Android开发环境(差不多搞了一天)
Android之Windows下搭建React Native Android开发环境 穷逼买不起mac,但是他们都说React Native Android只能在mac下面 ...
- React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...
- react native Android端保持APP后台运行--封装 Headless JS
react native Android端保持APP后台运行--封装 Headless JS 前些日子在做后台下载时踩了后台运行这个大坑,RN官网文档上面在安卓上提供了Headless JS方法,iO ...
- 修改React Native Android'默认字体颜色为黑色
修改React Native Android'默认字体颜色为黑色 找到res/values/styles.xml文件插入代码 <style name="AppTheme" p ...
- React Native Android 应用内存使用探究
本文讲的是React Native Android 应用内存使用探究, 为什么我那台老旧的 Android 手机无法加载图片? 刚开始接触 React Native 应用时,我发现有个现象很奇怪,在 ...
最新文章
- 网络DevOps探索与实践
- Apriori算法进行关联分析实战
- 计算机开始按钮作用,Win8.1的12个变化:开始按钮回归功能不再
- Django startproject的问题
- leetcode:Sort List(一个链表的归并排序)
- 局域网流量控制_基于软件定义的网络准入控制体系
- nyoj473 A^B Problem (高速幂)
- 计算机科学速成视频35,计算机科学速成课30:万维网【视频】
- Sass 基础(三)
- centos 管道符取第一行_Linux用户组管理及用户权限及管道符应用
- Nacos(三)之架构
- python post参数传递不成功_Python中的API构建指南:在Flask中进行API开发
- beyond compare 4.2.9桌面右键集成的问题修复
- C# winform 跨线程修改界面
- 海康威视提前批-大数据算法工程师面试
- UML 返回消息的虚线箭头 如何画
- 使用netron对mnist网络结构分析
- 请用android手机自带浏览器,还在用手机自带浏览器吗?推荐两款无广告、功能齐全的浏览器...
- 在Letax中使用enumerate编辑 Step1 , Step2, ..... ,并设置缩进
- Android实现流量统计和网速监控悬浮窗