我有一个c / c ++库。我在一些c ++程序中成功使用它。
我想测试它是否在Android上编译,以及它的大小等等。
有没有办法让我在没有整个Android Java项目的情况下将这个库编译成.so
文件?我对Android开发一无所知,但有一位想要使用我的库的朋友。我可以给他一个编译好的.so
文件吗?
我发现的每个资源都说它需要从Android项目中的JNI
文件夹中编译。
答案 0 :(得分:3)
我发现要使用build-ndk脚本,我不需要真正的项目。我创建了一个文件夹project
,除了另一个文件夹jni
外没有任何文件夹,并将我的所有资源都放在该文件夹中。然后我创建了Android.mk
文件并按照ndk文档中的描述运行脚本。
答案 1 :(得分:2)
你需要做的是android原生开发工具包(NDK)http://developer.android.com/sdk/ndk/index.html和GCC编译器。
然后,您可以使用如下所示的参数创建一个Makefile(感谢ViTo Brothers Apoyan)并创建您的共享库。
GCC := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-gcc.exe
GPP := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-g++.exe
AR := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-ar.exe
OPTIONS :=\
-fpic \
-ffunction-sections \
-funwind-tables \
-fstack-protector \
-D__ARM_ARCH_5__ \
-D__ARM_ARCH_5T__ \
-D__ARM_ARCH_5E__ \
-D__ARM_ARCH_5TE__ \
-Wno-psabi \
-march=armv5te \
-mtune=xscale \
-msoft-float \
-mthumb \
-Os \
-fomit-frame-pointer \
-fno-strict-aliasing \
-finline-limit=64 \
-DANDROID \
-Wa, \
-O2 \
-DNDEBUG \
-g \
default: all
all: obj
$(AR) r mysharedlibrary.so *.o
obj:
$(GCC) $(OPTIONS) -c *.c