Создаём игру для Android через Unity за 45 минут!
Это видео — пошаговая инструкция по созданию игры, смотрите и повторяйте! Вместе с автором видео вы начнёте с пустого проекта, а закончите полноценным приложением (apk-файлом), которое сможете опубликовать в Google Play.
Перейти к просмотру
#unity#apk#android
🤖Лимиты памяти в Android: как они работают и можно ли их обойти?
В Android каждому приложению выделяется ограниченный объем оперативной памяти и это может стать неожиданной проблемой для разработчиков. Разберём, какие лимиты существуют и как на них можно повлиять.
Какие есть лимиты?
1. Heap Size (размер кучи) для кода, исполняющегося в JVM
- Android ограничивает объём памяти, доступный одному процессу (приложение может иметь их несколько).
- Лимит зависит от устройства: размера его оперативной памяти, разрешения и размера экрана, версии ОС и прочих характеристик.
- Узнать доступный объём можно так:
val maxMemoryMb = Runtime.getRuntime().maxMemory() / (1024 * 1024)
Log.d("MemoryInfo", "Max heap size: ${maxMemory}MB")
2. Large Heap Mode
- Можно попросить систему выделить больше памяти через задание в в AndroidManifest android:largeHeap="true", но увеличение не гарантируется. Узнать доступный размер можно так:
val activityManager = getSystemService<ActivityManager>()
val largeMemoryClass = activityManager.largeMemoryClass
Log.d("MemoryInfo", "Large Heap: ${largeMemoryClass}MB")
Для Pixel 9 Pro XL с 16 Гб оперативной памяти стандартный лимит - 512 Мб, а c флагом large heap - 1 Гб. Google Play никак не ограничивает вас в выставлении этого флага и сможете смело опубликоваться, но использовать опцию без явной причины не стоит!
Как можно использовать больше памяти?
✅Запуск нескольких процессов
Каждый процесс имеет свой heap limit. Можно вынести часть логики в сервис с android:process=":extra_process". Каждый Android компонент связан с определённым процессом и динамически из кода создать/задать не получится.
✅NDK (Native Code, C++)
Обход heap-лимитов возможен через выделение памяти в C++:
void* bigMemory = malloc(500 * 1024 * 1024); // 500MB
Но при этом важен контроль утечек памяти.
✅Перенос части нагрузки на видеопамять
Можно использовать GPU для хранения и обработки данных, например:
- Текстуры и буферы в OpenGL/Vulkan
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);
- Аппаратное декодирование видео через MediaCodec
val decoder = MediaCodec.createDecoderByType("video/avc")
- Использование Hardware Bitmaps для рендеринга изображений
val options = BitmapFactory.Options().apply { inPreferredConfig = Bitmap.Config.HARDWARE }
val bitmap = BitmapFactory.decodeResource(resources, R.drawable.image, options)
❌Злоупотребление Large Heap
Запрос большого heap-а не даёт гарантий – Android всё равно ограничит память при нехватке ресурсов. Некоторые производители вовсе игнорируют этот флаг из манифеста
#android#подкапотом
🤖ServerSocket для IPC в Android и примеры межпроцессного взаимодействия (6 мин)
Разработчик решил разобраться, как организовать общение между браузером и Android-приложением для передачи данных. В поисках удобного решения он обратил внимание на ServerSocket — простой и гибкий способ локального взаимодействия без лишних сложностей. Что из этого вышло, читайте в статье.
Практическое применение статья будет иметь для малого количества разработчиков, но для лучшего понимания Android ОС и работы её принципов однозначно сделает вас сильнее.
#android#подкапотом
- - Piwigo NG
(Piwigo New Generation)
Is a new version of the Piwigo native #Android application for the free and open source photo hosting platform Piwigo. With this app you can browse you self-hosted gallery and upload photos from your smart device.
GitHub - Piwigo/piwigo-flutter-app: Piwigo mobile application for Android – https://github.com/Piwigo/piwigo-flutter-app
Piwigo - Open source photo management software – https://piwigo.org/
#Piwigo#PiwigoNG#Photos
#selfhosting
🚀 Вышел Room 2.8.0
Самая важная (она и единственная) фича свежего релиза - получение SupportSQLiteDatabase, являющегося оберткой над RoomDatabase с SQLiteDriver. Честно, не знаю кому это пригодится, поэтому будет полезно узнать от вас в комментариях практический опыт.
Менее масштабные, но всё же важные изменения:
👉 minSdk подняли с 21 до 23
👉 Добавили поддержку KMP таргетов: watchOS и tvOS
🛠 Исправили баги
#android#jetpack#androidjetpack
⚡️ Giveaway Time! 🎁
🚀 We're giving away 25 promo codes for Photo Widget Pro25 lucky winners will be chosen in 24 hours.
Eligibility:
- You must be a member of:
~ @AppsLab_Co
~ @popMODS
~ @popmodschat
- How to redeem codes?
- Click here
Notes and warns:
- Please don't forget to rate and comment the app(s) after you redeemed.
- You have 24 hours to get your code from the bot, later then, you won't get your code even if you won.
- Anyone who joins only for the giveaway and leaves the channel immediately after the giveaway is over will be banned indefinitely. It does not matter when you leave.
🏷 Tags: #Android#Widgets#Giveaway