- [Solved] The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion
- How The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error Occurs?
- How To Solve The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error?
- Solution 1: Just add this line of code in app Gradle file.
- Solution 2: Set compileSdkVersion and targetSdkVersion to 31 in build.gradle
- Summary
- Как решить minCompileSdk (31), указанный в метаданных AAR зависимости в студии Android
- 3 ответа
- Meta inf com android metadata
[Solved] The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion
Hello Guys, How are you all? Hope You all Are Fine. Today I am facing the following error while building my app The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error in Java. So Here I am Explain to you all the possible solutions here.
Without wasting your time, Let’s start This Article to Solve This Error.
Table of Contents
How The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error Occurs?
I am facing the following error while building my app.
How To Solve The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error?
- How To Solve The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error?
To Solve The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error Just add this line of code above on the package in-app Gradle file Or You should Set both compileSdkVersion and targetSdkVersion to 31 in your build.gradle(app) file.
The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion
To Solve The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion Error Just add this line of code above on the package in-app Gradle file Or You should Set both compileSdkVersion and targetSdkVersion to 31 in your build.gradle(app) file.
Solution 1: Just add this line of code in app Gradle file.
Just add this line of code above on the package in-app Gradle file.
Just Like Below.
Solution 2: Set compileSdkVersion and targetSdkVersion to 31 in build.gradle
You should Set both compileSdkVersion and targetSdkVersion to 31 in your build.gradle(app) file.
Summary
It’s all About this issue. Hope all solution helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which solution worked for you?
Источник
Как решить minCompileSdk (31), указанный в метаданных AAR зависимости в студии Android
В настоящее время я работаю над проектом Java-приложения в студии Android. Все работает нормально, но за 2-3 дня до того, как у меня возникли странные проблемы. Я много искал на google даже на stackOverFlow , но не нашел рабочего решения.
Я использую compilesdk 30 , и у меня возникает следующая ошибка.
Я поискал и изменил compilesdk 30 на 31. После этого я получил следующие ошибки в файле манифеста.
Это две ошибки. Один был решен при помещении android:exported в фильтр намерений, но второй все еще там. Ставил везде экспортированный но результат был тот же.
Я снова выполнил поиск и получил последнее решение, если я помещу следующий код в gradle зависимостей, тогда он будет решен.
Я сделал то же самое, но результат снова тот же. Я совершенно сыт по горло. пробовал каждое решение. Восстановите проект, но ноль. Я видел несколько недавних вопросов, которые все одинаковы, но моя проблема не была решена, так что это не повторяющийся вопрос. Все перепробовала.
3 ответа
Всем, кто сталкивается с этими ошибками. Я решил эту ошибку, добавив следующую строку кода в файл build.gradle уровня приложения в defaultconfig.
Я уже вставил строку кода work-runtine , но @soujanya дал мне еще одну строку кода, которая называется core-ktx:1.6.0 . Я вставил то же самое под work-runtime и БУУМ . он внезапно скомпилировал мой код.
Источник
Meta inf com android metadata
FAQ по созданию патча update.zip для прошивки через рекавери
Редактирование Updater-script. Информация, решения, команды, подпись патчей.
Инструкция по установке системных и пользовательских приложений с помощью recovery
Редактирование установленной прошивки и удаление системных приложений
(ключевые слова)
Напоминаю, тут не стол заказов.. Посты с просьбой собрать zip для «хххх» Recovery оффтоп
Сообщения, не относящиеся к теме обсуждения (оффтоп), удаляются без предупреждения
- Добавление нескольких пользовательских/системных приложений «за один клик» (одним патчем).
- Добавление/удаление системных приложений без root прав и вспомогательных программ.
- Изменение прошивки (замена файлов, украшательства и т.д.).
- Обновление программы или прошивки.
- Переразметка памяти (обсуждения в другой теме)
- Получение root прав SuperUser, SuperSU, Magisk
- Установленный на телефоне кастомный рекавери (CWM/TWRP)
- NotePad++ (редактор с сохранением Unix формата)
- Zip_signer (подписчик архивов)
- Архиватор ZIP
- Файл-заготовка sample.zip (либо update-binary для ручной сборки)
Zip_signer.rar ( 13.28 КБ )
sample-patch.rar ( 4.77 МБ )
update-binary.rar ( 113.25 КБ )
- Дополнительные версии бинарника.
binary_all.rar ( 649.36 КБ )
- Бинарники (архив/исходники)
Исходники бинарника, основная ссылка:
https://android.google…ootable/recovery/+refs
выбираем к примеру «android-9.0.0_r18» , потом ищем папку «updater», в папке «updater» исходники бинарника
К примеру https://android.google…droid-9.0.0_r18/updater — можно глянуть все команды которые может выполнить бинари в андроид 9.0.0 (в файле install.cpp, в самом низу)
+ Android update-script (Пост Няшная #63580419)
Внимание! Патчи создаются только для мод.рекавери и результативно работают только в них. В стоковых рекавери (на аппаратах «из коробки») патчи не работают.
Для того, чтобы установить новые системные приложения apk в Ваш аппарат, необходимо выполнить три шага:
- Собрать свой update.zip (из заготовки sample.zip)
- Подписать update.zip утилитой Zip_signer(Не обязательно!)
- Закинуть на флэшку и установить в аппарат через ClockWorkMod Recovery
Эти шаги являются универсальными, т.е. подойдут для выполнения других подобных операций.
ШАГ №1
Собрать новый update.zip, используя «болванку» sample.zip
Порядок использования sample.zip:
- Разархивировать архив sample.zip
- Удалить файлы подписи META-INF/CERT.RSA, CERT.SF, MANIFEST.MF (т.к. 2м шагом мы их будем создавать для своей сборки)
- Поместить в папку /data/app свое пользовательское приложение (xxxxx.apk)
- При необходимости отредактировать файл updater-script (подробнее позже)
- Заархивировать всё (META-INF и data) ZIP’ом без сжатия
ШАГ №2
Подписать update.zip с помощью утилиты Zip_signer
Порядок использования утилиты Zip_signer:
- Переименовать Ваш отредактированный (т.е. уже с приложением внутри) sample.zip в update.zip
- Поместить его в папку с программой Zip_signer
- Запустить файл zip_signer.bat
- Дождаться, пока процесс будет завершен
- В папке появится файл update-finished.zip — это и есть подписанный файл
- Переименовать update-finished.zip по своему усмотрению (согласно логике патча)
ШАГ №3
Установка нового приложения
- Перекинуть (переименованный) update-finished.zip на флэшку и установить его в аппарат через TWRP или CWM (install zip from sdcard -> chooze zip from internal sdcard -> Yes, install sample.zip)
- Перезагрузить аппарат
/ )
Внимание! Патчи создаются только для мод.рекавери и результативно работают только в них. В стоковых рекавери (на аппаратах «из коробки») патчи не работают.
Корень патча:
- папка META-INF
- папка источник установки приложений (system, data, sdcard, cache, sd-ext)
Обязательные файлы: - META-INF/com/google/android/update-binary — системное средство запуска данного патча, также создает временную рабочую папку tmp
- META-INF/com/google/android/updater-script — выполняемый скрипт по которому и происходят операции копирования и т.д.
Разберем sample.zip
Патч добавляет пользовательское приложение MyPiano в Data.
— Выводит сообщение о завершении процесса.
- busybox — приложение для выполнения командной строки, устанавливается с кастомным рекавери, находится в ramdisk/sbin. в кастомных прошивках зачастую добавляют его в system/xbin
Возможные исправления для своих целей
- Изменение прав
• package_extract_dir
Синтаксис: package_extract_dir(» «, » «);
Копирует содержимое в . Файлы в имеющиеся в перезаписываются.
Пример: package_extract_dir(«system», «/system»); Скопирует файлы из папки update.zip/system в /system
• package_extract_file
Синтаксис: package_extract_file(» «, » «);
Копирует файл в . Если файл существует, то он перезаписывается.
Пример: package_extract_file(«test.sh», «/tmp/test.sh»); Скопирует файл test.sh из update.zip в /tmp/test.sh
• format
Синтаксис: format(«MTD», » «);
Форматирует раздел (см. приложение).
Пример: format(«MTD», «system»); Полностью отформатирует /system . Примечание: форматирование удаляет данные необратимо.
Пример 2: format(«ext4», «EMMC», «/dev/block/mtdblock5», «0», «/system»);
Определение номера блока под спойлером «инфо и материалы».
• delete
Синтаксис: delete(» «[, «file2», . «fileN»]);
Удаляет файл(ы)
Пример: delete(«/system/app/Calculator.apk»); Удалит Calculator.apk из папки system/app.
• delete_recursive
Синтаксис: delete_recursive(» «[, «dir2», . «dirN»]);
Рекурсивно удаляет папку(и) со всем содержимым
Пример: delete_recursive(«/data/dalvik-cache»); Удалит папку /data/dalvik-cache со всем содержимым.
• run_program
Синтаксис: run_program(» «[, » «, » «, » «]);
Запускает программу(скрипт) .
Пример: run_program(«/tmp/install_busybox.sh»); Запустит скрипт /tmp/install_busybox.sh.
«[, . «pathtofileN»]);
Устанавливает владельца, группу и разрешения для файла или папки, как ‘chmod’, ‘chown’, и ‘chgrp’ всё в одном
Пример: set_perm(0, 2000, 0550, «/system/etc/init.goldfish.sh»); Установит владельца, группу и разрешения для файла /system/etc/init.goldfish.sh
• set_perm_recursive
Синтаксис: set_perm_recursive( , , , , «
«])
Рекурсивно устанавливает владельца, группу и разрешения для содержимого папки. — для папок, — для файлов.
Пример: set_perm_recursive(0, 0, 0755, 0644, «/system/app»); Установит права для содержимого /system/app, для папок — 0755, для файлов — 0644.
• show_progress
Синтаксис: show_progress( , );
Продвижение прогрессбара на долю за секунд. может быть нулевым для продвижения его по командe set_progress, а не по времени.
Пример: show_progress(0.100000, 1); Увеличит прогресс на 0.1 часть за 1 секунду
• set_progress
Синтаксис: set_progress( );
Устанавливает положение прогрессбара на долю , для самого последнего вызова команды show_progress.
Пример: set_progress(0.500000);
• symlink
Синтаксис: symlink(«
Создает символическую ссылку (как ‘ln-s’).
Пример: symlink(«/data/app_s», «/system/app»); Создаст символическую ссылку на папку /data/app_s для папки /system/app
«);
Монтирует в путь
. должно быть название раздела, если это «MTD», или блок памяти если это «vfat»
Пример: mount(«MTD», «userdata», «/data»);
• ui_print
Синтаксис: ui_print(» «);
Выводит на экран сообщение
Пример: ui_print(«Formatting SYSTEM. «);
• sleep
Синтаксис: sleep( );
Пауза процесса на секунд
Пример: sleep(5); — пауза 5 секунд, после чего код скрипта выполняется дальше.
• set_metadata / set_metadata_recursive
Синтаксис: set_metadata (. );
Устанавливает владельца, группу и разрешения (новая команда взамен set_perm для andriod 4.4.*)
Примеры: Android update-script (Пост #32151495)
Создание патча update.zip для прошивки через рекавери (Пост kory-vadim #81945464)
• set_metadata / set_metadata_recursive
Синтаксис:
set_metadata(«имя файла», «ключ1», «значение1», «ключ2», «значение2», . )
set_metadata_recursive(«имя директории», «ключ1», «значение1», «ключ2», «значение2», . )
Ключи:
* uid
* gid
* mode (set_perm_extd only)
* fmode (set_perm_extd_recursive only)
* dmode (set_perm_extd_recursive only)
* selabel
* capabilities
первые три (uid, gid, mode) это тоже самое что и в chmod, заполняется «uid», 0, «gid», 1000, «mode», 06754.
для установки прошивки хватает трех ключей «uid», 0, «gid», 1000, «mode», 06754.
Пример: set_metadata(«/system/xbin/shelld», «uid», 0, «gid», 1000, «mode», 06754, «capabilities», 0x0, «selabel», «u:object_r:system_file:s0»);
set_metadata_recursive(«/system/xbin», «uid», 0, «gid», 2000, «dmode», 0755, «fmode», 0755, «capabilities», «0x0», «selabel», «u:object_r:system_file:s0»);
• команды для Nexus’ов
block_image_update(«/dev/block/platform/msm_sdcc.1/by-name/system», package_extract_file(«system.transfer.list»), «system.new.dat», «system.patch.dat»);
Синтаксис: block_image_update(«Путь к блоку раздела», package_extract_file(«список информации для патча (?) «), «образ», «патч образа»);
я так понимаю, что так прошивается сильно сжатая прошивка (образ системы).
Еще ifelse
Пример: ifelse(is_mounted(«/system»), unmount(«/system»)); — если раздел сустем смонтирован дается команда на его размонтирование, если размонтиовать то нечего не происходит.
• Информация по атрибутам set_metadata и подобным командам на Android 4.4+
Android update-script (Пост blackeangel #50803606)
Описание откуда берутся «u:object_r:uncrypt_exec:s0» и подобные атрибуты. . .
• Пример скрипта который может удалять\перемещать\бекапить файлы и вести лог действий
Android Script Creator (Пост Octanium #51085030)
Используется при отсутствии busybox, либо чтоб не привязываться к его расположению в системе.
Код «перезагрузки» и «перезагрузки в рекавери» соответственно:
Когда скрипт выполняется очень быстро (1-4 секунд) я использовал следующий код:
Т.е. за 3 секунды прогресс бар доходит до 100% (постепенно).
Число «3» выбрано как [время установки скрипта]+1 сек, чтоб прогресс бар при установке гарантированно двигался и не успел дойти до 100% раньше, чем скрипт установится.
«[, . «pathtofileN»]);
Устанавливает владельца, группу и разрешения для файла или папки, как ‘chmod’, ‘chown’, и ‘chgrp’ всё в одном
Пример: set_perm(0, 2000, 0550, «/system/etc/init.goldfish.sh») Установит владельца, группу и разрешения для файла /system/etc/init.goldfish.sh
«])
Рекурсивно устанавливает владельца, группу и разрешения для содержимого папки. — для папок, — для файлов.
Пример: set_perm_recursive(0, 0, 0755, 0644, «/system/app») Установит права для содержимого /system/app, для папок — 0755, для файлов — 0644.
«);
Монтирует в путь
. должно быть название раздела, если это «MTD», или блок памяти если это «vfat»
Пример: mount(«MTD», «userdata», «/data»);
Пример монтирования на андроид 9-10
Если Вам знакомо что такое Recovery, CWM,TWRP, знаете что такое кастомные прошивки и с чем их едят, то наверняка вы сталкивались с тем что прошивка или обновление не устанавливается выводя при этом ошибку «Status #».
Источник