公司须要作一个sdk,里面须要用到别人写的c文件,第一次作,各类百度,各类学习,如今作一个小总结:java
借鉴:http://blog.csdn.net/u013210543/article/details/52103015android
1、新建一个project:例 ExampleDemo, 包名为:com.demo.example;windows
2、为项目配置ndk环境:app
一、下载android ndk,并解压,个人存放目录为:D:\sl\android-develop\android-ndk-r14b;学习
二、点击进入Project Structuregradle
三、在弹出框中选中 SDK Location 标签,在 Android NDK Location中选中ndk路径:ui
四、查看local.propertiesspa
五、gradle.properties项目的末尾添加这行代码:android.useDeprecatedNdk=true.net
3、开始建立操做;命令行
一、新建一个class,添加native方法:
二、执行Build --》Make Project:
完成后能够看到,咱们生成了他的class文件
4、命令行生成.h文件
一、打开Terminal
二、在命令行输入,进入main文件: cd app/src/main
执行编译命令: javah -d jni -classpath [你的sdk路径]\platforms\android-22\android.jar;….\build\intermediates\classes\debug [你的包名+包含native方法的类]
个人是:
D:\sl\androidstudioproject\qrcodedemo\QRCodeDemo>javah -d jni -classpath D:\sl\android-develop\android-sdk-windows\platforms\android-25\android.jar;app\src\main\java com.cirein.qrcod e.QRCodeManager
完成后会在项目中生成一个jni文件夹,下面就是咱们生成的.h文件:
文件中的内容为:
如今开始实现.h文件里面的方法:将.h文件复制拷贝到jni,并重命名为:cirein.c(本身随便定义名称)
注:将其余的c文件也能够拷贝到jni文件夹下,在打so库的时候会一并打入;
对cirein.c文件进行编辑:个人项目中使用了其余的c文件,因此就不贴详细代码了
打开app Module的build.gradle文件,在defaultConfig节点里添加如下代码,并执行同步操做
我认为重要的是建Android.mk和Application.mk文件:
个人Android.mk文件:
LOCAL_PATH := $(call my-dir) //固定写 include $(CLEAR_VARS) //固定写 LOCAL_MODULE := CIRein //生成的so名称 LOCAL_SRC_FILES := cirein.c \ CIRein_Base64.c \ CIRein_XXTea.c //用到的c文件 include $(BUILD_SHARED_LIBRARY) //生成动态库
个人Applicationmk文件:
APP_ABI := all //也能够指定格式
5、生成SO文件
执行:ndk-build
D:\sl\androidstudioproject\qrcodedemo\QRCodeDemo>ndk-nuild
完成后就能够看见生成的so文件了:
如今就可使用.so文件了