Помилка ': app: lintVitalRelease' під час генерації підписаного apk


238

Я намагався завантажити apk під час google play і зіткнувся з повідомленням про помилку: "Ви завантажили налагоджуваний APK. З міркувань безпеки вам потрібно відключити налагодження, перш ніж його можна буде опублікувати в Google Play. Дізнайтеся більше про налагоджувані APK."

Потім я написав android:debuggable="false"у своєму маніфесті та спробував ще раз. Я зіткнувся з тією ж помилкою, тому я встановив варіант збірки з мого модуля на випуск та спробував знову створити apk, але цього разу ця помилка генерується:

Error:Gradle: Execution failed for task ':app:lintVitalRelease'.
Lint found fatal errors while assembling a release target.
  To proceed, either fix the issues identified by lint, or modify your build script as follows:
  ...
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }
  ...

38
Усі відповіді здаються або не для перевірки на помилки, або не для переривання помилок, але як бути з пошуком проблеми та її виправленням ??? Android Studio не показує жодної інформації про те, що не так ... Хтось зміг це виправити за допомогою ігнорування помилок?
Федеріко Альварес

stackoverflow.com/questions/43203415/… перейдіть на цю сторінку з відповіді. його робота для мене
Халім Безек

5
"а як же знайти проблему та виправити її ???" Я думав так само, але я завжди не помічав вкладку "Результати перевірки" на нижній панелі, а також будував \ вміст папки звіт. Будь ласка, перевірте.
PravyNandas

1
папка складання / звіт - дуже хороша порада. Для мене проблема бракувала перекладів, і це було зрозуміло з html-звіту.
Піт

на google про помилку дають вам рішення, чому ви не спробували це ???? спочатку спробуйте зрозуміти помилку, а також повідомлення про помилку
Mafujul

Відповіді:


393

Я б не рекомендував вимикати чеки, вони там є чомусь. Натомість перевірте, у чому полягає помилка, і виправте її.

Звіт про помилку зберігається в [app module]/build/reports/lint-results-yourBuildName-fatal.html. Ви можете відкрити цей файл у браузері, щоб прочитати про помилки.

Було б добре, якби Gradle міг зробити це трохи зрозуміліше, де генерується звіт про помилки.


8
Погодьтеся, набагато краще виправити помилку! Крім того , можна створити звіт вручну gradlew lintабо з допомогою IDE, см developer.android.com/studio/write/lint
Anigif

3
так, правильний напрямок. Більше того, звіт про помилки в тому html був добре описаний, і помилки були усунені нормально, тому я просто виправив їх легко!
CodeToLife

6
так, це дуже дратує, коли це говорить, fix the issues identified by lintале насправді не показує тих помилок або шлях до звіту ...
user25

7
Це має бути прийнятою відповіддю. Відключення ворсу не є хорошим рішенням.
slhddn

1
в моєму випадку помилка була MissingTranslation: Incomplete translation- питання для Google: чому це не відображається в Android Studio ?? Це називається integrated development environmentпричиною.
Хтось десь

187

У мене була ця проблема і я її вирішив, додавши:

lintOptions { 

    checkReleaseBuilds false

}

до мого build.gradleфайлу в android{ }розділі.       


Це не має ніяких інших побічних ефектів щодо права програми?
відданийандрейдер

10
Ні, вимкнення ворсу не спричинить жодних побічних ефектів у застосуванні. Lint - це інструмент аналізу коду, і помилка, згадана тут, викликана встановленням властивості налагодження, може детально переглядатись у файлі "lint-results-release-fatal.html" у папці build / output.
error1337

Не вдалося додати розділ android {} до мого файлу build.grade верхнього рівня; тому дотримувався деяких інших порад і додав це до мого файлу build.grade на рівні програми, тобто однієї папки далі вниз, де вже був розділ Android.
Мартін Заске

13
Попередження: Це просто вимикає перевірку на підошву. Було б краще принаймні поглянути на помилки, перш ніж їх вимикати. У моєму випадку мова йшла про деякі відсутні рядки для певних мов. Натисніть "Аналізувати" -> "Перевірити код .."
Маркус

2
Я не рекомендую цього. У моєму випадку ігнорування цих попереджень може спричинити збої під час виконання, спричинені відсутніми ресурсами. Перегляньте lint-results-release-fatal.html і виправте всі проблеми.
Paweł Nadolski

76

якщо ви хочете дізнатися точну помилку, перейдіть до наступного шляху у вашому проекті: /app/build/reports/lint-results-release-fatal.html(or .xml). Найпростіший спосіб - якщо ви перейдете до файлу xml, він точно покаже, у чому полягає помилка, включаючи її положення про помилку у вашому класі або java, або у файлі xml. Вимкнути чекові чеки - це не дуже гарна ідея, вони там є чомусь. Замість цього перейдіть до:

    /app/build/reports/lint-results-release-fatal.html or 
    /app/build/reports/lint-results-release-fatal.xml

і виправити це.


2
Це краще, ніж просто ігнорувати помилки і рухатися далі. І HTML-файл так легко зрозуміти проблему.
Джон Панг

Я знайшов проблему в /app/build/reports/lint-results-release-fatal.xml. спасибі
Bukunmi

Рятувальник життя. Проблема вирішена буквально за секунди після перегляду файлу xml.
Роман Розенштейн

50

Переконайтеся, що ви визначили всі переклади у всіх string.xmlфайлах


1
це була моя проблема .... додати пропущені переклади виправити проблему спасибі
Hatem Badawi

Для мене працювали деякі переклади.
Himanshu Rawat

40

У випадку, якщо ви можете спробувати знайти, де проблема, я знайшов шахту в наступному шляху мого проекту: /app/build/reports/lint-results-release-fatal.html (або .xml).

Сподіваюсь, це допомагає!


обидва файли для мене порожні.
m9m9m

35

Я зіткнувся з тією ж проблемою, коли створював підписані apk від android studio. Я просто міняю трохи змінити файл build.gradle всередині Android {}

lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

Це працювало для мене. У мене було подібне питання. Не вдалося виконати завдання ": app: lint *** Release". > org.picocontainer.MutablePicoContainer.registerComponentInstance (Ljava / lang / Object;) Lorg / picocontainer / ComponentAdapter;
Нельсон Рамірес

24

Як знайти деталі помилок

Anylyze -> Перевірити код

введіть тут опис зображення

Тоді в результатах перевірки ви побачите помилку

введіть тут опис зображення

У моєму випадку збірка не вдалася через невирішені посилання javadoc у Google IAP 😐


3
Це має бути прийнятою відповіддю. Для всіх людей, які запропонували відключити перевірку волосинок, це просто робота. Ще краще виправити помилку, ніж пропустити її. Пропуск перевірок на обличчя слід проводити лише в дуже конкретних випадках і не весь час. ПРОТИ, ЩО РОБИТИ РІДНО ІЛИ ВСІМ.
Арчі Г.

20
***Try this***

 buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            signingConfig signingConfigs.release
        }
    }

18

Ви можете знайти більше інформації про вибір збирання з вкладки збірки gradle:введіть тут опис зображення


5
це фактична відповідь, перейдіть до збірки в додатку, у вікні gradle та запустіть його подвійним клацанням, студія Android розповість вам, що саме з'являлось.
Вадід Алі

1
О боже ... дякую! Цей врятував мені багато часу! : D
thinklinux

Я отримав, lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false }і я додав це, але я отримував одну і ту ж помилку щоразу, коли
Олівер Д

11

Спробуйте ці 3 рядки у вашому файлі app.gradle.

android {
lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

@justColbs може виникнути з іншою проблемою. Опублікувати свою проблему з котом журналу може бути одним із правильних інструкцій.
Рехан Сарвар

8

Моя проблема полягала у відсутності перекладу. У мене був settings.xml, який не був перекладений, оскільки він не був потрібний, тому мені довелося додати до рядків "translatable =" false ":

Цей рядок не потребує перекладу


8

Здрастуйте, хлопці, це працювало для мене, я просто змінюю свої типу BuildType таким чином:

buildTypes {
        release {
            android {
                lintOptions {
                    checkReleaseBuilds false
                    // Or, if you prefer, you can continue to check for errors in release builds,
                    // but continue the build even when errors are found:
                    abortOnError false
                }
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

7

Просто знайдіть причину помилки тут і виправте її.

yourProject/app/build/reports/lint-results-release-fatal.xml

1
ви повинні знати, яка точна помилка та повторно підтвердити. спасибі.
Асеша Георгій

Я знайшов TargetSdkVersion No Longer Supported: Google Play requires that apps target API level 26 or higher.у своєму журналі, тобто не можу встановити targetSdkVersion25.
Фрукт

6

Моя проблема полягала у відсутності перекладу. У мене був settings.xml, який не був перекладений, оскільки він не був потрібний, тому мені довелося додати до рядків "translatable =" false ":

<string translatable="false" name="stringname">This string doesn't need translation</string>

4

Як багато хто запропонував, завжди краще спробувати виправити помилку з джерела. перевірити файл, що генерується

/app/build/reports/lint-results-release-fatal.html

прочитайте файл, і ви будете орієнтовані на те, звідки походить помилка. Перевірте моє: помилка сталася через неправильне обмеження перегляду.


4

Вирішіть цю проблему, використовуючи цей файл у build.gradle (додаток) Файл Всередині основного Android {inside}

  buildTypes {
      //  crunchPngs false // or true   when png error
        release {
            lintOptions {
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

3

Спробуйте нижче код

buildTypes {
    release {
        lintOptions {
            disable 'MissingTranslation'
            checkReleaseBuilds false
            abortOnError false
        }
        minifyEnabled false
        signingConfig signingConfigs.release
    }
}

3

введіть тут опис зображення

Додайте це всередину Android {} build.gradle (Модуль: Додаток)

lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

2

Windows -> довідки -> Android-> перевірка помилок на увазі.

зняти галочку Запустити повну помилку .......

введіть тут опис зображення


1
Дуже красиво, але звідки це вікно, будь ласка? Я не зміг його знайти в Android Studio ...
Martin Zaske

2

Перейдіть на build.gradle (Модуль: додаток)

lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

1

Вилучіть цю заяву зі свого маніфесту цілком, Eclipse буде справляти це з вами на льоту.


0

Ви повинні додати код до файлу gradle рівня проекту, щоб генерувати перезапис apk над помилками


0

У моєму випадку проблема стосувалася мінімального цільового рівня API, необхідного Google Play. Було встановлено менше 26.

Проблема зникла, коли я встановив мінімальний цільовий рівень API на 26.



-2

Якщо ви додасте в app.gradle під Android {

lintOptions {

    quiet true
    abortOnError false
}

}

Це отримає роботу


Я думаю, що краще виправити натяки та помилки, якщо можливо, замість того, щоб пропустити чек
П'єро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.