尝试添加ngCordova日历插件后,Ionic Build Android命令失败并出现异常 [英] Ionic Build Android command fails with an exception after trying to add ngCordova calendar plugin
问题描述
我在ubuntu工作离子(1.7.15)。
我的项目工作正常,直到我尝试实现
意外的顶层例外:
com .android.dex.DexException:多个dex文件定义Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoVersionImpl;
我希望上面的错误是因为我的项目中的多个插件有任何解决方案。 我发现此错误与 multidex 有关-define-annotation / 33777507#33777507>这里。
我尝试的内容:
我试过升级我的android SDK。
使用这个堆栈溢出问题无法解析配置的所有依赖关系':_armv7DebugCompile'我已经完成所有操作后我得到了上述错误。
这是我的package.json文件
{
name:app,
version:1.1.1,
description:app:一个离子项目,
依赖项:{
gulp:^ 3.5.6,
gu lp-sass:^ 2.0.4,
gulp-concat:^ 2.2.0,
gulp-minify-css:^ 0.3.0,
gulp-rename:^ 1.2.0
},
devDependencies:{
bower:^ 1.3.3,
gulp -util:^ 2.2.14,
shelljs:^ 0.3.0
},
cordovaPlugins:[
cordova-plugin-device ,
cordova-plugin-console,
cordova-plugin-whitelist,
cordova-plugin-splashscreen,
cordova-plugin-statusbar,
ionic-plugin-keyboard,
{
locator:https://github.com/rossmartin/PushPlugin.git,
id: com.phonegap.plugins.PushPlugin
}
],
cordovaPlatforms:[
android
]
}
这是我的fetch.json文件
{
cordova-plugin-device:{
source:{
type:registry,
id:cordova -plugin-device@~1.1.1
},
is_ top_level:true,
变量:{}
},
cordova-plugin-console:{
source:{
type :registry,
id:cordova-plugin-console@~1.0.2
},
is_top_level:true,
variables:{ }
},
cordova-plugin-whitelist:{
source:{
type:registry,
id: cordova-plugin-whitelist
},
is_top_level:true,
variables:{}
},
cordova-plugin-splashscreen: {
source:{
type:registry,
id:cordova-plugin-splashscreen
},
is_top_level :true,
变量:{}
},
cordova-plugin-statusbar:{
source:{
type:注册表,
id:cordova-plugin-statusbar@~2.1.0
},
is_top_level: true,
变量:{}
},
ionic-plugin-keyboard:{
source:{
type:registry ,
id:ionic-plugin-keyboard
},
is_top_level:true,
变量:{}
},
cordova-plugin-camera:{
source:{
type:registry,
id:cordova-plugin-camera
},
is_top_level:true,
变量:{}
},
phonegap-plugin-push:{
source :{
type:registry,
id:phonegap-plugin-push
},
is_top_level:true,
变量:{}
},
com.phonegap.plugins.PushPlugin:{
source:{
type:git,
url:https://github.com/phonegap-build/PushPlugin.git,
subdir:。
},
is_top_level:true,
变量:{}
},
cordova-plugin-datepicker:{
来源:{
类型:git,
url:https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git,
subdir :。
},
is_top_level:true,
变量:{}
},
cordova-plugin-calendar:{
来源:{
类型:注册表,
id:cordova-plugin-calendar
},
is_top_level:true,
变量:{}
},
cordova-plugin-crosswalk-webview:{
source:{
type:registry,
id:cordova-plugin-crosswalk-webview
},
is_top_level:true,
变量:{}
}
}
我不知道出了什么问题请任何人帮助我。
您的问题是您使用的是推送插件的过时版本。从您的 package.json
,您将包括 https:/ /github.com/rossmartin/PushPlugin.git 这是一个已弃用的插件的未维护分支,该插件在2年内未更新。因此,如果你查看它的 plugin.xml
,你可以看到它包括用于传统Ant驱动的Cordova构建过程的Android支持库作为JAR :
< source-file src =src / android / com / plugin / android-support-v13.jartarget-dir =libs //>
您需要删除此版本的插件并将其替换为最新版本等同于 cordova-plugin-push
,其中使用Gradle包含支持库:
< framework src =com.android.support:support-v13:23+/>
注意你需要为Android API v23构建,所以必须通过SDK Manager安装它使用Cordova Android平台的v5 +( cordova-android @ 5 +
)。
UPDATE
在 build.gradle 文件中,我添加以下行。
在依赖项中添加以下行 compile'com.android.support:multidex:1.0.1'
依赖项{
编译fileTree(dir:'libs',包含:'* .jar')
// SUB-PROJECT DEPENDENCIES START
debugCompile项目(路径:CordovaLib,配置: debug)
releaseCompile项目(路径:CordovaLib,配置:ease)
编译com.android.support:support-v4:+
// SUB-PROJECT DEPENDENCIES END
编译'com.android.support:multidex:1.0.1'
}
默认配置添加此行 multiDexEnab led true
defaultConfig {
versionCode cdvVersionCode?:Integer.parseInt(+ privateHelpers.extractIntFromManifest (versionCode)+0)
applicationId privateHelpers.extractStringFromManifest(package)
if(cdvMinSdkVersion!= null){
minSdkVersion cdvMinSdkVersion
}
multiDexEnabled true
}
添加此行后,我在网站上得到了他的错误,我通过删除解决了这个问题platform / android / libs / 你可以看到android-support-v13.jar删除那个文件
你的所有插件已经为项目安装的 plugin.xml 文件,然后检查任何转到该android-support-v13.jar的行,并对其进行评论或按上述方式执行,谢谢
I am working ionic(1.7.15) in ubuntu.
My project works fine until i try to implement calendar plugin. After installing this plugin to my project and i try to build with ionic build android
command but i am getting the following error.
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
I hope the above error occurs due to multiple plugin in my project is there any solution. I found this error is related to multidex
from here.
What i have tried:
I have tried the upgrading my android SDK.
Using this stack-overflow question Could not resolve all dependencies for configuration ':_armv7DebugCompile' i have done all after that i am getting the above error.
Here is my package.json file
{
"name": "app",
"version": "1.1.1",
"description": "app: An Ionic project",
"dependencies": {
"gulp": "^3.5.6",
"gulp-sass": "^2.0.4",
"gulp-concat": "^2.2.0",
"gulp-minify-css": "^0.3.0",
"gulp-rename": "^1.2.0"
},
"devDependencies": {
"bower": "^1.3.3",
"gulp-util": "^2.2.14",
"shelljs": "^0.3.0"
},
"cordovaPlugins": [
"cordova-plugin-device",
"cordova-plugin-console",
"cordova-plugin-whitelist",
"cordova-plugin-splashscreen",
"cordova-plugin-statusbar",
"ionic-plugin-keyboard",
{
"locator": "https://github.com/rossmartin/PushPlugin.git",
"id": "com.phonegap.plugins.PushPlugin"
}
],
"cordovaPlatforms": [
"android"
]
}
Here is my fetch.json file
{
"cordova-plugin-device": {
"source": {
"type": "registry",
"id": "cordova-plugin-device@~1.1.1"
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-console": {
"source": {
"type": "registry",
"id": "cordova-plugin-console@~1.0.2"
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-whitelist": {
"source": {
"type": "registry",
"id": "cordova-plugin-whitelist"
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-splashscreen": {
"source": {
"type": "registry",
"id": "cordova-plugin-splashscreen"
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-statusbar": {
"source": {
"type": "registry",
"id": "cordova-plugin-statusbar@~2.1.0"
},
"is_top_level": true,
"variables": {}
},
"ionic-plugin-keyboard": {
"source": {
"type": "registry",
"id": "ionic-plugin-keyboard"
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-camera": {
"source": {
"type": "registry",
"id": "cordova-plugin-camera"
},
"is_top_level": true,
"variables": {}
},
"phonegap-plugin-push": {
"source": {
"type": "registry",
"id": "phonegap-plugin-push"
},
"is_top_level": true,
"variables": {}
},
"com.phonegap.plugins.PushPlugin": {
"source": {
"type": "git",
"url": "https://github.com/phonegap-build/PushPlugin.git",
"subdir": "."
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-datepicker": {
"source": {
"type": "git",
"url": "https://github.com/VitaliiBlagodir/cordova-plugin-datepicker.git",
"subdir": "."
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-calendar": {
"source": {
"type": "registry",
"id": "cordova-plugin-calendar"
},
"is_top_level": true,
"variables": {}
},
"cordova-plugin-crosswalk-webview": {
"source": {
"type": "registry",
"id": "cordova-plugin-crosswalk-webview"
},
"is_top_level": true,
"variables": {}
}
}
I have no idea about what went wrong please anyone help me.
Your problem is you are using an outdated version of the push plugin. From your package.json
, you are including https://github.com/rossmartin/PushPlugin.git which is a unmaintained branch of a deprecated plugin that hasn't been updated in 2 years. Hence, if you look at its plugin.xml
, you can see it includes the Android Support Library as a JAR for the legacy Ant-driven Cordova build process:
<source-file src="src/android/com/plugin/android-support-v13.jar" target-dir="libs/" />
You need to remove this version of the plugin and replace it with the up-to-date equivalent cordova-plugin-push
, which uses Gradle to include the support library:
<framework src="com.android.support:support-v13:23+" />
Note you will need to build for Android API v23, so must have this installed via the SDK Manager and be using v5+ of the Cordova Android platform (cordova-android@5+
).
UPDATE
In build.gradle file i add this lines.
In dependencies add this line compile 'com.android.support:multidex:1.0.1'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
// SUB-PROJECT DEPENDENCIES START
debugCompile project(path: "CordovaLib", configuration: "debug")
releaseCompile project(path: "CordovaLib", configuration: "release")
compile "com.android.support:support-v4:+"
// SUB-PROJECT DEPENDENCIES END
compile 'com.android.support:multidex:1.0.1'
}
default config add this line multiDexEnabled true
defaultConfig {
versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0")
applicationId privateHelpers.extractStringFromManifest("package")
if (cdvMinSdkVersion != null) {
minSdkVersion cdvMinSdkVersion
}
multiDexEnabled true
}
After adding this lines then i got his error reffer this website and i solved it by removing platform/android/libs/ You can see "android-support-v13.jar" delete that file
all your plugin that have been installed for project look for plugin.xml file and then check any line that reefer to that android-support-v13.jar and comment it or do as above, thank you
这篇关于尝试添加ngCordova日历插件后,Ionic Build Android命令失败并出现异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!