#dalvik — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #dalvik, aggregated by home.social.
-
Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива
Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное - не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы. Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно-ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками - вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку. Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С-функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема - не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение - хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:
-
Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива
Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное - не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы. Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно-ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками - вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку. Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С-функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема - не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение - хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:
-
Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива
Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное - не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы. Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно-ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками - вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку. Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С-функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема - не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение - хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:
-
Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива
Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное - не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы. Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно-ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками - вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку. Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С-функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема - не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение - хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:
-
🚀 Just released smali-lsp!
A Language Server for Smali with:
• Goto definition
• Cross-references
• Symbols & hover
• Works with any IDE (minimal setup)Also includes an MCP server → plug into AI agents for faster APK analysis 🤖
🔗 https://github.com/Surendrajat/smali-lsp
#AndroidDev #ReverseEngineering #MalwareAnalysis #LSP #InfoSec #RE #security #dalvik
-
🚀 Just released smali-lsp!
A Language Server for Smali with:
• Goto definition
• Cross-references
• Symbols & hover
• Works with any IDE (minimal setup)Also includes an MCP server → plug into AI agents for faster APK analysis 🤖
🔗 https://github.com/Surendrajat/smali-lsp
#AndroidDev #ReverseEngineering #MalwareAnalysis #LSP #InfoSec #RE #security #dalvik
-
🚀 Just released smali-lsp!
A Language Server for Smali with:
• Goto definition
• Cross-references
• Symbols & hover
• Works with any IDE (minimal setup)Also includes an MCP server → plug into AI agents for faster APK analysis 🤖
🔗 https://github.com/Surendrajat/smali-lsp
#AndroidDev #ReverseEngineering #MalwareAnalysis #LSP #InfoSec #RE #security #dalvik
-
🚀 Just released smali-lsp!
A Language Server for Smali with:
• Goto definition
• Cross-references
• Symbols & hover
• Works with any IDE (minimal setup)Also includes an MCP server → plug into AI agents for faster APK analysis 🤖
🔗 https://github.com/Surendrajat/smali-lsp
#AndroidDev #ReverseEngineering #MalwareAnalysis #LSP #InfoSec #RE #security #dalvik
-
Hello Johan 👋
Really appreciate your work and Gluon efforts in keeping JavaFX alive and bringing it to mobile 🚀
GluonFX + GraalVM is truly impressive.I have a technical question:
With modern GluonFX builds, Android apps seem to support only **arm64-v8a** ABI.Previously, with JavaFXPorts (javafxmobile plugin), both **armeabi-v7a** and **arm64-v8a** were supported.
@johanvos #JavaFX #Gluon #JavaFXMobile #GluonFX #SubstrateVM #dalvik #AndroidDev #GraalVM
-
Hello Johan 👋
Really appreciate your work and Gluon efforts in keeping JavaFX alive and bringing it to mobile 🚀
GluonFX + GraalVM is truly impressive.I have a technical question:
With modern GluonFX builds, Android apps seem to support only **arm64-v8a** ABI.Previously, with JavaFXPorts (javafxmobile plugin), both **armeabi-v7a** and **arm64-v8a** were supported.
@johanvos #JavaFX #Gluon #JavaFXMobile #GluonFX #SubstrateVM #dalvik #AndroidDev #GraalVM
-
Hello Johan 👋
Really appreciate your work and Gluon efforts in keeping JavaFX alive and bringing it to mobile 🚀
GluonFX + GraalVM is truly impressive.I have a technical question:
With modern GluonFX builds, Android apps seem to support only **arm64-v8a** ABI.Previously, with JavaFXPorts (javafxmobile plugin), both **armeabi-v7a** and **arm64-v8a** were supported.
@johanvos #JavaFX #Gluon #JavaFXMobile #GluonFX #SubstrateVM #dalvik #AndroidDev #GraalVM
-
Hello Johan 👋
Really appreciate your work and Gluon efforts in keeping JavaFX alive and bringing it to mobile 🚀
GluonFX + GraalVM is truly impressive.I have a technical question:
With modern GluonFX builds, Android apps seem to support only **arm64-v8a** ABI.Previously, with JavaFXPorts (javafxmobile plugin), both **armeabi-v7a** and **arm64-v8a** were supported.
@johanvos #JavaFX #Gluon #JavaFXMobile #GluonFX #SubstrateVM #dalvik #AndroidDev #GraalVM
-
Hello Johan 👋
Really appreciate your work and Gluon efforts in keeping JavaFX alive and bringing it to mobile 🚀
GluonFX + GraalVM is truly impressive.I have a technical question:
With modern GluonFX builds, Android apps seem to support only **arm64-v8a** ABI.Previously, with JavaFXPorts (javafxmobile plugin), both **armeabi-v7a** and **arm64-v8a** were supported.
@johanvos #JavaFX #Gluon #JavaFXMobile #GluonFX #SubstrateVM #dalvik #AndroidDev #GraalVM
-
От Kotlin до машинного кода
В этой небольшой статье разберем большой путь, который проходит код Android-приложения от написания в IDE до выполнения на устройстве. Разберем, какие трансформации претерпевает код на каждом этапе, как можно посмотреть их результат, и для чего это может пригодиться.
https://habr.com/ru/articles/863146/
#bytecode #optimisation #android #java #kotlin #jvm #dalvik #virtual_machine #r8
-
От Kotlin до машинного кода
В этой небольшой статье разберем большой путь, который проходит код Android-приложения от написания в IDE до выполнения на устройстве. Разберем, какие трансформации претерпевает код на каждом этапе, как можно посмотреть их результат, и для чего это может пригодиться.
https://habr.com/ru/articles/863146/
#bytecode #optimisation #android #java #kotlin #jvm #dalvik #virtual_machine #r8
-
От Kotlin до машинного кода
В этой небольшой статье разберем большой путь, который проходит код Android-приложения от написания в IDE до выполнения на устройстве. Разберем, какие трансформации претерпевает код на каждом этапе, как можно посмотреть их результат, и для чего это может пригодиться.
https://habr.com/ru/articles/863146/
#bytecode #optimisation #android #java #kotlin #jvm #dalvik #virtual_machine #r8
-
От Kotlin до машинного кода
В этой небольшой статье разберем большой путь, который проходит код Android-приложения от написания в IDE до выполнения на устройстве. Разберем, какие трансформации претерпевает код на каждом этапе, как можно посмотреть их результат, и для чего это может пригодиться.
https://habr.com/ru/articles/863146/
#bytecode #optimisation #android #java #kotlin #jvm #dalvik #virtual_machine #r8
-
https://margin.re/2024/05/dalvik-disassembly/
Interesting article about creating tool in #RustLang to assist #Ghidra #disassembly and #reversing of #dalvik.
-
Volendo realizzare una piccola #demo (per un #concept che per me non ha una vera utilità oltre l’essere uno spassoso #EsercizioDiStile), ho dovuto creare una piccola #applicazione #Android. 🤖️
Pro: ora ho il #software che mi permette di fare quello che mi serviva, per cui non avevo trovato altre soluzioni già fatte che fossero funzionanti. In realtà, l’idea iniziale era di fare una #app specifica per questa #dimostrazione, ma strada facendo ho deciso che avrei reso questa più semplice e generica, potenzialmente utilizzabile anche per altri usi, e avrei implementato parte della mia logica sul mio #server con qualcosa di più rapido. Quello che è uscito fuori ora è una piccolissima app che esegue codice #JavaScript fornito dall’utente e permette a questo di interfacciarsi con API native. 3 API al momento, lmao. Non so se nel tempo la espanderò o no, ora mi serviva appena questa poca roba, e la #UX è #grezza grezza perché non ho tempo. Il codice è quì (ma non è bello): https://gitlab.com/octtspacc/DroidScriptin. ☕️
Contro: la programmazione Android in sé, che è sempre un leggero incubo. Tuttavia, l’unica alternativa teoricamente (chissà praticamente!) viabile sarebbe stata fare un’app per Symbian o J2ME, che certamente non avrebbe semplificato le cose. Vabbé, anche per questo ho alla fine realizzato questa parte del mio progetto demo nel modo in cui ho detto. La cosa più strana attuale del codice? (Content Warning: 🤓️) Il fatto che io debba tenere una classe dedicata funzionalmente vuota per dichiarare l’uso di un
(Ma come farà ad accadere questo #bug? 😩️)BroadcastReceiverall’OS, anche se io nella pratica quello lo uso nellaMainActivity, e non nella classe che specifico nel manifest per quel permesso (perché non riesco a mettereMainActivitylì). Ah, però questo per quanto non abbia senso, funziona. La cosa veramente più strana, invece, lo è perché non funziona: su #Android4.4 (mio target) la UI è a posto, mentre su #Android13 (che monta il mio #smartphone principale) manca la barra dell’activity, e quindi non c’è manco modo di accedere al menu… vabbè, il #programma deve funzionare sul #telefono #vecchio, e lì appunto va. 🎈️Nel mezzo: ne ho approfittato per provare #Kotlin un pochino, che avevo sempre snobbato, e adesso me ne pento… di non avergli dato una chance prima. È molto più piacevole di #Java da usare, secondo me, sintassi estremamente più pulita e concisa. Kotlin compila in #bytecode #dalvik e in generale targetta la #JVM direttamente, quindi le #API sono quasi identiche a Java, e avendo usato quello non bisogna imparare quasi nulla di nuovo; sintassi a parte appunto, che però si impara semplicemente scrivendo, è esotica ma assolutamente non esoterica. 🧶️
E giustamente vi chiedete, a che mi serviva esattamente? Se rientra nell’essere un sano #WeekendProject come ho programmato ieri, allora domani lo saprete… per ora non faccio spoiler, oltre a dire che il mio #MicroBlog potrebbe ottenere una funzione che solo #Twitter aveva e solo nei primissimi anni, e ora è un concetto estinto. Non vi dico che leggendo il #SourceCode potete intuire, ma mai dire mai… 👁️
https://octospacc.altervista.org/2023/12/16/572/
#Android #Android13 #Android4 #API #app #applicazione #bug #bytecode #concept #dalvik #demo #dimostrazione #EsercizioDiStile #grezza #Java #JavaScript #JVM #Kotlin #MicroBlog #programma #server #smartphone #software #SourceCode #telefono #Twitter #UX #vecchio #WeekendProject
-
Kunai, a library for analyzing #Dalvik Executable Files
https://farena.in/android/analysis/kunai-lib/ -
I wonder what kind of #cybersecurity experts Dalvíkurbyggð consulted - they told them "...þessi hótun [er] ekki trúverðug..." (that threat is not credible)...
#Lockbit, if you're reading this: You attacked a poor small town in Northern Iceland, encrypted their children music school (tónlistarskóli) data and their photo archive (ljósmynda Dalvíkurbyggðar þ.mt ljósmyndasafn Héraðsskjalasafnsins)https://dal.is/netthrjotar-krefjast-lausnargjalds-af-dalvikurbyggd-og-hota-birtingu-gagna/