Найти в Дзене
Module was compiled with an incompatible version of Kotlin
В процессе сборки release build'а после подключения Firebase Analytic появляется сообщение с таким содержимым: java.com.google.android.gmscore.integ.client.measurement_api_measurement_api.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1. Порылся-поискал-подумал-потыкал...
161 читали · 1 год назад
Very long vector path (980 characters), which is bad for performance. Considering reducing precision, removing minor details or rasterizing
Такое сообщение появляется при анализе кода в Android Studio перед совершением добавления изменений файлов в репозиторий - перед коммитом в git. Возникает при использовании векторных изображений в проекте. Решение: Упростить векторное изображение. Это можно сделать так: • На сайте https://yqnn.github.io/svg-path-editor/ есть возможность скруглить изображение. • Для этого копируем из XML-файла параметр PATH и вставляем на сайте в соответствующее окошко...
1 год назад
Про цветовые атрибуты темы
Смысл этой заметки в том, чтобы сохранить какой цвет за что отвечает. Но добавил общей инфы - вдруг кому пригодится. Если вы хотите использовать какую-то готовую тему, но изменить в ней основные цвета, то вам предстоит их переопределить в вашей теме. Сначала её нужно создать в файле res\values\styles.xml Затем создаем тему в этом файле: <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionTheme"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> В этом...
2 года назад
parentFragmentManager.commit unresolved commit
Если вы пробуете работать с фрагментами, то возможна ситуация нераспознавания некоторых команд. Например, когда вместо стандартных вызовов методов FragmentManager: supportFragmentManager.beginTransaction() .add(R.id.fragment_container_view, MyFragment()) .commit() мы хотим использовать лямбда-выражение и extention-функции: supportFragmentManager.commit { .add(R.id.fragment_container_view, MyFragment()) } Решение в этом случае простое. Добавить ещё одну зависимость в build...
2 года назад
Просмотр стека Activity запущенного в эмуляторе Android приложения
Для просмотра содержимого контейнера Task с Back stack приложения в Linux/MacOS можно выполнить команду в adb: adb shell dumpsys activity activities | grep ActivityRecord{ В Windows штатно нет утилиты grep. Но есть findstr: adb shell dumpsys activity activities | findstr "ActivityRecord{" Так мы сможем просмотреть список созданных Activity в Back stack нашего выполняемого приложения...
2 года назад
Настройка Windows для работы с adb при установленной Android Studio
Сразу после установки студии вызвать Android Debug Bridge (adb) не удастся. Требуется настройка системы. В дополнительных свойствах системы нужно добавить в переменные среды расположение SDK platform tools: C:\Users\%username%\AppData\Local\Android\Sdk\platform-tools и дать этой системной переменной какое-то имя. Затем добавить это имя в значения переменой Path...
2 года назад
Dependency Injection и SharedPreferences
При применении DI в учебном проекте понадобилось передавать SharedPreferences, как зависимость. Мой вариант приложения создавал два разных файла SharedPreferences. Вот так я решил, когда изучали SharedPrefs. Они нужны были в разных сценариях использования приложения. Т.е. они имели разные имена и содержимое. При описании способа получения зависимости в одном модуле указал для Koin: factory<SharedPreferences> { androidContext().getSharedPreferences(FIRSTACTIVITY_SHAREDPREFS, Context.MODE_PRIVATE) } В другом модуле: factory<SharedPreferences> { androidContext().getSharedPreferences(SECONDACTIVITY_SHAREDPREFS, Context...
2 года назад
Calling startActivity from outside of an activity
При изучении koin и Dependency Injection проявилась особенность вызова интентов при использовании DI. При создании зависимостей контекст в repository передается не от Activity, в которой вызывается код, а снаружи: val settingsModule = module{ single<SharingRepository>{ SharingRepositoryImpl(androidContext()) }... Чтобы вызов интента произошёл корректно, нужно либо найти способ передать контекст активити, либо добавить параметр к интенту...
2 года назад
Sync failed 2 - не синхронизируется проект в Android Studio
Начало тут Проблема оказалась побеждена в прошлый раз на время. Отключил антивирус и перезагрузил ноут - проекты стали синхронизироваться... Похоже это антивирус.... Это надо добавить в исключения антивируса. Точнее в модуль поведенческого анализа. C:\Users\%username%\.gradle\* Ошибка больше не проявлялась...
2 года назад
Activity не слушается переключения темы в приложении
При изучении MVVM столкнулся с тем, что один из экранов перестал слушаться переключателя. Он стал брать системную настройку темной или светлой темы. Нашёл причину, конечно. Управление темами в приложении было реализовано с помощью AppCompatDelegate. А непослушная Activity наследовалась от ComponentActivity(), как рекомендовано в материале про MVVM для работы ViewModel...
2 года назад
Нестандартный переключатель Switch
Если вам понадобилось использовать переключатель Switch, но внешне он не отвечает вашим требованиям, то есть вариант сделать свой собственный. Находим в структуре проекта папку ресурсов: res -> drawable Щелкаем пкм по папке drawable: new -> Drawable Resource File Задаём имя файла. Например, custom_switch Root element указываем - selector Щелкаем ОК. Заменяем в этом файле код на следующий: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <shape android:dither="true" android:shape="rectangle" android:useLevel="false"...
2 года назад
Suspicious indentation: This is indented but is not continuing the previous expression
Что в переводе означает: Подозрительный отступ: это предназначено, но не является продолжением предыдущего выражения Вот и думай, что хочешь. Оказывается, студии не нравится форматирование кода. Решение: отформатировать код с помощью комбинации клавиш CTRL+ALT+L Мысль отсюда
2 года назад