2015-08-08 3 views
3

Я изо всех сил пытаюсь использовать внешнюю библиотеку в Android Studio 1.3, Gradle 2.5 и gradle-experimental plugin 0.2.0, требуемый из-за NDK.Android gradle-experimental 0.2.0 add res and aidl

Я нашел материал here о том, как изменить старые файлы градиента, которые я сделал, но не могу найти никакой другой документации.

Во время моего широкого поиска мне удалось выяснить изменения для манифеста, но не для res и aid. Кто-нибудь смог выяснить, что нужно изменить или какую-либо полезную документацию?

apply plugin: 'com.android.model.library' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle-experimental:0.2.0' 
    } 
} 

model { 
    android { 
     compileSdkVersion = 19 
     buildToolsVersion = "19.1.0" 

     defaultConfig.with { 
      applicationId = "org.opencv.android" 
      minSdkVersion.apiLevel = 8 
      targetSdkVersion.apiLevel = 19 
      versionCode = 3000 
      versionName = "3.0.0" 
     } 
    } 

    android.sources { 
     main { 
      manifest.source.include 'AndroidManifest.xml' // OLD manifest.srcFile 'AndroidManifest.xml' 
      java.source.srcDir 'src' 
      resources.source.srcDirs 'src' 
      res.srcDirs = ['res'] // ERROR 
      aidl.srcDirs ['src'] // ERROR 
     } 
    } 
} 

Ошибки:

Gradle синхронизации не удалось: Не удалось найти свойство 'srcDirs' на AndroidLanguageSourceSet 'главном: aidl'.

Ошибка синхронизации по градлу: не удалось загрузить класс 'com.android.build.gradle.model.AndroidLanguageSourceSet_Decorated'.

+0

Я не знаю, исправляет ли он вашу проблему, но, возможно, попробуйте 'res.srcDirs + = ['res']'? – zserge

+0

Сообщение об ошибке теперь совпадает с первым. Спасибо, в любом случае. Не удалось найти синхронизацию Gradle: не удалось найти свойство 'srcDirs' на AndroidLanguageSourceSet 'main: res'.' –

+1

Hm .. Похоже, что теперь они все одного типа (AndroidLanguageSourceSet). Таким образом, один и тот же синтаксис может работать для всех: 'java.source.srcDirs + = 'src/main/java'',' res.source.srcDirs + =' src/main/res'', 'aidl.source.srcDirs + = 'src/main/aidl'' (работал в моем случае) ' – zserge

ответ

1

Некоторые отладки с println показывает, что java, res, aidl имеют тип AndroidLanguageSourceSet. Все они имеют то же самое свойство source, и srcDirs список внутри этого. Вы должны иметь возможность добавить свои собственные пути к свойству srcDirs как:


android.source { 
    main { 
    java.source.srcDirs += 'src' 
    res.source.srcDirs += 'res' 
    aidl.source.srcDirs += 'aidl' 
    } 
} 

Не забудьте использовать = в новом синтаксисе, чтобы установить значение и +=, чтобы добавить его в список (в старом синтаксисе просто пробела было достаточно).