2016-06-22 4 views
5

Вот что. У меня есть приложение, которое совместимо с API 15 и выше, но поскольку оно довольно большое, и я уже достиг предела 65 тыс. Методов, мне пришлось сделать его потомком класса MultiDexApplication. Это немного замедляет время сборки, поэтому мне пришлось реализовать некоторую оптимизацию, чтобы ускорить процесс. У меня есть следующий код в моем манифесте, что значительно сократить время сборки при сборке для API> = 21 (взято из какого-то другого SO нить):Android Studio Lint - набор уровней API для lint

productFlavors { 
     dev { 
      minSdkVersion 21 
     } 
     prod { 
      minSdkVersion 15 
     } 
    } 

Все прекрасно работает, но проблема заключается в том, что в процессе разработки , Студия Android думает, что мой уровень SDS miniSdkVersion равен 21 (правильно), и lint не показывает мне несовместимый API (15-21). То, что я действительно хочу, - это построить с помощью minSdkVersion, установленного на 21 (быстрая сборка), но установите «lint minSdkVersion» на 15, поэтому я вижу части кода, которые не совместимы со старым API, чем 21. Я попытался это сделать, а также посмотреть в предпочтения AS lint, но я не нашел ничего полезного. Спасибо за любые предложения. Мое текущее решение - переключить minSdkVersion в dev-аромат на 21 и проверить, есть ли какая-либо ошибка, но это не совсем то, что я хочу.

+0

Для справки это на андроид отслеживания проблем в наступающей особенности: https://code.google.com/p/android/issues/detail?id=200347 – Gak2

ответ

4

This gist отвечает на ваш вопрос. Он показывает, как построить проект с любым минимальным значением SDK, но при этом поддерживать минимальное значение SDK для производства для предупреждений Lint.

Резюмируя пост, вы можете динамически вычислить значение minSdkVersion:

int minSdk = hasProperty('devMinSdk') ? devMinSdk.toInteger() : 15 
apply plugin: 'com.android.application' 

android { 
    ... 
    defaultConfig { 
     minSdkVersion minSdk 
     ... 
    } 
} 

В этом примере мы проверка, если devMinSdk свойство определено, и если это правда - мы используем его. В противном случае мы по умолчанию равны 15.

Как передать значение devMinSdk для создания скрипта? Два варианта:

Использование командной строки:

./gradlew installDebug -PdevMinSdk=21 

Использование Android Студийные предпочтения:

Перейти к Preferences (Настройки на Windows) ->сборки, исполнения, Развертывание ->Компилятор -> положить -PdevMinSdk=21 в Параметры командной строки текстовое поле.

Android Studio compiler options

+1

это немного странно это не встроенный в AS. Большое спасибо! – vanomart

+1

Нелегко понять, почему это работает. Похоже на ошибку AS. –

Смежные вопросы