Recompile with xlint android studio

Life of a software developer

by Vladimir Paskov

Recompile with -Xlint in Android studio

Staying out of deprecated methods is useful, so your app won’t run in some compatibility mode on the device. Plus having clean build output is also nice 🙂

While building an app, Gradle may produces some warnings telling you that some input files are using unchecked or unsafe operations or they are overriding a deprecated API.

Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details.

As the message suggest, we should recompile with -Xlint to get more details about the warnings.

In the app level build.gradle file

app level build.gradle file

we should add a section labelled allprojects<>(if not already present).

In the allprojects<> section we will instruct Gradle to apply custom compiler arguments for each task involving Java code compilation.

Источник

google_maps_flutter : Recompile with -Xlint:deprecation for details. & Some input files use unchecked or unsafe operations. #46837

Comments

zgramming commented Dec 12, 2019

Steps to Reproduce

After update the Latest Flutter with command flutter upgrade package google_maps_flutter give me warning every running the project .

Target Platform:

Android

Devices:

Redmi Note 4

Flutter analyze

Flutter doctor -v

The text was updated successfully, but these errors were encountered:

serkanince commented Jan 30, 2020

the same thing happens for me

flutter doctor -v

[√] Flutter (Channel stable, v1.12.13+hotfix.7, on Microsoft Windows [Version 10.0.17134.1130], locale en-US)
• Flutter version 1.12.13+hotfix.7 at C:\src\flutter
• Framework revision 9f5ff23 (3 days ago), 2020-01-26 22:38:26 -0800
• Engine revision a67792536c
• Dart version 2.7.0

[√] Android toolchain — develop for Android devices (Android SDK version 28.0.3)
• Android SDK at C:\Users\Serkan\AppData\Local\Android\Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = C:\Users\Serkan\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
• All Android licenses accepted.

[√] Android Studio (version 3.5)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 40.2.2
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)

Читайте также:  Verify if android rooted

[√] VS Code (version 1.41.1)
• VS Code at C:\Users\Serkan\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.7.1

[√] Connected device (1 available)
• Android SDK built for x86 64 • emulator-5554 • android-x64 • Android 9 (API 28) (emulator)

JayThadeshwar commented Feb 10, 2020

Even I am getting the warning after flutter upgrade

3mrdev commented May 4, 2020 •

Can you give the output of the build after adding this to your build.gradle ? it will give you more details about what is deprecated

If you identified which plugins are deprecated you can update them to the latest version .. Use Android Studio plugin «Flutter pub version checker» to help you with the latest version number

sterrenburg commented May 9, 2020

This happened to me after installing the barcode_scan package.

matszafraniec commented May 18, 2020

It is resolved? After I’ve added gradle.projectsEvaluated code to the build.gradle I’ve got this on output while compiling:

Flutter doctor output:

I’m using google_maps_flutter: ^0.5.27+3.

mpoirier101 commented Jul 29, 2020

Still same problem with google_maps plugin (google_maps_flutter: ‘>=0.5.27+3’) !
Is there someone looking into this ?
Thanks!

MBanawa commented Oct 3, 2020

running flutter pub upgrade after running flutter upgrade fixed it

darshankawar commented Apr 30, 2021

@zgramming
Is this still an issue using latest plugin version ?

mpoirier101 commented Apr 30, 2021

Latest version (2.0.3) gives me these messages:

Note: C:\Apps\flutter\.pub-cache\hosted\pub.dartlang.org\geocoding-2.0.0\android\src\main\java\com\baseflow\geocoding\GeocodingPlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\Apps\flutter\.pub-cache\hosted\pub.dartlang.org\google_maps_flutter-2.0.3\android\src\main\java\io\flutter\plugins\googlemaps\Convert.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\Apps\flutter\.pub-cache\hosted\pub.dartlang.org\google_maps_flutter-2.0.3\android\src\main\java\io\flutter\plugins\googlemaps\TileProviderController.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

Built with latest Flutter version (2.0.5).

luffy1012 commented May 21, 2021

Latest version (2.0.3) gives me these messages:

Note: C:\Apps\flutter\.pub-cache\hosted\pub.dartlang.org\geocoding-2.0.0\android\src\main\java\com\baseflow\geocoding\GeocodingPlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\Apps\flutter\.pub-cache\hosted\pub.dartlang.org\google_maps_flutter-2.0.3\android\src\main\java\io\flutter\plugins\googlemaps\Convert.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\Apps\flutter\.pub-cache\hosted\pub.dartlang.org\google_maps_flutter-2.0.3\android\src\main\java\io\flutter\plugins\googlemaps\TileProviderController.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.

Built with latest Flutter version (2.0.5).

Same message in Flutter stable version (2.2.0)

no-response bot commented May 21, 2021

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now.
If you find this problem please file a new issue with the same description, what happens, logs and the output of ‘flutter doctor -v’. All system setups can be slightly different so it’s always better to open new issues and reference the related ones.
Thanks for your contribution.

Источник

Использование Lint в Android Studio для проверки своего кода

Содержание

На практике в коде очень часто можно встретить очевидные ошибки, спустя какое-то время. Это может происходить из-за невнимательности при написании кода. Что бы свести такие ошибки к минимуму могут помочь статические анализаторы кода. Одним из таких анализаторов является Lint.

Lint — это статический анализатор кода, который сообщает о подозрительных или критических выражениях в коде. По факту это слово стало нарицательным и им называют анализаторы, которые сканируют код на наличие ошибок.

Читайте также:  Обои андроид с зонтиком

В Android Studio уже есть встроенные анализаторы кода, который дают подсказки “налету”.

Однако подсказки подсвечивают ошибки достаточно ненавязчиво и поэтому их легко пропустить. Но можно запустить проверку несколькими способами.

Способы запуска Lint.

Запуск через меню в Android Studio

Самый простой и удобный способ запуска проверки — это через Android Studio. Для этого в меню необходимо выбрать пункты Analyze -> Inspect Code. В появившемся окне можно ограничить область сканирования кода. Можно проверить весь проект, определённый модуль или отдельный взятый класс. На мой взгляд самый полезных из пунктов — это проверка не закоммиченых файлов. Так же можно выбрать профиль с набором правил для проверки.

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

Запуск через командную строку

Так же проверку можно запустить через gradle выполнив в консоли команду:

После проверки сформируется отчёт в формате html, который можно посмотреть по следующему пути:

Этот способ менее удобный чем первый, так как отчёт формируется в отрыве от студии и для правки ошибок нужно постоянно переключаться между отчётом и IDE. Зато этот способ прекрасно подходит для случаев если проверку осуществляется на сервере, а в случае обнаружение ошибок, прикреплять файл с отчётом к письму.

Запуск при сборке проекта.

Можно автоматизировать запуск проверки lint, который будет осуществлять при каждой сборке проекта. Для этого необходимо зайти в настройки запуска проекта:

Добавить следующую строку:

Этот способ менее предпочтительный так как значительно замедлит скорость сборки и разработки.

Настройка gradle сборки

Так же lint проверку можно настроить в gradle файле.

  • abortOnError: В случае обнаружение ошибки прекращается проверка.
  • warningsAsErrors: определяет предупреждения как ошибки.
  • lintConfig: путь к файлу проекта с настройками lint.

Если опция abortOnError включена, то при запуске сборки через gradle в случае обнаружении ошибки произойдёт исключение:

Настройка правил проверки lint

Отредактировать правила lint можно в настройках Android studio. Там же можно сделать отдельный конфигурационный профиль и использовать его.

Отключение проверки Lint с помощью анотаций в коде

Иногда бывают исключения, и может сложиться ситуация что необходимо отключить проверку какого-либо правила проверки для класса или метода. В Java коде это делается через аннотацию @SuppressLint(“NewApi”). В качестве параметра принимает строку названия проверки которую нужно исключить. Если нужно исключить все правила, то можно использовать следующую аннотацию:

Так же проверку можно обойти в xml файлах с помощью аттрибута tools:ignore=“NewApi,StringFormatInvalid”.

Выводы

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

Источник

Методы лечения различных ошибок в Android Studio при разработке проекта

Сегодня хотел бы поделиться своим анализом и способами лечением разных ошибок при разработке своего продукта в Android Studio. Лично я, не раз сталкивался с различными проблемами и ошибками при компиляции и/или тестировании мобильного приложения. Данный процесс, всегда однообразный и в 99% случаев и всегда нужно тратить n-колличество времени на его устранение. Даже, когда ты уже сталкивался с данной проблемой, ты все равно идешь в поисковик и вспоминаешь, как же решить ту или иную ситуацию.

Читайте также:  Android armv7 что это такое

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

Итак, начну по порядку с самой распространенной проблемы и дальше буду перечислять их по мере появления:

1) Если подчеркивает красным код, где используются ресурсы: R. — попробовать (но вероятно не поможет): Build -> Clean Project.

В принципе на Build -> Clean Project можно не терять времени, а лучше всего — слева переключиться на Project, открыть каталог .idea, затем каталог libraries и из него удалить все содержимое. Затем нажать кнопку Sync Project. А затем (если все еще красное, но скорее всего уже будет все ок ) Build -> Clean Project.

2) После внезапного выключения компьютера, после перезапуска может быть во всех проектах весь код красным. Перед этим может быть ошибка: Unable to create Debug Bridge: Unable to start adb server: Unable to obtain result of ‘adb version’. Есть три решения — первое помогло, второе нет (но может быть для другого случая), а третье — не пробовал:

а) File — Invalidate Caches/Restart — Invalidate and Restart

б) Закрыть студию. В корне папки проекта удалить файл(ы) .iml и папку .idea. Вновь запустить студию и импортировать проект.

в) Нажать Ctrl-Alt-O и запустить оптимизацию импорта.

Кстати, adb сервер можно проверить на версию (и работоспособность) и затем перезапустить:

3) Если Android Studio выдает приблизительно такую ошибку: Error:Execution failed for task ‘:app:dexDebug’.

Надо слева переключиться на опцию Project, найти и удалить папку build которая лежит в папке app, т.е. по пути app/build. Затем перестроить весь проект заново: Build -> Rebuild Project.

Такое же решение если ошибка типа: «не могу удалить (создать) папку или файл» и указан путь, который в ведет в app/build. Тоже удаляем папку build и ребилдим проект.

4) В сообщении об ошибке упоминается heap — виртуальная память. А ошибка обычно вызвана ее нехваткой, т.е. невозможностью получить запрашиваемый объем. Поэтому этот запрашиваемый объем надо уменьшить, т.е. переписать дефолтное значение (обычно 2048 MB которое можно изменить в настройках), на меньшее 1024 MB.

В файле проекта gradle.properties пишем:

5) Android Studio пришет примерно такую ошибку: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to «83648b99316049d63656d7276cb19cc7e95d70a5»

Возможные причины (кроме необходимости регулярного обновления SDK):

а) Загруженный проект был скомпилирован с помощью уже несовместимого старого gradle плагина. В этом случае надо найти и подключить в своем build.gradle проекта этот более старый плагин. т.е. попробовать более старые версии, например: 1.1.3 (часто именно 1.1.x и подходит).

Найти все версии можно здесь.

б) Если в build.gradle проекта используется beta-версия плагина — это означает, что срок ее истек. Посмотреть последние релизы (продакшн и бета) можно также здесь:

6) Иногда при подключении сторонних библиотек могут дублироваться некоторые файлы (обычно связанные с лицензированием). В сообщении будет что-то содержащее слова: duplicate files. Решение — надо посмотреть в сообщении об ошибке или в документации подключенной сторонней библиотеки — какие именно файлы стали избыточными, и перечислить их в build.gradle модуля для исключения (exclude) из билда.

Это делается в директиве packagingOptions (которая, в свою очередь, находится в директиве android).

Источник

Оцените статью