#Security #NDK
Securing API Keys using Android NDK
У Java байткода есть один минус - его легко декомпилировать и вытащить строки, а в строках разработчики обычно хранят различные ключи для доступа к сервисам.
В таких случаях злоумышлении могут воспользоваться этими ключами в своих приложениях, но не всегда. Некоторые сервисы еще производят верификацию по сертификату, которому подписано приложение.
Как вшить ключи в приложение и сделать это надежнее? Используйте нативный код. В статье вы найдете руководство как сохранять ключи в нативном коде и работать с ними из Java/Kotlin.
Securing API Keys using Android NDK
У Java байткода есть один минус - его легко декомпилировать и вытащить строки, а в строках разработчики обычно хранят различные ключи для доступа к сервисам.
В таких случаях злоумышлении могут воспользоваться этими ключами в своих приложениях, но не всегда. Некоторые сервисы еще производят верификацию по сертификату, которому подписано приложение.
Как вшить ключи в приложение и сделать это надежнее? Используйте нативный код. В статье вы найдете руководство как сохранять ключи в нативном коде и работать с ними из Java/Kotlin.
Mindorks
Securing API Keys using Android NDK (Native Development Kit)
In this blog, we will learn how to secure our API Keys that are used in Android applications using the Android NDK (Native Development Kit). We have created a detailed blog of securing the API Keys.
#NDK
Introducing NDK r21
Вышла новая версия Android NDK - 21. Пока только в Beta, но новая версия привнесла важные новости:
👉 Первая версия с длительной поддержкой (LTS)
👉 LTS релизы будут выходить каждый год
👉 Отказ от поддержки Windows x32
👉 Обновление GNU Make до 4.2
👉 Обновление GDB до 8.3
👉 Обновление LLVM до r365631 (master 10 Июля 2019)
👉 Обновление libc++ до r369764
👉 Fortify включается по умолчанию при использование ndk-build или CMake toolchain
👉 ARM код теперь по умолчанию собирается с Neon по умолчанию. Это позволяют коду работать эффективнее
Хотите узнать что будет дальше, то смотрите Roadmap
Introducing NDK r21
Вышла новая версия Android NDK - 21. Пока только в Beta, но новая версия привнесла важные новости:
👉 Первая версия с длительной поддержкой (LTS)
👉 LTS релизы будут выходить каждый год
👉 Отказ от поддержки Windows x32
👉 Обновление GNU Make до 4.2
👉 Обновление GDB до 8.3
👉 Обновление LLVM до r365631 (master 10 Июля 2019)
👉 Обновление libc++ до r369764
👉 Fortify включается по умолчанию при использование ndk-build или CMake toolchain
👉 ARM код теперь по умолчанию собирается с Neon по умолчанию. Это позволяют коду работать эффективнее
Хотите узнать что будет дальше, то смотрите Roadmap
Android Developers Blog
Introducing NDK r21: our first Long Term Support release
Android NDK r21 is now in beta! It’s been a longer than usual development cycle (three months since NDK r20), so there’s quite a lot to discuss for this release. We have the usual toolchain updates, improved defaults for better security and performance, and…
📺 Android NDK. Как писать под Android на C++ (40 мин)
Задал кучу вопросов про работу с Android NDK. Уровень познания С++ и NDK у меня базовый, так что интересно видео будет таким же как я.
🎧 Подкаст версия здесь
Если у вас есть интересный опыт в разработке, которым вы хотите поделиться в формате доклада или интервью, то пишите
#AndroidBroadcast #ndk
Задал кучу вопросов про работу с Android NDK. Уровень познания С++ и NDK у меня базовый, так что интересно видео будет таким же как я.
🎧 Подкаст версия здесь
Если у вас есть интересный опыт в разработке, которым вы хотите поделиться в формате доклада или интервью, то пишите
[email protected]
#AndroidBroadcast #ndk
👍36😐8🏆5
В блоге Android Developers рассказали про оптимизацию порядка файлов для ускорения инициализации нативных библиотек
#performance #ndk
#performance #ndk
👍11👎8
Using C/C++ in Android: A Comprehensive Guide For Beginners (10 мин, ссылка без VPN)
Если вы задумывались об изучении C/C++. для Android разработки (низкоуровневые оптимизации, машианное обучение, графика), то статья поможет вам в понимании, что такое JNI и работа из Java кода, а также основные понятия
#ndk
Если вы задумывались об изучении C/C++. для Android разработки (низкоуровневые оптимизации, машианное обучение, графика), то статья поможет вам в понимании, что такое JNI и работа из Java кода, а также основные понятия
#ndk
👍32❤6🔥1
Обязательная поддержка страницы размером 16K в Android 15 позволит получить много преимуществ для устройств по замерам Google:
👉 Скорость запуска приложений становится выше при малом количестве свободной памяти
👉 Быстрее скорость запуска системы
👉 Приложение камеры запускается быстрее
Изменение заденет тех кто использует NDK при разработке и все еще работает со страницами размером 4K. Чтобы проверить работоспособность вашего приложения можно по инструкции тут, а узнать больше про изменения в документации
#android15 #ndk
👉 Скорость запуска приложений становится выше при малом количестве свободной памяти
👉 Быстрее скорость запуска системы
👉 Приложение камеры запускается быстрее
Изменение заденет тех кто использует NDK при разработке и все еще работает со страницами размером 4K. Чтобы проверить работоспособность вашего приложения можно по инструкции тут, а узнать больше про изменения в документации
#android15 #ndk
👍3
Небольшая статья(6м) про нативные библиотеки в Android проектах - это код, который разработчик написал, а затем скомпилировал для конкретной архитектуры процессора. Чаще всего этот код написан на C++.
#ndk #jni
#ndk #jni
👍12 6
Google уже перевела Android на поддержку только x64 архитектуры в устройствах. Следующий шаг - увеличения размера страницы в памяти, что приводит к ускорению работы приложения на 5-10%. Сейчас через настройки разработчика это можно попробовать на Pixel 8 и 9, а скоро устройства других производителей обеспечат поддержку и начнут переход.
Разработчикам нативных библиотек и SDK надо поддержать новый размер страницы и проверить совместимость как можно скорее. Подробнее как это сделать в статье
#android #ndk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🤯6
Android команда из Google сделала курс по Rust с нуля и до сложных фичей. Курс будет полезен Android разработчикам, кто работает с NDK. Также в курсе освещается работа с Chromium, Bare-metal и многопоточность
Курс также можно скачать как PDF
#android #ndk #rust
Курс также можно скачать как PDF
#android #ndk #rust
👍41🔥25❤15
Все мы уже привыкли выкладывать сборки в Google Play через AAB, которые передаст на устройство только необходимое для устройства нативные библиотеки. Некоторым приходится раздавать сборку в APK формате. Банальный кейс - отдавать сборку на проверку QA.
Универсальное APK - содержит ресурсы и библиотеки под все возможные устройства, даже те которые не нужны на устройстве пользователя. Обычно нативные библиотеки делают наибольший вклад в конечный размер приложения на устройстве пользователя. Отказ от ненужных позволит снизить размер и скорость доставки до устройства пользователя.
Android Gradle плагин позволяет указать какие ABI нужно добавлять в сборку. Сложность в том, что для финальной сборки обычно надо добавить ABI
Пример задания через параметр
Если вы запускаете приложения из Android Studio на устройстве/эмуляторе, то IDE понимает какую ABI из поддерживаемых стоит включить в APK, чтобы приложение смогло работать. Все остальные исключается. Сборка компактнее - меньше время на передачу и установку тестового билда.
#android #gradle #ndk
Универсальное APK - содержит ресурсы и библиотеки под все возможные устройства, даже те которые не нужны на устройстве пользователя. Обычно нативные библиотеки делают наибольший вклад в конечный размер приложения на устройстве пользователя. Отказ от ненужных позволит снизить размер и скорость доставки до устройства пользователя.
Android Gradle плагин позволяет указать какие ABI нужно добавлять в сборку. Сложность в том, что для финальной сборки обычно надо добавить ABI
arm64-v8a
и armeabi-v7a
, а вот для Intel эмуляторов нужны x86
и x86-64
. Чтобы делать это эффективно, я делал механизм передачи значений ABI через переменные при сборке. Это позволяет задавать локально и на CI разные значения, а локальные задавать через файл local.properties или переменную окружения// Код в Gradle KTS скрипте
fun resolveAbiFilters(): List<String> {
val abisString =
project.findProperty("abiFilter") as String? // Параметр командной строки
?: readFromLocalProperties("abi.filter") // Значение из local.properties
?: System.getenv("ABI_FILTER") // Переменная окружения
return abisString?.split(",") ?: emptyList()
}
fun readFromLocalProperties(key: String): String? {
val localPropertiesFile = rootProject.file("local.properties")
if (!localPropertiesFile.exists()) return null
val localProperties = Properties().apply {
localPropertiesFile.inputStream().use(::load)
}
return localProperties.getProperty(key)
}
// В Android application модуле указываем
android {
defaultConfig {
ndk {
abiFilters = resolveAbiFilters()
}
}
}
Пример задания через параметр
./gradlew assembleRelease -PabiFilter=arm64-v8a,armeabi-v7a
Если вы запускаете приложения из Android Studio на устройстве/эмуляторе, то IDE понимает какую ABI из поддерживаемых стоит включить в APK, чтобы приложение смогло работать. Все остальные исключается. Сборка компактнее - меньше время на передачу и установку тестового билда.
#android #gradle #ndk
👍47🔥10❤2
Изменение размера страницы в памяти от 4 KB в 16 KB даст для приложений:
🚀 Ускорения запуска приложений
🔋 Сокращение расхода батареи
📷 Ускорение включения камеры
Новая требование Google Play обязует реализовать поддержку работы всех новых приложений и обновлений с targetSdk 35 (Android 15). Изменение вступает в силу с 1 ноября 2025 года
Что нужно делать
👉 Обновить библиотеки с нативынм кодом до версий с поддержку нового размера страницы
👉 Перекомпилировать свой нативный код на C/C++ с последней версией инструментов
В Google Play в AppBundle Explorer вы будете видеть совместимо ли ваше приложение cо страницей размера 16KB.
Полезные ссылки
🔗 Как адаптировать приложение
🔗 Как провести тестирование приложения на таком устройстве
🔗 Подробная документация по 16Kb page size
#android #googleplay #ndk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27
Минусы повышения размера страницы памяти
⚠️ Мелкие объекты “тратят” больше памяти.
Если в 4 КБ-странице лежало 5 мелких объектов, в 16 КБ — может быть “пустого” пространства больше. Но в современных условиях прирост производительности важнее.
⚠️ Нужна поддержка от железа.
Процессор и ядро должны поддерживать размер страницы 16 КБ — это не просто «переключатель» в настройках.
#android #ndk
⚠️ Мелкие объекты “тратят” больше памяти.
Если в 4 КБ-странице лежало 5 мелких объектов, в 16 КБ — может быть “пустого” пространства больше. Но в современных условиях прирост производительности важнее.
⚠️ Нужна поддержка от железа.
Процессор и ядро должны поддерживать размер страницы 16 КБ — это не просто «переключатель» в настройках.
#android #ndk
🤔21👍14❤1
#androidstudio #ndk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30
🤯 Через 4 месяца ваше приложение нельзя будет обновить или опубликовать новое, если все нативные библиотеки в APK не будут иметь поддержку страниц памяти 16 KB.
Google напоминает что весь нативный код вашего приложения и библиотеки должны иметь поддержку страницы памяти размером 16KB. Для этого надо обновить версию зависимостей с поддержкой (проверяйте на сайте).
Проверить работу можно с помощью специального эмулятора или включения опции в настройках разработчика на Android 15 и выше.
С помощью APK Analyzer вы можете определить выполняют ли все ваши нативные библиотеки требования. Android Lint также будет подсказывать проблемные библиотеки Рекомендуется создать issue для разработчиков сторонних API, если еще нету поддержки и до вас не сделали issue.
🔗 Больше подробностей в официальной документации
#android #ndk #googleplay
Google напоминает что весь нативный код вашего приложения и библиотеки должны иметь поддержку страницы памяти размером 16KB. Для этого надо обновить версию зависимостей с поддержкой (проверяйте на сайте).
Проверить работу можно с помощью специального эмулятора или включения опции в настройках разработчика на Android 15 и выше.
С помощью APK Analyzer вы можете определить выполняют ли все ваши нативные библиотеки требования. Android Lint также будет подсказывать проблемные библиотеки Рекомендуется создать issue для разработчиков сторонних API, если еще нету поддержки и до вас не сделали issue.
🔗 Больше подробностей в официальной документации
#android #ndk #googleplay
🤯47🤝9👍6❤5🤔1
Media is too big
VIEW IN TELEGRAM
Стивен Морленд из команды Android Systems делится последними новостями для разработчиков Android. Теперь Android поддерживает размер страниц памяти 16 КБ. Начиная с 1 ноября 2025 года, все новые приложения и обновления существующих приложений, отправляемые в Google Play и нацеленные на устройства с Android 15+, должны поддерживать размер страниц 16 КБ. Узнайте, почему команда Android внедряет это изменение и как подготовить своё приложение для максимальной производительности.
0:00 Вступление
0:26 Страницы памяти
1:33 Рост размера приложений
2:11 Почему мы меняем размер страниц с 4 КБ на 16 КБ
4:18 Android 16 и другое
Полезные ресурсы:
🔗 Подготовка приложений для устройств с размером страниц 16 КБ
🔗 Поддержка размера страниц 16 КБ
🔗 Тестирование приложения в среде с размером страниц 16 КБ
#android #googleplay #ndk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤔4🤯4❤2