2016-02-12 1 views
12

У меня есть Android проект, определяющийКак установить severityOverrides в lintOptions?

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     // Android plugin for gradle 
     // http://google.github.io/android-gradle-dsl 
     classpath 'com.android.tools.build:gradle:1.5.0' 

     // ... 

В моем приложении я хочу установить

android { 
    // ... 

    lintOptions { 
     // http://google.github.io/android-gradle-dsl/1.5/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:severityOverrides 
     severityOverrides { 
      ["MissingTranslation": "warning"] 
     } 

     // ... 

, но я получаю ошибку

Error:(34, 0) Gradle DSL method not found: 'severityOverrides()' Possible causes: The project 'android' may be using a version of Gradle that does not contain the method.

Что такое правильный способ установить severityOverrides?


Версии, что было компилировать, но не имеют желаемого эффекта на этапе :app:lintVitalRelease сборки:

import com.android.builder.model.LintOptions 
// ... 
severityOverrides ["MissingTranslation": LintOptions.SEVERITY_WARNING] 

и

import com.android.builder.model.LintOptions 
// ... 
severityOverrides.MissingTranslation = LintOptions.SEVERITY_WARNING 
+0

какая версия Gradle вы используете? – JBaruch

+0

@JBaruch Version 2.10, установленный в 'gradle/wrapper/gradle-wrapper.properties' –

+1

Связанные документы указывают, что тип должен быть картой строки и целого числа, поэтому второе значение должно быть целым числом или, более подходящим образом, перечислением из некоторые класс. – RaGe

ответ

10

Я хотел бы поделиться тем, что я делаю.

Вместо установленного значения severityOverrides вы можете вызвать один метод для каждого типа флага, который вы хотите установить.

lintOptions { 
    ignore "RtlEnabled", "RtlHardcoded", "RtlSymmetry" .... 
    warning "RtlEnabled", "RtlHardcoded", "RtlSymmetry" .... 
    error "RtlEnabled", "RtlHardcoded", "RtlSymmetry" .... 
    fatal "RtlEnabled", "RtlHardcoded", "RtlSymmetry" .... 
    informational "RtlEnabled", "RtlHardcoded", "RtlSymmetry" .... 
} 

В вашем случае, вы можете сделать:

lintOptions { 
    warning "MissingTranslation" 
} 

Я не уверен, если вы можете вручную установить severityOverrides, так как это только для чтения свойство.

Так что, я думаю, что вы действительно должны позвонить по одному из указанных выше способов (ошибка, фатальный и т.д ..), чтобы переопределить свойство, которое вы хотите

+1

Это должен быть признанный ответ! – vRallev

+1

Согласен с vRallev – Bipi

2

Map<String, Integer> severityOverrides

Документы, связанные сказать, что type for severityOverrides должен быть Map<String, Integer>, когда вы используете две строки. Кроме того, severityOverrides не кажется, что метод, но свойство вместо этого, так что вы должны выйти из фигурных скобок {} Что дает вам:

import com.android.builder.model.LintOptions 
lintOptions { 
    severityOverrides ["MissingTranslation": LintOptions.SEVERITY_WARNING] 
} 
+0

Ошибка остается прежней. Является ли настройка с помощью '{[...]}' даже правильной? Является ли severityOverrides «методом»? Когда я использую 'severityOverrides = [" MissingTranslation ": LintOptions.SEVERITY_WARNING]' I get * Ошибка: (37, 0) Не удалось найти свойство LintOptions на [email protected]f33. * –

+0

Не метод, я бы упустил '{}'. Вам также может потребоваться импортировать 'LintOptions' или использовать полное имя. – RaGe

+0

'com.android.builder.model.LintOptions.SEVERITY_WARNING' – RaGe

3

(не ответ-ответ, но это то, что я использовал в качестве эквивалентная замена, когда я не мог получить lintOptions.severityOverrides для работы)

Отбросьте файл lint.xml с той же конфигурацией в корневом модуле.

<?xml version="1.0" encoding="UTF-8" ?> 
<lint> 
    <issue id="MissingTranslation" severity="warning" /> 
</lint> 

Вы также можете получить более богатый API для настраивать линт предупреждения через lint.xml.

+0

Сделал работу для меня сейчас, спасибо –

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