android报错:ERROR: In <declare-
一段时间没做ionic,遇到过的一些问题处理完就是了,没有记录,结果别人问到一时想不起,有空还是要记录下。
问题出现
安装了cordova-plugin-file-opener2插件后build出现,移除该插件后build正常。
原理
对于这个问题,可以看下此文:
https://github.com/mauron85/react-native-background-geolocation/issues/116
虽说是react-native的(尴尬脸),但殊途同归,关键词就是更新下android-suport包,由
com.android.support:support-v4:+
替换为以下类似版本:
com.android.support:support-v4:26.+
其中26这个版本号和compileSdkVersion中尽量保持一致。
实际排查
-
方法一、在android studio调试
先考虑用android studio调试,是为了应对可能出现的error,在IDE的提示下能方便修改。
打开根目录下的build.gradle
文件,修改相应内容为:
compile 'com.android.support:support-v4:26.+'
此时build可能会报错:
Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
应该是gradle的版本问题,'compile' 关键字已经废弃了,用'implementation' 和 'api'代替,所以调整为:
implementation 'com.android.support:support-v4:26.+'
再次build,提示成功:
image.png
-
方法二、命令行调试
打开android项目中的project.properties文件,见到如下内容:
target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:support-v4:+
看到target是26,所以support包改为一致:
target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:support-v4:26.+
然后再执行build命令:
ionic cordova build android
成功build如下:
image.png
当前只遇到这种情况,所以处理到此,如果遇到其它情况再做调试。
注1:网上有文章说在项目根目录下的gradle.properties文件(如果没有,新建)中添加以下配置:
android.enableAapt2=false
但实际上用发现此方法过期了,反而会报错。
注2:只提供解决方案,但不保证完全适用。如果没有解决,尝试把
compileSdkVersion
和buildToolsVersion
更新到较新版本,且保持一致。