Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Miouyouyou/ARMv8a-Call-Java-method-from-Assembly

Repository files navigation

If you appreciate this project, you can support me on Patreon ! Patreon !

Pledgie ! Tip with Altcoins

About

This example demonstrates how to :

  • assemble a library written with the ARMv8-A 64 bits GNU ASsembly syntax
  • call a native procedure, included in this library, from an Android app using the JNI.

The called procedure will then call back a Java method, defined in the Android Application, using the JNI helpers.

Building

Building using GNU Make

Requirements

  • GNU AS (aarch64)
  • Gold linker (aarch64)
  • An ARMv8-A 64 bits Android phone/emulator on which you have installation privileges

Build

Run make from this folder

Manually

Run the following commands :

# cross compiler prefix. Remove if you're assembling from an ARM machine
export PREFIX="aarch64-linux-gnu"
export APP_DIR="./apk"
export LIBNAME="libarcane.so"
${PREFIX}-as -o decypherArcane.o decypherArcane.s
${PREFIX}-ld.gold -shared --dynamic-linker=/system/bin/linker -shared --hash-style=sysv -o $LIBNAME decypherArcane.o
mkdir -p $APP_DIR/app/src/main/jniLibs/arm64-v8a
cp $LIBNAME $APP_DIR/app/src/main/jniLibs/arm64-v8a

Building using Android ndk-build

Requirements

  • The Android NDK path in your system's PATH directory

Build

  • On Windows, run 'mkbuild.bat'
  • On Linux, run 'mkbuild.sh'

Installing the prepared APK

  • Connect your ARMv8-A 64 bits Android phone/emulator
  • open a shell or a "command window"
  • cd to the apk folder

Then :

  • On Windows run gradlew installDebug.
  • On Linux run ./gradlew installDebug

About

This demonstrates how to write a native library with a procedure calling a Java method, defined in an Android app that previously invoked that native procedure. The library is written in ARMv8-A assembly.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /