Cómo soportar JNA en Android Pasos prácticos
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 p>
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