Android项目中嵌入RN常见问题汇总

来源:互联网 发布:mac怎么登陆两个微信 编辑:程序博客网 时间:2024/06/07 06:55

问题一

Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.net.ConnectivityManagerCompat.<init>()' is inaccessible to class 'com.facebook.react.modules.netinfo.NetInfoModule' (declaration of 'com.facebook.react.modules.netinfo.NetInfoModule' appears in /data/app/com.wuage.steel-1/base.apk:classes20.dex)

解决方式:
RN兼容v7包的问题,将SDK编译版本改成23,v7包换成23.0.1

问题二
so文件问题,在项目的defauleConfig中添加
在app/src/build.gradle中添加
ndk {
abiFilters “armeabi-v7a”, “x86”
}
如果项目中不支持ndk,在gradle.properties中添加android.useDeprecatedNdk=true”

问题三
混淆冲突问题

Warning:okhttp3.internal.huc.DelegatingHttpsURLConnection: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirementError:Execution failedfortask :transformClassesAndResourcesWithProguardForRelease'. > java.io.IOException: Please correcttheabovewarningsfirst.

这个问题是在说你在混淆打包的时候有些类有可能找不着,所以会包错,和warning
解决的办法:
找到报warning的类都给他在你的proguard-rules.pro混淆器文件中
添加代码-dontwarn 包名+类名.给取消掉warning就可以了,如果你不想那个类被混淆,那就添加代码:-keep class 包名+类名{;}或者包名.{;}
我的问题是出现了RN和OKhttp3的问题,所以讲OKhttp3的警告给忽略掉

-keep class com.facebook.**{*;}   禁止混淆RN
-dontwarn okhttp3.**    忽略OKHttp的报错

因为RN内部依赖了okHttp,所以会出现这个问题

此博客会持续更新,记录开发RN的过程中踩过的坑。。

1 0
原创粉丝点击