2017-08-13 40 views
7

Tôi nhận traceback sau khi tôi chuyển sang Android studio 3,0Android Studio 3.0 - Gradle Sync thất bại cho externalNativeBuild

* What went wrong: 
Could not determine the dependencies of task ':celltower:compileExternalNativeBuildJavaWithJavac'. 
> Could not resolve all task dependencies for configuration ':celltower:externalNativeBuildCompileClasspath'. 
    > Could not resolve project :commonandroidutils. 
    Required by: 
     project :celltower 
     > Unable to find a matching configuration of project :commonandroidutils: 
      - Configuration 'debugApiElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'. 
      - Configuration 'debugRuntimeElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'. 
      - Configuration 'releaseApiElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'. 
      - Configuration 'releaseRuntimeElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'. 
    > Could not resolve project :wimtutils. 
    Required by: 
     project :celltower 
     > Unable to find a matching configuration of project :wimtutils: 
      - Configuration 'debugApiElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'. 
      - Configuration 'debugRuntimeElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'. 
      - Configuration 'releaseApiElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'. 
      - Configuration 'releaseRuntimeElements': 
       - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'. 
       - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'. 
       - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required. 
       - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'. 

build.gradle của tôi là ở đây.

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.1" 

    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 

     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     externalNativeBuild { 
      ndkBuild { 
      } 
     } 

     ndk { 
//   abiFilters "armeabi-v7a", "x86" 
      abiFilters "armeabi-v7a" 
      moduleName "HelloJNI" 
      //ldLibs.addAll(["android", "log"]) 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     debug { 
      debuggable true 
      minifyEnabled false 

      ndk { 
       abiFilters "armeabi-v7a", "x86" 
       moduleName "HelloJNI" 
      } 
     } 
     externalNativeBuild { 
      ndkBuild { 
       path "src/main/jni/Android.mk" 
      } 
     } 
    } 

    buildTypeMatching 'debug', 'release' 

    compileOptions { 
     targetCompatibility 1.8 
     sourceCompatibility 1.8 
    } 
} 

ext { 
    retrofitVersion = '2.1.0' 
    rxJavaVersion = '1.2.1' 
    rxAndroidVersion = '1.2.1' 
    okHttpVersion = '3.4.1' 
    playServicesVersion = '9.8.0' 
    fireBaseVersion = '9.8.0' 
    daggerVersion = '2.7' 
    appCompatV7Version = '26.0.1' 
} 

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    implementation "com.android.support:support-annotations:$appCompatV7Version" 
    implementation 'com.google.code.gson:gson:2.7' 
    testImplementation 'junit:junit:4.12' 
    implementation 'com.squareup.retrofit:retrofit:1.9.0' 
    implementation 'com.jakewharton.retrofit:retrofit1-okhttp3-client:1.0.2' 
    implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" 
    implementation "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion" 
    implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion" 
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:+' 
    implementation project(':commonandroidutils') 
    implementation project(':wimtutils') 
} 

Mọi trợ giúp đều được đánh giá cao!

Trả lời

2

Tôi đã chuyển ra ngoàiNativeBuild bên ngoài tệp buildTypes và đặt nó dưới Android. Nó bắt đầu hoạt động.

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

      ndk { 
       abiFilters "armeabi-v7a", "x86" 
       moduleName "HelloJNI" 
      } 
     } 
    } 

    externalNativeBuild { 
     ndkBuild { 
      path "src/main/jni/Android.mk" 
     } 
    } 

    buildTypeMatching 'debug', 'release' 
... 
.... 
} // end of android 
0

Hãy thử thay thế implementation với api chỉ dành cho hai phụ thuộc dự án cuối cùng:

  1. commonandroidutils
  2. wimutils

Tài liệu nói rằng:

Các phụ thuộc là có sẵn cho các mô-đun lúc biên dịch thời gian, và nó cũng có sẵn cho người tiêu dùng của mô-đun tại thời gian biên dịch và thời gian chạy. Cấu hình này hoạt động giống như compile (hiện không còn được dùng nữa) và bạn chỉ nên sử dụng cấu hình này trong các mô-đun thư viện . Mô-đun ứng dụng nên sử dụng implementation, trừ khi bạn muốn hiển thị API của nó cho mô-đun thử nghiệm riêng biệt.

Tham chiếu: Migrate to Android Plugin for Gradle 3.0.0

Không chắc chắn, nhưng hãy thử. Hy vọng nó giúp.

0

Tôi không chắc chắn về điều này là có thể. Dường như bạn có sự không khớp giữa chính plugin Gradle và các phụ thuộc của nó cung cấp lớp WaitableExecutor.

Tuy nhiên bạn đề cập đến Gradle 1.5 và đây là một vấn đề.

Các phiên bản plugin 0.3 là tương thích với Gradle 1,3-1,4 Phiên bản mới phát hành tuần trước, 0.4 tương thích với Gradle 1.6 +

Hãy chắc chắn rằng bạn sử dụng 0.4 và phiên bản Gradle mới.

Các vấn đề liên quan