#csharp#2d#avaloniaui#csharp#dotnet_core#dotnetcore#editor#game_development#graphics#graphics_editor#linux_desktop#painting#pixel_art#pixi#procedural_drawing#procedural_generation#raster_graphics#sprites#tabs#vector_graphics
PixiEditor is a free, easy-to-use 2D graphics editor that combines pixel art, painting, and vector tools all in one program. You can create game sprites, animations, logos, and edit images with a simple interface. It supports mixing vector and raster graphics on the same canvas and lets you export to many formats like PNG, SVG, GIF, and MP4. The powerful Node Graph system allows you to create complex, non-destructive effects and animations. It also has a timeline for frame-by-frame animation and autosaves your work to prevent loss. This makes it a versatile tool for artists and game developers.
https://github.com/PixiEditor/PixiEditor
🔨Вышел AGP 9.2.0 с одной экспериментальной фичей и набором фиксов.
Главное новшество — unified coverage and test reports. Плагин теперь умеет генерировать HTML-дашборд, который объединяет результаты unit и instrumentation тестов по всем модулям и вариантам сборки в одном месте. Пока это эксперимент: нужно включить флаг android.experimental.reportAggregationSupport=true в gradle.properties.
🛠 Из фиксов стоит выделить несколько практически значимых: починили переименование APK через новый AGP DSL, исправили падение JdkImageTransform при использовании JDK 26, починили поведение Android Lint с флагом --quiet и сломанную работу кастомных lint-правил, скомпилированных под Java 21 bytecode.
Совместимость: Gradle 9.4.1, SDK Build Tools 36.0.0, JDK 17, максимальный API level 36.1.
Единый тест-дашборд — нужная штука для проектов с большим количеством модулей, где сейчас результаты разбросаны по папкам. Подожду stable прежде чем трогать в рабочем проекте, но направление правильное.
#Android#AGP#Gradle
🤖Готовьтесь к Android Gradle Plugin 9.0 — грядут большие перемены!
Совсем скоро состоится релиз Android Gradle Plugin 9.0 (AGP), который полностью меняет подход к конфигурации Android‑проектов: удаляет устаревшие API, упрощает настройку и пересматривает организацию конфигурации.
Ключевые изменения:
👉 Переход на Gradle 9.X
👉 Поддержка Kotlin теперь встроена в AGP — подключение org.jetbrains.kotlin.android больше не требуется и даже будет рушить сборку. Из плюсов — минус один плагин.
👉 Плагин org.jetbrains.kotlin.multiplatform больше не будет работать с com.android.library и com.android.application. Используйте com.android.kotlin.multiplatform.library, а для приложения создавайте отдельный модуль.
👉 Массовые изменения в API — множество удалений без прямых альтернатив. В целом идёт отказ от старых публичных интерфейсов, ведь новые уже давно доступны, и авторы плагинов могут их использовать.
👉 Некоторые возможности конфигурации теперь будут доступны только в библиотечном плагине.
Чтобы корректно обновиться до новой версии, нужно, чтобы все плагины, подключённые в проект, поддержали необходимые изменения — или отказаться от них.
Подробнее обо всех изменениях — в документации
Надеюсь, Android Studio добавит ассистента по миграции. А вот авторам плагинов, похоже, прибавится работы 😅
Как вам перемены? Пойдут ли они на пользу скорости сборки и удобству использования AGP?
#Android#AndroidDev#Gradle#AGP#AndroidStudio
🤖AGP 9.0: Fused Library Plugin — новый способ публикации нескольких модулей как один AAR
В Android Gradle Plugin (AGP) 9.0 и новее появился инструмент, которого ждали многие разработчики SDK и библиотек. Встречайте плагин Fused Library (com.android.fused-library). Пока в экспериментальном режиме.
Раньше, если вы разбивали свой код на много модулей, перед вами вставала дилемма: заставлять пользователя подключать 5 разных зависимостей или использовать неофициальные "fat-aar" скрипты. Теперь Google предлагает нативное решение.
Fused Library плагин позволяет взять несколько Android Library модулей и упаковать их в один AAR [1].
1️⃣ Для включения фичи надо будет добавить флаг в gradle.properties:
android.experimental.fusedLibrarySupport=true
2️⃣ Затем создаем модуль для публикации (например, my-sdk-fused). В его build.gradle.kts добавляем:
plugins {
id("com.android.fused-library")
`maven-publish`
}
androidFusedLibrary {
namespace = "dev.androidbroadcast.mysdk"
minSdk = 23
}
dependencies {
// Указываем модули для "слияния"
include(project(":core"))
include(project(":ui-components"))
// Можно вливать даже внешние либы!
include("dev.androidbroadcast:cool-fonts:1.0")
}
Обратите внимание на include — это ключевая команда для упаковки.
3️⃣ Используем компонент fusedLibraryComponent при публикации артефакта:
publishing {
publications {
register<MavenPublication>("release") {
groupId = "dev.androidbroadcast"
artifactId = "fat-sdk"
version = "1.0.0"
from(components["fusedLibraryComponent"])
}
}
}
Инструмент мощный, но есть особенности:
❌Data Binding не поддерживается.
⚠️Ресурсы: При совпадении имен побеждает ресурс из зависимости, указанной первой.
⚠️Build Types: Нельзя слить debug и release в один проход, нужны разные fused-модули.
🐞Source JAR: Пока есть известные проблемы с генерацией исходников.
Подробнее читайте в [документации](https://developer.android.com/build/publish-library/fused-library)
#Android#AndroidDev#Gradle#AGP#Maven