Подкаст #87. JNI, NDK, private API, инструменты низкоуровневой разработки.
https://androiddev.apptractor.ru/android-dev-podkast-87/ Первый эксперимент формата подобного рода хардкорных выпусков, объяснения деталей работы экосистемы, платформы и инструментария Android.
О чём говорим:
1. Зачем нужен JNI (когда выгоден\нет, плюсы-минусы, юзкейсы)
2. Языки для написания (C/C++, экзотика типа Go, Rust, Kotlin/Native)
3. Система сборки и стандартные/нестандартные подходы
4. Последние обновления инструментов (выпил mips, проблемы AGP < 3.3 вместе с NDK 17+)
5. Приватные api и можно ли всё таки к ним линкануться
6. Загрузка либ: relinker и зачем он нужен, crazylinker c 6.0
7. Как под капотом сейчас: анатомия вызова jni метода, FastNative/CriticalNative, …
8. Что менялось в переходе от Dalvik к ART
9. Мифы про натив и ЗАЩИТУ ОТ РЕВЕРСА БЕСПЛАТНО БЕЗ РЕГИСТРАЦИИ И СМС
10.
https://www.youtube.com/watch?v=tsG95Y-C14k&t=144s - интересности в грамматике C++
11. ReLinker –
https://github.com/KeepSafe/ReLinker12. Описание Relinker –
https://medium.com/@xiphirx/the-perils-of-loading-native-libraries-on-android-befa49dce2db13. Обходим запрет на линковку к приватным библиотекам –
https://fadeevab.com/accessing-system-private-api-through-namespace/14. Movfuscator –
https://github.com/xoreaxeaxeax/movfuscator15. Obfuscator-llvm –
https://github.com/obfuscator-llvm/obfuscator/16.
https://www.youtube.com/watch?v=aBm5iYg7uJU - доклад Гриши про главные заблуждения разработки безопасных приложений.