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
相关文章推荐
- android 上下滑动重影
- Android学习记录(十) 弹框阻塞处理
- Android(1) elipse离线安装adt后,没有图编显示
- Android-Using DDMS
- 十五、访问者设计模式
- Android中Parcelable接口用法
- Android杂记(4)获取VIewPager中Fragment的实例
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Android消息传递机制浅析
- android中关闭软键盘
- Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
- Android JNI编译时几个常见的问题
- Android Styles 使用详解
- Android获取屏幕大小
- 手机与pc服务器通信那点事
- android AsyncTask介绍
- Android Scroller完全解析,关于Scroller你所需知道的一切
- android自定义View基础
- 十四、模版方法设计模式
- Android开发学习中的问题2016-5-03手动创建活动