Red de conocimiento informático - Material del sitio web - Cómo soportar JNA en Android Pasos prácticos

Cómo soportar JNA en Android Pasos prácticos

1) En primer lugar, JNA existe simplemente como una clase java con una estructura jna.jar + plataforma nativa

lib (libjnidispatch.so). Las plataformas actualmente soportadas son win32 x86/amd64/mac. , linux x86/bsd, sun os

etc., la capa java debe ser universal sin ningún cambio. Por lo tanto, el tema de este artículo es cómo hacer que la plataforma Android reconozca .so nativo.

2) Determine la idea, cree un entorno de compilación cruzada jna/native arm y obtenga el propio jna.jar de Android.

3) Descargue el código fuente, los proyectos de código abierto son muy convenientes

Elogios de $ svn para la compilación de JNI

COPT= -O2

- fno-mit-frame-pointer -fno-strict-aliasing

@@ -126, 10 +126,12

@

endif

ifeq ($(OS),linux)

- ARCH=$(shell uname -m | sed

's/i.86/i386/g' )

+ARCH=arm #$(shell uname -m | sed

's/i.86

PCFLAGS+=-fPIC

CDEFINES+= -DHAVE_PROTECTION

LDFLAGS+=-Wl,-soname,$@

+FFI_CONFIG

+=

--host=arm- none- linux-gnueabi

+ CINCLUDES+=-I/usr/include

endif

ifeq

($(OS), freebsd)

Índice:

build.xml

======================= ==== ============================================

---

build.xml (revisión 1146)

+++ build.os arch="amd64"/>

+ < sistema operativo

+

arch="arm"/>

else="LD_PRELOAD">

@@ -110,6 +111,9 @@

property="jre.arch" value="i386">

arg2=" ${os.arch}"/>

+

property="jre.arch" value=" amd64">

arg2="${os.arch}"/>

@@ -285,6 +289,7 @@

< copiar archivo="${dist}/out-of-date.jar" tofile="${dist}/win32 -x86.jar"

overwrite="true"/>

< copiar archivo="${dist}/out-of-date.jar"

tofile= "${dist}/win32-amd64.jar" overwrite="true"/>

p>

file="${dist}/out-of-date.jar" tofile="${dist}/linux-i386.jar"

overwrite="true"/>

+

tofile="${dist}/android .jar " overwrite="true"/>

file="${dist}/out-of-date.jar" tofile="${dist}/ linux-amd64.jar"

overwrite="true"/>

tofile="${dist}/linux-ia64.jar" overwrite="true"/>

file="${dist}/out-of -date.jar" tofile="${dist}/freebsd-i386.jar"

overwrite="true"/>

@@ -598,6 +603,9 @@

< zipfileset

src="${dist}/linux-i386.jar"

includes="*jnidispatch*"

prefix="com/sun/jna/linux-i386"/>

+ < ;zipfileset

src="${dist}/arm-none-linux. jar"

+

incluye="*jnidispatch*"

+

refix="com/sun/jna/ android" />

src="${dist}/linux-amd64.jar"

includes="*jnidispatch*"

prefix="com/sun/jna/ linux-amd64"/>

8) Compilar

$ ant -Djre.arch=arm -Dos.arch=arm - Dos.prefix=linux-arm

9) Una vez completada la compilación, puede esperar a que el compilador arm compile jna.jar en build.jar. Si usa eclipse, puede proyectar directamente. .-Agrega

Jar para usarlo. Es posible (todavía no estoy seguro) que Android no admita agregar .so local en el paquete jar, por lo que puede dividir jna.jar para cargar clases java

en formato jar y agregarlas desde linux-arm/ libjnidispatch.so, como método para agregar Lib... ->add

Jar., puedes probarlo.

Reimpreso por jugadores de quinto grado