Android 爱奥尼亚和建筑安卓项目问题

Android 爱奥尼亚和建筑安卓项目问题,android,ionic-framework,ionic,Android,Ionic Framework,Ionic,所以我在iOS上构建应用程序非常成功。今天,我想在android设备上测试我的应用程序。但是,我没有成功-当我运行android的build命令时,我收到以下消息: Running command: /Volumes/SSD/Users/Lukasz/Desktop/app/hooks/after_prepare/010_add_platform_class.js /Volumes/SSD/Users/Lukasz/Desktop/app add to body class: platf

所以我在iOS上构建应用程序非常成功。今天,我想在android设备上测试我的应用程序。但是,我没有成功-当我运行android的build命令时,我收到以下消息:

Running command:     /Volumes/SSD/Users/Lukasz/Desktop/app/hooks/after_prepare/010_add_platform_class.js /Volumes/SSD/Users/Lukasz/Desktop/app
add to body class: platform-android
Running command:     /Volumes/SSD/Users/Lukasz/Desktop/app/hooks/after_prepare/020_remove_sass_from_pla    tforms.js /Volumes/SSD/Users/Lukasz/Desktop/app
Running command: /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/cordova/build 
ANDROID_HOME=/Users/Lukasz/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
Running: /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/gradlew cdvBuildDebug -b /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/build.gradle -Dorg.gradle.daemon=true
:preBuild
:compileDebugNdk UP-TO-DATE
:preDebugBuild
:checkDebugManifest
:CordovaLib:compileLint
:CordovaLib:copyDebugLint UP-TO-DATE
:CordovaLib:mergeDebugProguardFiles UP-TO-DATE
:CordovaLib:preBuild
:CordovaLib:preDebugBuild
:CordovaLib:checkDebugManifest
:CordovaLib:prepareDebugDependencies
:CordovaLib:compileDebugAidl UP-TO-DATE
:CordovaLib:compileDebugRenderscript UP-TO-DATE
:CordovaLib:generateDebugBuildConfig UP-TO-DATE
:CordovaLib:generateDebugAssets UP-TO-DATE
:CordovaLib:mergeDebugAssets UP-TO-DATE
:CordovaLib:generateDebugResValues UP-TO-DATE
:CordovaLib:generateDebugResources UP-TO-DATE
:CordovaLib:packageDebugResources UP-TO-DATE
:CordovaLib:processDebugManifest UP-TO-DATE
:CordovaLib:processDebugResources UP-TO-DATE
:CordovaLib:generateDebugSources UP-TO-DATE
:CordovaLib:compileDebugJava UP-TO-DATE
:CordovaLib:processDebugJavaRes UP-TO-DATE
:CordovaLib:packageDebugJar UP-TO-DATE
:CordovaLib:compileDebugNdk UP-TO-DATE
:CordovaLib:packageDebugJniLibs UP-TO-DATE
:CordovaLib:packageDebugLocalJar UP-TO-DATE
:CordovaLib:packageDebugRenderscript UP-TO-DATE
:CordovaLib:bundleDebug UP-TO-DATE
:prepareAndroidCordovaLibUnspecifiedDebugLibrary UP-TO-DATE
:prepareDebugDependencies
:compileDebugAidl UP-TO-DATE
:compileDebugRenderscript UP-TO-DATE
:generateDebugBuildConfig UP-TO-DATE
:generateDebugAssets UP-TO-DATE
:mergeDebugAssets
:generateDebugResValues UP-TO-DATE
:generateDebugResources UP-TO-DATE
:mergeDebugResources UP-TO-DATE
:processDebugManifest UP-TO-DATE
:processDebugResources
:generateDebugSources
:compileDebugJavaNote: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

:preDexDebug  
:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define        Lcom/google/android/gcm/GCMBaseIntentService;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)

FAILED

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':dexDebug'.

com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/Users/Lukasz/Library/Android/sdk/build-tools/22.0.1/dx --dex --no-optimize --    output     /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/build/intermediates/dex/de    bug --input-    list=/Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/build/intermediates/t    mp/dex/debug/inputList.txt
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define     Lcom/google/android/gcm/GCMBaseIntentService;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --    debug option to get more log output.

BUILD FAILED

Total time: 1 mins 20.991 secs

/Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/cordova/node_modules/q/q.j    s:126
throw e;
^
Error code 1 for command:     /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/gradlew with args:     cdvBuildDebug,-    b,/Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/build.gradle,-    Dorg.gradle.daemon=true
ERROR building one of the platforms: Error:     /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/cordova/build: Command     failed with exit code 8
You may not have the required environment or OS to build this project
Error: /Volumes/SSD/Users/Lukasz/Desktop/app/platforms/android/cordova/build:     Command failed with exit code 8
at ChildProcess.whenDone     (/usr/local/lib/node_modules/cordova/node_modules/cordova-    lib/src/cordova/superspawn.js:134:23)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:766:16)
at Process.ChildProcess.handle.onexit (childprocess.js:833:5)
这是我正在使用的版本: 离子型:1.3.2 科尔多瓦5.1.1 Java:最新版本8.45

有没有关于什么地方会出错的想法

编辑:

/*
授权给Apache软件基金会(ASF)
一个或多个参与者许可协议。见通知文件
与此工作一起分发以获取更多信息
关于版权所有权。ASF许可此文件
根据Apache许可证,版本2.0(
“许可证”);除非符合规定,否则您不得使用此文件
带着执照。您可以通过以下方式获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,
根据许可证分发的软件在
“按原样”的基础上,没有任何
种类,无论是明示的还是暗示的。请参阅许可证以获取详细信息
管理权限和限制的特定语言
根据许可证。
*/
//生成的文件!不要编辑!
应用插件:“android”
构建脚本{
存储库{
mavenCentral()
}
//根据需要切换Android Gradle插件版本要求
//已安装的Gradle版本。此依赖项记录在
// http://tools.android.com/tech-docs/new-build-system/version-compatibility
//及https://issues.apache.org/jira/browse/CB-8143
如果(gradle.gradleVersion>=“2.2”){
依赖关系{
classpath'com.android.tools.build:gradle:1.0.0+'
}
}否则如果(gradle.gradleVersion>=“2.1”){
依赖关系{
classpath'com.android.tools.build:gradle:0.14.0+'
}
}否则{
依赖关系{
classpath'com.android.tools.build:gradle:0.12.0+'
}
}
}
//允许插件通过build-extras.gradle声明Maven依赖项。
存储库{
mavenCentral()
}
任务包装器(类型:包装器){
gradleVersion='2.2.1'
}
//配置属性。通过环境变量、build-extras.gradle或gradle.properties设置这些。
//参考:http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html
分机{
申请者:'CordovaLib/cordova.gradle'
//android.compileSdkVersion的值。
如果(!project.hasProperty('cdvCompileSdkVersion')){
cdvCompileSdkVersion=null;
}
//android.buildToolsVersion的值。
如果(!project.hasProperty('cdvBuildToolsVersion')){
cdvBuildToolsVersion=null;
}
//将versionCode设置为给定值。
如果(!project.hasProperty('cdvVersionCode')){
cdvVersionCode=null
}
//将minSdkVersion设置为给定值。
如果(!project.hasProperty('cdvMinSdkVersion')){
cdvMinSdkVersion=null
}
//是否构建特定于体系结构的APK。
如果(!project.hasProperty('CDVBuildMultipleApps')){
CDVBuildMultipleApps=null
}
//.properties文件以用于发布签名。
如果(!project.hasProperty('cdvreleasesigningproperties文件')){
cdvReleaseSigningPropertiesFile=null
}
//.properties文件以用于调试签名。
如果(!project.hasProperty('cdvDebugSigningPropertiesFile')){
cdvDebugSigningPropertiesFile=null
}
//由build.js脚本设置。
如果(!project.hasProperty('cdvBuildArch')){
cdvBuildArch=null
}
//插件gradle扩展可以附加到该插件,以便在最后运行代码。
cdvPluginPostBuildExtras=[]
}
//插件渐变扩展启动
//插件渐变扩展结束
def hasBuildExtras=文件('build-extras.gradle')。存在()
如果(hasBuildExtras){
申请者:'build extras.gradle'
}
//在扩展名.gradle文件后设置属性默认值。
if(ext.cdvCompileSdkVersion==null){
ext.cdvCompileSdkVersion=privateHelpers.getProjectTarget()
}
if(ext.cdvBuildToolsVersion==null){
ext.cdvBuildToolsVersion=privatehelopers.findLatestInstalledBuildTools()
}
如果(ext.cdvDebugSigningPropertiesFile==null&&file('debug-signing.properties')。存在()){
ext.cdvdebugsigningproperties文件='debug signing.properties'
}
如果(ext.cdvReleaseSigningPropertiesFile==null&&file('release-signing.properties')。存在()){
ext.cdvreleasesigningproperties文件='release signing.properties'
}
//转换为适当的类型。
ext.cdvbuildmultipleApps=!!CDVBuildMultipleApps;
ext.cdvMinSdkVersion=cdvMinSdkVersion==null?null:Integer.parseInt(“”+cdvMinSdkVersion)
ext.cdvVersionCode=cdvVersionCode==null?null:Integer.parseInt(“”+cdvVersionCode)
def computeBuildTargetName(调试生成){
def ret=‘汇编’
if(CDVBuildMultipleApps&&cdvBuildArch){
def arch=cdvBuildArch=='arm'?'armv7':cdvBuildArch
ret+=''+arch.toUpperCase().charAt(0)+arch.substring(1);
}
返回ret+(debugBuild?'Debug':'Release')
}
//使cdvBuild成为一个依赖于调试/arch单独任务的任务。
任务cdvBuildDebug
cdvBuildDebug.dependsOn{
返回computeBuildTargetName(true)
}
任务cdvBuildRelease
cdvBuildRelease.dependsOn{
返回computeBuildTargetName(false)
}
任务cdvPrintProps=20){
defaultConfig.versionCode+=9
}否则如果(minSdkVersion>=14){
defaultConfig.versionCode+=8
}
}
编译选项{
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
if(CDVReleaseSigningProperties文件){
签名配置{
释放{
//必须设置这些选项,否则Gradle会抱怨(即使它们被覆盖)。
keyAlias=“”
keyPassword=“\uuu unset”//必须将这些设置为非空,以便
    /*
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.
    */

    // GENERATED FILE! DO NOT EDIT!

apply plugin: 'android'

buildscript {
    repositories {
        mavenCentral()
    }

    // Switch the Android Gradle plugin version requirement depending on the
    // installed version of Gradle. This dependency is documented at
    // http://tools.android.com/tech-docs/new-build-system/version-compatibility
    // and https://issues.apache.org/jira/browse/CB-8143
    if (gradle.gradleVersion >= "2.2") {
        dependencies {
            classpath 'com.android.tools.build:gradle:1.0.0+'
        }
    } else if (gradle.gradleVersion >= "2.1") {
        dependencies {
            classpath 'com.android.tools.build:gradle:0.14.0+'
        }
    } else {
        dependencies {
            classpath 'com.android.tools.build:gradle:0.12.0+'
        }
    }
}

// Allow plugins to declare Maven dependencies via build-extras.gradle.
repositories {
    mavenCentral()
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.2.1'
}

// Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties.
// Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html
ext {
    apply from: 'CordovaLib/cordova.gradle'
    // The value for android.compileSdkVersion.
    if (!project.hasProperty('cdvCompileSdkVersion')) {
        cdvCompileSdkVersion = null;
    }
    // The value for android.buildToolsVersion.
    if (!project.hasProperty('cdvBuildToolsVersion')) {
        cdvBuildToolsVersion = null;
    }
    // Sets the versionCode to the given value.
    if (!project.hasProperty('cdvVersionCode')) {
        cdvVersionCode = null
    }
    // Sets the minSdkVersion to the given value.
    if (!project.hasProperty('cdvMinSdkVersion')) {
        cdvMinSdkVersion = null
    }
    // Whether to build architecture-specific APKs.
    if (!project.hasProperty('cdvBuildMultipleApks')) {
        cdvBuildMultipleApks = null
    }
    // .properties files to use for release signing.
    if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) {
        cdvReleaseSigningPropertiesFile = null
    }
    // .properties files to use for debug signing.
    if (!project.hasProperty('cdvDebugSigningPropertiesFile')) {
        cdvDebugSigningPropertiesFile = null
    }
    // Set by build.js script.
    if (!project.hasProperty('cdvBuildArch')) {
        cdvBuildArch = null
    }

    // Plugin gradle extensions can append to this to have code run at the end.
    cdvPluginPostBuildExtras = []
}

// PLUGIN GRADLE EXTENSIONS START
// PLUGIN GRADLE EXTENSIONS END

def hasBuildExtras = file('build-extras.gradle').exists()
if (hasBuildExtras) {
    apply from: 'build-extras.gradle'
}

// Set property defaults after extension .gradle files.
if (ext.cdvCompileSdkVersion == null) {
    ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget()
}
if (ext.cdvBuildToolsVersion == null) {
    ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
}
if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) {
    ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties'
}
if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) {
    ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties'
}

// Cast to appropriate types.
ext.cdvBuildMultipleApks = !!cdvBuildMultipleApks;
ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion)
ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode)

def computeBuildTargetName(debugBuild) {
    def ret = 'assemble'
    if (cdvBuildMultipleApks && cdvBuildArch) {
        def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch
        ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1);
    }
    return ret + (debugBuild ? 'Debug' : 'Release')
}

// Make cdvBuild a task that depends on the debug/arch-sepecific task.
task cdvBuildDebug
cdvBuildDebug.dependsOn {
    return computeBuildTargetName(true)
}

task cdvBuildRelease
cdvBuildRelease.dependsOn {
    return computeBuildTargetName(false)
}

task cdvPrintProps << {
    println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
    println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
    println('cdvVersionCode=' + cdvVersionCode)
    println('cdvMinSdkVersion=' + cdvMinSdkVersion)
    println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
    println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile)
    println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
    println('cdvBuildArch=' + cdvBuildArch)
    println('computedVersionCode=' + android.defaultConfig.versionCode)
    if (android.productFlavors.has('armv7')) {
        println('computedArmv7VersionCode=' + android.productFlavors.armv7.versionCode)
    }
    if (android.productFlavors.has('x86')) {
        println('computedx86VersionCode=' + android.productFlavors.x86.versionCode)
    }
}

android {
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }
    }

    defaultConfig {
        versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0")
        if (cdvMinSdkVersion != null) {
            minSdkVersion cdvMinSdkVersion
        }
    }

    compileSdkVersion cdvCompileSdkVersion
    buildToolsVersion cdvBuildToolsVersion

    if (Boolean.valueOf(cdvBuildMultipleApks)) {
        productFlavors {
            armv7 {
                versionCode cdvVersionCode ?: defaultConfig.versionCode + 2
                ndk {
                    abiFilters "armeabi-v7a", ""
                }
            }
            x86 {
                versionCode cdvVersionCode ?: defaultConfig.versionCode + 4
                ndk {
                    abiFilters "x86", ""
                }
            }
            all {
                ndk {
                    abiFilters "all", ""
                }
            }
        }
    } else if (!cdvVersionCode) {
      def minSdkVersion = cdvMinSdkVersion ?: privateHelpers.extractIntFromManifest("minSdkVersion")
      // Vary versionCode by the two most common API levels:
      // 14 is ICS, which is the lowest API level for many apps.
      // 20 is Lollipop, which is the lowest API level for the updatable system webview.
      if (minSdkVersion >= 20) {
        defaultConfig.versionCode += 9
      } else if (minSdkVersion >= 14) {
        defaultConfig.versionCode += 8
      }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    if (cdvReleaseSigningPropertiesFile) {
        signingConfigs {
            release {
                // These must be set or Gradle will complain (even if they are overridden).
                keyAlias = ""
                keyPassword = "__unset" // And these must be set to non-empty in order to have the signing step added to the task graph.
                storeFile = null
                storePassword = "__unset"
            }
        }
        buildTypes {
            release {
                signingConfig signingConfigs.release
            }
        }
        addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release)
    }
    if (cdvDebugSigningPropertiesFile) {
        addSigningProps(cdvDebugSigningPropertiesFile, signingConfigs.debug)
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    debugCompile project(path: ":CordovaLib", configuration: "debug")
    releaseCompile project(path: ":CordovaLib", configuration: "release")
    // SUB-PROJECT DEPENDENCIES END
}

def promptForReleaseKeyPassword() {
    if (!cdvReleaseSigningPropertiesFile) {
        return;
    }
    if ('__unset'.equals(android.signingConfigs.release.storePassword)) {
        android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ')
    }
    if ('__unset'.equals(android.signingConfigs.release.keyPassword)) {
        android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: ');
    }
}

gradle.taskGraph.whenReady { taskGraph ->
    taskGraph.getAllTasks().each() { task ->
        if (task.name == 'validateReleaseSigning') {
            promptForReleaseKeyPassword()
        }
    }
}

def addSigningProps(propsFilePath, signingConfig) {
    def propsFile = file(propsFilePath)
    def props = new Properties()
    propsFile.withReader { reader ->
        props.load(reader)
    }

    def storeFile = new File(props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile'))
    if (!storeFile.isAbsolute()) {
        storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile())
    }
    if (!storeFile.exists()) {
        throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath())
    }
    signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias')
    signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword))
    signingConfig.storeFile = storeFile
    signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword))
    def storeType = props.get('storeType', props.get('key.store.type', ''))
    if (!storeType) {
        def filename = storeFile.getName().toLowerCase();
        if (filename.endsWith('.p12') || filename.endsWith('.pfx')) {
            storeType = 'pkcs12'
        } else {
            storeType = signingConfig.storeType // "jks"
        }
    }
    signingConfig.storeType = storeType
}

for (def func : cdvPluginPostBuildExtras) {
    func()
}

// This can be defined within build-extras.gradle as:
//     ext.postBuildExtras = { ... code here ... }
if (hasProperty('postBuildExtras')) {
    postBuildExtras()
    }