设置即时应用时出错

时间:2018-02-04 12:24:49

标签: android gradle android-gradle android-instant-apps

我正在尝试对我的应用实施Android Instant Apps支持,并且我已按照本教程进行操作:

http://androidkt.com/instant-app/

一切都很完美,我已经成功完成了教程。

但是,我遇到了这个错误:

  

错误:FAILURE:构建因异常而失败。

     
      
  • 出了什么问题:任务执行失败':appapk:preDebugBuild'。 > Android依赖' com.android.support:support-v4'有不同的   用于编译(25.2.0)和运行时(27.0.1)类路径的版本。您   应通过DependencyResolution

  • 手动设置相同的版本   
  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获得全面的见解。

  •   
  • https://help.gradle.org

  • 获取更多帮助   
     

在1s内建立失败

我的项目定位到最新版本的Android( Android 8.1 API 27 ),因此,所有版本都应为27及以上版本。

我认为此错误是因为 com.android.support:support-v4 版本25.2.0 但是当我搜索整个项目时,我无法找到com.android.support:support-v4或任何25.2.0的文件。

如有必要,以下是我的gradle文件:

build.gradle(项目):

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {

        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'



        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.1.1'
    }
}

allprojects {
    repositories {
        mavenLocal()
        mavenCentral()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
            maven { url 'https://jitpack.io' }
        }



        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(模块:app-base):

apply plugin: 'com.android.feature'

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    baseFeature = true
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        multiDexEnabled true
        versionCode 3
        versionName "2.0.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}

dependencies {
    implementation 'com.android.support:support-v4:27.0.1'
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //compile 'android-support-v7-appcompat:25.0.1'

    implementation 'com.github.HITGIF:TextFieldBoxes:1.3.8'
    implementation 'com.google.firebase:firebase-database:11.8.0'
    implementation 'com.google.firebase:firebase-messaging:11.8.0'
    implementation 'com.google.firebase:firebase-crash:11.8.0'
    implementation 'com.google.firebase:firebase-ads:11.8.0'
    implementation 'com.google.android.gms:play-services-ads:11.8.0'
    implementation 'com.google.firebase:firebase-core:11.8.0'
    implementation 'com.google.firebase:firebase-auth:11.8.0'
    implementation 'com.google.android.gms:play-services:11.8.0'
    implementation 'com.android.support:design:24.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:cardview-v7:24.2.1'
    implementation 'com.android.support:customtabs:27.0.2'
    testImplementation 'junit:junit:4.12'
}


apply plugin: 'com.google.gms.google-services'

build.gradle(module:appapk):

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26



    defaultConfig {
        applicationId "tr.k12.evrim.evrimnews.app"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':app-base')
    implementation 'com.android.support:appcompat-v7:27.0.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

build.gradle(module:instantapp):

    apply plugin: 'com.android.instantapp'

android {
    buildToolsVersion "26.0.2"
}

dependencies {
    implementation project(':app-base')
}

1 个答案:

答案 0 :(得分:0)

参考google issue Tracker,我们能够使用与build.gradle文件相同的设置在应用中重现该问题。

在将基础的com.android.support:support-v4依赖关系从 implementation 更改为 成功编译 > api 正在更新 com.android.support:appcompat-v7:27.0.127.0.2

实施 api 之间的区别在于

implementation 不会将依赖项暴露给依赖它的其他模块,包括需要同步到更高版本的库(在本例中为25.xx到27)。

虽然 api 依赖关系将向该库的所有消费者公开。