内容简介:在rn开发中,如果遇到了比较特殊的功能,如果没有现成的轮子的话,通常我们需要去链接原生库,并且封装成RN组件提供给js调用,作为前端开发者,通常我们对原生端的报错处理不太懂,在处理和原生功能相关问题时,推荐直接使用android-studio进行开发(项目名->android->app->build.gradle),它可以辅助我们方便的下载第三方库,并且闪退等问题我们可以在log中查看的很清晰.下面列出了我们在链接原生库中常常遇到的一些问题1.
在rn开发中,如果遇到了比较特殊的功能,如果没有现成的轮子的话,通常我们需要去链接原生库,并且封装成RN组件提供给js调用,作为前端开发者,通常我们对原生端的报错处理不太懂,在处理和原生功能相关问题时,推荐直接使用android-studio进行开发(项目名->android->app->build.gradle),它可以辅助我们方便的下载第三方库,并且闪退等问题我们可以在log中查看的很清晰.
下面列出了我们在链接原生库中常常遇到的一些问题
1.
这个错误常常出现在第一次封装高版本react-native的library或者引用老版本的库的时候容易出现,原因是
在安卓中 @Override是复写父类的方法,而它的父类没有这个方法,所以不能复写。
因为你报错的这个方法在老版本的RN中是存在的,估计这个三方是以前用的老版本,新版本没有这个方法了,注释掉就可以了。
这个错误也是非常常见的, 这个问题通常发生在你的某个地方缺少了build.gradle文件或者build.gradle文件存在问题,如图所示, 我们可以看到是我们的react-native-citcon库里面有问题,这个时候我们可以去检查下node_module里面是否有这个库,build.gradle是否存在
如果你喜欢手动link第三方库(非react-native link),那么这个问题你可能会遇到,原因很简单,引入库的时候,需要在setting.gradle里面指明库的位置,直接编译是找不到的 如下图
这个步骤一般引入库都会有说明
在我们引入原生的aar库不注意会出现这个问题,我明明都compile写了啊,路径也是对的,库中也指明了flatDir路径,但是为什么还是报找不到路径呢?其实在引入aar的时候, 我们需要在project的build.gradle中去指定aar的目录,如下图所示
这个问题的改法简单粗暴, 进入到红框中的地址,将.lock结尾的文件干掉
我们在集成citcon支付到我们项目中,遇到了一个aar的class和原有项目的class冲突情况,看报错是因为alipay这个class有多个入口,就意味着我们compile了两个alipay的jar到我们的项目里,原有项目的jar和引入第三方库的jar冲突理论上应该是个很常见的情况,官方提供了方法
implementation(name: '×××××××aar包', ext: 'aar') { exclude module: 'gson' } 复制代码
但是在我们项目中尝试多种方式过滤不掉, 这时候我们采用第二种方案, 我们将aar解压,拷贝里面的 java 文件出来, 并且采用provided的方式引入alipay,这样我们在编译的时候使用最新的alipay 编译,但是它最终是不会打包到我们的项目里,我们项目里面还是使用的以前的alipay,后续若是我们想用aar中的alipay,我们就可以直接将provided改成compiled
compile "com.facebook.react:react-native:+" compile files('libs/volley.jar') provided files('libs/alipaySdk-20180403.jar') compile files('libs/wechat-sdk-android-without-mta-5.1.6.jar') 复制代码
java.io.IOException: Could not delete path 'F:\xxxx\android\app\build\intermediates\transforms\dex\debug\folders\1000'. 复制代码
解决:(权限问题导致)以管理员身份运行控制台再运行react-native run-android,如果还报错手动删除'F:\xxxx\android\app'目录下的build文件夹。
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-device-info:prepareComAndroidSupportAppcompatV72301Library'. > Could not expand ZIP 'D:\SDK\extras\android\m2repository\com\android\support\appcompat-v7\23.0.1\appcompat-v7-23.0.1.aar'. 复制代码
解决:此问题还1类似还是权限问题 ,手动删除“F:\xxxxx\node_modules\react-native-device-info\android”目录下的build文件夹。(注意:以上是以react-native-device-info组件为例,如果是其它组件报类似问题 目录为: \node_modules\组件名\android )
在windows上经常会遇到删除文件夹需要管理员权限,但是给了管理员权限还是删不掉,这时候我们可以利用下压缩工具,压缩对应的文件,并且在压缩时选择压缩后删除源文件则就可以删除 or 重启电脑再删除
The SDK Build Tools revision (23.0.1) is too low for project ‘:react-native-vector-icons’. Minimum 复制代码
这个错误在引入第三方库也会经常遇到,改法也很简单, 进入对应库的build.gradle 文件夹 修改buildToolsVersion 为对应版本
注意
在rn中,如果我们只改动了js代码,只需要reload,但是只要我们改动了原生代码,包括Manifest以及一些资源文件,我们都需要重新编译打包才能生效,如果是添加库等操作,建议先clear build, 然后再build
,再打开项目
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ASP.NET Aries 高级开发教程:Excel导入之多表高级导入配置(中)
- 将Excel文件导入数据库(POI+Excel+MySQL+jsp页面导入)第一次优化
- [MySQL]备份和导入
- Android Studio 导入源码
- Python导入订单是否重要
- hive 导入 mysql文本
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人人都在晒,凭什么你出彩
【美】奥斯丁•克莱恩 / 张舜芬、徐立妍 / 北京联合出版公司 / 2015-4 / 38.00
1. 《纽约时报》、亚马逊畅销书排名第1位、好评如潮的创意营销书。《出版人周刊》称其在社交网络时代“在安全范围内提供了实用的自我营销策略”。 2. TED演讲者创意分享:晒对了,全世界都为你点赞:别人在朋友圈、微博晒自拍、晒孩子、晒吃喝,你来晒创意、晒灵感、晒工作、晒收获,发出自己的声音,找到伙伴,机会也会主动找上门! 3. 10堂创意课+手绘涂鸦,所有人都能轻松读完、迅速学会的创意小......一起来看看 《人人都在晒,凭什么你出彩》 这本书的介绍吧!