您的位置:首页 > 移动开发 > Android开发

Android Studio生成.so库

2016-05-03 20:45 549 查看

简介

通过android studio生成so库的实践。

上一篇记录的是通过eclipse生成so的方法eclipse生成so库实践,这里记录一下通过android studio是怎么生成so库的,参考文章http://www.jianshu.com/p/0c0d37c9a2db,这篇blog主要是参考上面文章实现,自己做了一部分修改,以及实现时遇到了一些坑,这里记录一下。

配置NDK

下载ndk

下载地址:http://developer.android.com/intl/zh-cn/ndk/downloads/index.html

解压配置环境变量





验证配置成功



设置android studio ndk路径



JNI开发

添加native接口注意写好native接口和System.loadLibrary()。

执行Build->Make Project,生成了.class文件,.class文件的生成路径是在 app/build/intermediates/classes/debug下



javah生成c头文件

点击”View->Tool Windows->Terminal“,打开终端,进入 \app\src\main的目录下执行javah命令:

javah -d jni -classpath <SDK_android.jar>;<APP_classes> <class>



然后就看到\app\src\main\jni\com_fy_administrator_jnitoso_JniUtil.h出现了.

然后根据.h文件,创建相对应的.cpp文件



创建Android.mk和Application.mk文件

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := JNIDemo
LOCAL_SRC_FILES := testJni.cpp
LOCAL_SRC_FILES += CAdd.cpp

include $(BUILD_SHARED_LIBRARY)


其中LOCAL_PATH是C/C++代码所在目录,也就是我们的jni目录。

LOCAL_MODULE是要编译的库的名称。编译器会自动在前面加上lib,在后面加上.so。

LOCAL_SRC_FILES是要编译的C/C++文件。

Application.mk

APP_ABI := all

#APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a mips64 x86_64


配置gradle

在defaultConfig下,配置ndk:

ndk {
moduleName "JNIDemo" // 生成的so名字
}


在android标签内配置sourceSets:

sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}




执行ndk-build命令生成所有cpu架构的so库



注意:

在最后生成so库的时候,如果无法生成64位的so库,可能原因是ndk版本太老的缘故,下载最新ndk试试

代码:https://github.com/fayou147/JniToSo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: