Skip to content

Miouyouyou/ARMv8a-Return-value-to-Java-Android

Repository files navigation

If you appreciate this project, 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, defined in this library, from a Android app using the JNI
  • display the value returned by this native procedure in the Android app

Building

Building using GNU Make

Requirements

  • GNU AS (aarch64)
  • Gold linker (aarch64)
  • An ARM 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 DEST="./apk/app/src/main/jniLibs"
$PREFIX-as -o wild.o wild.s
$PREFIX-ld.gold -shared --dynamic-linker=/system/bin/linker -shared --hash-style=sysv -o libwildAssembly.so wild.o
mkdir -p $DEST/arm64-v8a
cp libwildAssembly.so $DEST/arm64-v8a/libwildAssembly.so

Building using Android ndk-build

Requirements

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

Build

Open a shell or a command window in this folder and :

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

Installing the prepared APK

  • Connect your ARMv8-A 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

Install

Connect your ARMv7 Android phone/emulator and run ./gradlew installDebug from the apk folder.

About

This demonstrates how to read a value returned by a native method in a library written in Assembly for ARM64 (GNU AS Syntax), and assembled with GNU AS and GOLD

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published