尝试添加ngCordova日历插件后,Ionic Build Android命令失败并出现异常 [英] Ionic Build Android command fails with an exception after trying to add ngCordova calendar plugin

查看:213
本文介绍了尝试添加ngCordova日历插件后,Ionic Build Android命令失败并出现异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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'c​​om.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆