ionic build报错unable to find attr
前面项目打包一直没问题,29号打包,在没改任何代码的情况下,build出现错误:
QQ图片20180531102012.png
发现build的时候,下载了一些东西,当时没注意看:
Download https://maven.google.com/com/android/support/support-v4/27.0.0/support-v4-27.0.0.pom
Download https://maven.google.com/com/android/support/customtabs/27.0.0/customtabs-27.0.0.pom
Download https://maven.google.com/com/android/support/support-compat/27.0.0/support-compat-27.0.0.pom
Download https://maven.google.com/com/android/support/support-media-compat/27.0.0/support-media-compat-27.0.0.pom
Download https://maven.google.com/com/android/support/support-core-utils/27.0.0/support-core-utils-27.0.0.pom
后来发现群里很多了出现了此问题,查资料,说是google升级了V4包,有些插件不兼容。
经过2天的搜索和排查,试过了无数方法,有的开发者通过各式各样的方法解决了,而我的,一直没解决,还是抱同样的错误。后来发现:
罪魁祸首是如下2个插件:
phonegap-plugin-barcodescanner
cordova-plugin-file-opener2
这2个插件用的是v4:+,而更新后需要用v4:23+以上版本才能编译打包
直接上解决办法:
1.如果你的项目没有用这2个插件但是报了同样的错误
解决方法:(以下方法来源于网络)
(1) 把flatforms/android/project.properties文件里的cordova.system.library.X的版本改为23.+以上,比如
cordova.system.library.2=com.android.support:support-v4:24.1.1+
重新build。
(2)添加插件ionic cordova plugin add cordova-android-support-gradle-release --save后重新build。
(3)在flatforms/android/build.gradle的dependencies后加上
configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:27.1.0'
}
}
后重新build。
2.如果你的项目用到了这2个插件中的一个或者2个
首先删除这2个插件,然后:
(1)phonegap-plugin-barcodescanner
首先确认你的cordova和cordova-android版本,插件使用依赖版本如下:
"engines": {
"cordovaDependencies": {
"<7.0.0": {
"cordova-android": "<6.3.0",
},
"7.0.0": {
"cordova-android": ">=6.3.0"
},
"7.1.0": {
"cordova-android": ">=6.3.0",
"cordova": ">=7.1.0"
},
"8.0.0": {
"cordova-android": ">=6.3.0",
"cordova": ">=7.1.0"
}
}
},
举个例子:比如我的项目cordova版本是6.5.0,cordova-android版本是6.1.2,
那我就去下载7.0.0版本以下的
ionic cordova plugin add phonegap-plugin-barcodescanner@6.0.8
tips:如果想下载高版本的,但是通过ionic cordova plugin add phonegap-plugin-barcodescanner下载的明显不是github上的最新版本,可以尝试用ionic cordova plugin add https://github.com/phonegap/phonegap-plugin-barcodescanner.git命令来下载
好,首先确认了自己需要下载的版本,build试试,如果还是报同样的错,把你需要下载的版本整个下载到本地(github点releases,再点击你所需要下载的版本号,就可以进去所需版本的源码了,我下载的6.0.8版本)
下载下来后,找到phonegap-plugin-barcodescanner-6.0.8\src\android下的barcodescanner.gradle文件,将 compile 'com.android.support:support-v4:+'
改成 compile 'com.android.support:support-v4:24.1.1+',改完保存后添加本地插件
比如:ionic cordova plugin add E:\ionic2\phonegap-plugin-barcodescanner-6.0.8
(2)cordova-plugin-file-opener2
这个插件依赖没有那么多版本限制
直接去github把插件下载到本地,将插件的plugin.xml文件第
34行的 <framework src="com.android.support:support-v4:+" />改成 <framework src="com.android.support:support-v4:24.1.1+" />
改完保存后同样添加本地插件
ionic cordova plugin add E:\ionic2\cordova-plugin-file-opener2-master