报错场景
RN在跑debug的时候正常,打包release报错资源不存在,如下图
报错原因
由于引入了低版本的RN组件导致报错,报错原因也很简单,当前的资源版本是28,引入的旧版插件是27或者更低导致资源不存在(dialogCornerRadius是28版本有的)
这个截图是插件node_modules里的,并不是根目录下android/build.gradle
解决方案
这里先解释一下compileSdkVersion与targetSdkVersion,compileSdkVersion 是最高引入SDK版本的资源。targetSdkVersion 是实际用到的SDK版本
进而得知 compileSdkVersion 与 targetSdkVersion 并不是保持一致就行的。
比如:当 compileSdkVersion=28 targetSdkVersion=22 时。安装后的 App 可以自动获取所需的权限。
所以解决方案很简单:把报错插件里面(node_modules)下的build.gradle编译版本改成28即可
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
lintOptions {
abortOnError false
}
}