工作环境(蓝色粗体字为特别注意内容)
1,系统环境:Win7 Ultimate sp1
2,软件环境:Eclipse+ADT+NDK(android-ndk-r8c)
一个Android项目需要NDK编译,一看是AndroidStudio工程,但是我的AndroidStudio还没配置过NDK,之前都是用ADT+NDK的方式编译,一直用的好好的。既然是AdroidStudio工程,那就直接用AS配置我原来下载的NDK来进行编译吧!
说干就干,在AS中将NDK的路径配置上,然后各种配置弄好,发现报错
ndk com.android.build.gradle.internal.cxx.configure.JsonGenerationVariantConfiguration.<init>, parameter ndkVers
网上说是NDK版本太低了,需要改什么版本号之类的,改来改去后来没成功。懒得折腾了,索性用我原来的ADT新建一个NDK项目进行编译,然后将*.so文件扔到AndroidStudio工程就可。下面来看看具体步骤:
1、下载NDK开发包,android-ndk-r10e-windows-x86_64.exe,然后解压缩到 ${ndkroot}。
2、打开ADT,Window->Android->NDK->选择1中解压缩的文件夹 ${ndkroot}。
3、在需要进行JNI开发的项目上右键,Android Tools -> Add Native Support -> jni_name。
4、一切顺利的话,在左侧就出现一个jni文件夹,里面有hello.cpp和Android.mk两个文件。
5、将c/c++的源文件复制到jni文件夹下面,并修改Android.mk文件。我的文件目录如下:
6、编写Android.mk文件,内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/bzip2
LOCAL_MODULE := bsdiff
LOCAL_SRC_FILES := bsdiff.c \
bs.c \
bspatch.c \
bzip2/bzlib.c \
bzip2/crctable.c \
bzip2/compress.c \
bzip2/decompress.c \
bzip2/randtable.c \
bzip2/blocksort.c \
bzip2/huffman.c
LOCAL_LDLIBS := -lz -llog -lm
include $(BUILD_SHARED_LIBRARY)
7、如果需要指定编译平台,则需要新建一个Application.mk文件,内容如下:
APP_ABI := armeabi
APP_PLATFORM :=android-8
8、最终目录结构如下