Какова правильная конфигурация проекта для N Developer Preview?

Документы утверждают, что build.gradle работает следующим образом:

android {
  compileSdkVersion 'android-N'
  buildToolsVersion 24.0.0
  ...

  defaultConfig {
     minSdkVersion 'N'
     targetSdkVersion 'N'
     ...
  }
  ...
}

Это дает мне failed to find Build Tools revision 24.0.0 при использовании 'com.android.tools.build:gradle:1.5.0' для Android Plugin для Gradle и Gradle 2.5.

Если я посмотрю build-tools/ в моей установке Android SDK, я вижу 24.0.0-preview, а не 24.0.0. Однако, если я переключу свой build.gradle на использование buildToolsVersion "24.0.0-preview", я получаю Invalid revision: 24.0.0-preview.

Итак, какая комбинация значений build.gradle работает, чтобы собрать проект для компиляции с N Developer Preview SDK?

Ответ 1

На основе одного из примеров приложений, я теперь использую:

  • Gradle 2.10
  • 'com.android.tools.build:gradle:2.1.0-alpha1' для Android Plugin для Gradle (входит в ваш файл верхнего уровня build.gradle)
  • buildToolsVersion "24.0.0 rc1"

Это, похоже, держится, в том числе и с Android Studio 1.5.1.

UPDATE. Теперь, когда N Developer Preview 4 был выпущен, мы можем начать использовать 24 вместо "N" и "android-N":

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 24
    }
}

Ответ 2

Я считаю, что проблема возникла из-за использования buildToolsVersion 24.0.0.

В соответствии с официальным руководством по настройке, используйте:

  compileSdkVersion 'android-N'
  buildToolsVersion '24.0.0 rc1'

  defaultConfig {
    minSdkVersion 'N'
    targetSdkVersion 'N'
    ...
  }

Обратите внимание, что minSdkVersion кроме "N" также работает, но вам все равно придется использовать устройство "N" для запуска вашего приложения.

Gradle 2.4 работает для меня. Также вам не нужно использовать 'com.android.tools.build: gradle: 2.1.0-alpha1', как упоминается в предпросмотре samples. Использование classpath 'com.android.tools.build:gradle:1.5.0' также работает.

 dependencies {
     classpath 'com.android.tools.build:gradle:1.5.0'
     ...
 }

Не забудьте получить Java 8 JDK и JRE. Требуется заставить его работать над "N" , но вы можете установить sourceCompatibility JavaVersion.VERSION_1_7 и targetCompatibility JavaVersion.VERSION_1_7, если не используете функции Java 8.

Примечание. Использование новых функций языка Java 8 не является обязательным требованием для разработки приложений, ориентированных на платформу Android N. Если вы не хотите писать код с языковыми функциями Java 8, вы можете сохранить исходный код проекта и целевые значения совместимости, установленные для Java 7, но вы все равно должны скомпилировать JDK 8 для сборки против платформы Android N.

Подробнее о Java 8 Language Features.

Ответ 3

Кажется, я очень хорошо катаюсь с этой конфигурацией в новом проекте с PixelC:

android {
    compileSdkVersion 'android-N'
    buildToolsVersion '24.0.0 rc4'

    lintOptions {
        abortOnError false
    }


    defaultConfig {
        minSdkVersion 'N'
        targetSdkVersion 'N'

        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

...
}

Ответ 4

На основе Пример проекта вы должны использовать

android {
    compileSdkVersion 'android-N'
    buildToolsVersion '24.0.0 rc1'

    defaultConfig {
        applicationId "com.android.multiwindowplayground"
        minSdkVersion 'N'
        targetSdkVersion 'N'
  ....

    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
  • Предварительный просмотр Android Studio 2.1
  • Используйте gradle -2.10-all.zip
  • com.android.tools.build:gradle:2.1.0-alpha1 для Android-плагина для Gradle (идет в файле build.gradle верхнего уровня)
  • buildToolsVersion "24.0.0 rc1"
  • Выберите N: Android API 23, N Preview (Предварительный просмотр). Он работает для меня.

Ответ 5

Проблема заключается в том, что вы не можете поместить minSdkVersionless, чем "N". если вы помещаете меньшую версию или получаете ошибку или используете только +23 устройства.