webrtc native API 'vectorDrawable' & 'Task' 同步时出错 build.grandle

webrtc native API 'vectorDrawable' & 'Task' error when sync build.grandle

首先:我将 'off topic' post 中的这些问题复制并粘贴到 android 发烧友中。有人建议我在这里问这些。

我尝试在我的棒棒糖设备上安装包含官方存储库的 AppRTCMobile 示例。

我在 grandle.build 文件上发现了第一个小错误(没有关闭 “}”)。实际上我在我的日志文件中获得了这些错误:

WARN - ect.sync.idea.ProjectSetUpTask - Could not get unknown property     

    'vectorDrawables' for source set default config of type com.android.build.gradle.internal.api.DefaultAndroidSourceSet.

Consult IDE log for more details (Help | Show Log) 
2018-02-13 13:07:01,478 [d thread 6]   INFO - e.project.sync.GradleSyncState - Gradle sync failed: Could not get unknown  property 'vectorDrawables' for source set default config of type com.android.build.gradle.internal.api.DefaultAndroidSourceSet.

我的 build.grandle 结果是:

// Generated by //build/android/generate_gradle.py

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com'
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:3.1.0-alpha08"
    } }

我的示例 AppRTCMobile build.grandle 结果如下:

// Generated by //build/android/generate_gradle.py

apply plugin: "com.android.application"

android {
    compileSdkVersion "android-27"
    buildToolsVersion "27.0.1"

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

sourceSets {
    main {
        aidl.srcDirs = []
        assets.srcDirs = []
        java.srcDirs = []
        jni.srcDirs = []
        renderscript.srcDirs = []
        res.srcDirs = []
        resources.srcDirs = []
    }
    test {
        aidl.srcDirs = []
        assets.srcDirs = []
        java.srcDirs = []
        jni.srcDirs = []
        renderscript.srcDirs = []
        res.srcDirs = []
        resources.srcDirs = []
    }
    androidTest {
        aidl.srcDirs = []
        assets.srcDirs = []
        java.srcDirs = []
        jni.srcDirs = []
        renderscript.srcDirs = []
        res.srcDirs = []
        resources.srcDirs = []
    }
    debug {
        aidl.srcDirs = []
        assets.srcDirs = []
        java.srcDirs = []
        jni.srcDirs = []
        renderscript.srcDirs = []
        res.srcDirs = []
        resources.srcDirs = []
    }
    release {
        aidl.srcDirs = []
        assets.srcDirs = []
        java.srcDirs = []
        jni.srcDirs = []
        renderscript.srcDirs = []
        res.srcDirs = []
        resources.srcDirs = []
    }

    main {
        manifest.srcFile "../../../../../examples/androidapp/AndroidManifest.xml"
        java.srcDirs = [
            "extracted-srcjars",
        ]
        java.filter.exclude(
        )
        jniLibs.srcDirs = [
            "symlinked-libs",
        ]
        res.srcDirs = [
            "extracted-res",
        ]
    }




    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    } }


dependencies {
    implementation project(path: ":examples.AppRTCMobile_javalib")
    implementation project(path: ":rtc_base.base_java")
    implementation project(path: ":base.base_java")



} afterEvaluate {
    def tasksToDisable = tasks.findAll {
        return (it.name.equals('generateDebugSources')  // causes unwanted AndroidManifest.java
                || it.name.equals('generateReleaseSources')
                || it.name.endsWith('BuildConfig')  // causes unwanted BuildConfig.java
                || it.name.equals('preDebugAndroidTestBuild')
                || it.name.endsWith('Aidl')
                || it.name.endsWith('Renderscript')
                || it.name.endsWith('Shaders'))
    }
    tasksToDisable.each { Task task ->
      task.enabled = false
    } }

为什么会出现这些错误?我在 AppRTCMobile 上的 buld.grandle 有误或包含一些错误??

更新:

我尝试清除项目并仅导入 AppRTCMobile 示例....仅关于 vectorDrawable 的多个错误: 选择 1) 在项目的每个构建文件中注释掉 "vectorDrawables.useSupportLibrary = true" 行。 选择 2) 使用正确的库(超过 23.x)并将最小支持 sdk api 设置为 21 而不是 16。

我用的是选1)。导致这些错误:

/home/myoffice/chromium/src/out/DebugArm/gradle/examples/AppRTCMobile/build/generated/source/r/debug/org/appspot/apprtc/R.java
Error:(10, 14) error: duplicate class: org.appspot.apprtc.R

显然重构 class 不起作用。这些错误类型从何而来?

问候 bkt

您必须在应用级别 gradle 文件中编写这行代码。

enter code here defaultConfig {
    applicationId "com.a3dapp"
    minSdkVersion 15
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    vectorDrawables.useSupportLibrary = true

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

grandle 脚本文件部分: grandle-wrapper.properties 文件更改为:

#Thu Nov 16 19:42:05 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

build.grandle(项目.....) 文件:

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

buildscript {

    repositories {
        google()
        jcenter()
    }
    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
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

build.grandle(应用程序)文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "org.appspot.apprtc"
        minSdkVersion 18
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets.main {
        jniLibs.srcDir 'libs'
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    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'
}

在这些错误消失之后......但没有在我的设备棒棒糖上测试,因为我不是java中的天才,我已经分叉了另一个项目并检查了为什么它在webrtc 官方编号所以现在在我的棒棒糖上 运行 fork 项目 + 我所有的更改,我不再尝试 webrtc 官方示例,否则对我的应用程序来说太丰富了无用的东西。 在这些之后 Android Studio 现在接受同步和 运行 webrtc wxample 官方。

p.s。真的很抱歉我迟到的回复...但我星期五才离开办公室。

问候 bkt