2011-09-13 145 views
1

我在c/C++中有一个库。我已经在一些C++程序中成功地使用了它。Android编译库NDK

我想测试,如果它编译于Android,这将是什么规模等
有什么办法,我编译这个库到.so文件,而无需一个完整的Android的Java项目?我对Android开发一无所知,但有一位朋友想要使用我的库。我可以给他提供一个编译好的.so文件吗?
我发现的每一个资源都需要编译出Android项目中的JNI文件夹。

回答

3

我发现要使用build-ndk脚本,我不需要一个真正的项目。我创建了一个文件夹project,除了另一个文件夹jni以外没有任何内容,并将所有资源都放在该文件夹中。然后,我创建了Android.mk文件并按照ndk文档中所述运行脚本。

+2

“项目”目录没有什么特别之处 - 将其命名为任何你想要的。源代码和'Android.mk'应该放在'$(project)/ jni /'中,并且在构建过程中会创建一些目录:'$(project)/ obj'和'$(project)/ libs'。 – jrr

2

你需要做的是安卓Native Development Kit(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 
+0

谢谢,但我最终解决了这个更简单的方法。 – baruch