Android studio 初步使用JNI(二)制作.so库
来源:互联网 发布:牛扒和牛排区别知乎 编辑:程序博客网 时间:2024/05/16 02:50
制作.so库
- 配置NDK环境,不明白的朋友可以去看我的上一篇文章
创建Android项目-JNIDemo
新建一个类,命名为NdkJniUtils
package test.com.jnidemo;/** * Created by wl on 2017/6/7. */public class JniUtils { static { System.loadLibrary("JNIDemo"); } public native String getCLanguageString();}
使用javah命令生成.h文件
点击Build–>Make Project,生成class文件
找到class文件,在app->build->intermediates->classes->debug目录下
通过javah命令生成.h头文件,点击Android Studio底下菜单中的Terminal
依次敲入:
cd app\build\intermediates\classes\debug
javah -jni test.com.jnidemo.JniUtils
如图:
注意:test.com.jnidemo为包名,请结合项目情况进行修改
在debug目录下找到test_com_jnidemo_JniUtils.h
根据生成.h头文件,新建.c或者.cpp文件,生成.so库文件
- 在app->src->main目录下新建一个jni文件夹,用来存c/c++的头文件以及源文件,将刚刚生成.h头文件剪切到这里
- 在jni文件夹下创建一个jnitest.c或jnitest.cpp文件,并写下如下代码:
#include "test_com_jnidemo_JniUtils.h"JNIEXPORT jstring JNICALL Java_test_com_jnidemo_JniUtils_getCLanguageString (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"My name is Super Marie,Hi!"); }
- 注意:
现在已经基本完成JNI层的实现了
接下来在jni文件夹下创建Android.mk和Application.mk文件
- Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := JNIDemoLOCAL_SRC_FILES := jnitest.cinclude $(BUILD_SHARED_LIBRARY)
其中LOCAL_PATH是C/C++代码所在目录,也就是我们的jni目录。LOCAL_MODULE是要编译的库的名称。编译器会自动在前面加上lib,在后面加上.so。LOCAL_SRC_FILES是要编译的C/C++文件。
- Application.mk
APP_ABI := all
表示生成所有平台的动态库。
配置gradle
1、在defaultConfig下,配置ndk:
ndk { moduleName "JNIDemo" // 生成的so名字 }
2、在android标签内配置sourceSets:
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
如图:
3、在gradle.properties最下面加上“android.useDeprecatedNdk=true”
开始生成.so库
1.清空Termial并输入cd app\src\main,回车
2.输入ndk-build即可生成.so库
如果没有生成可以Build->Make Project一下,进行编译,生成.so库文件,路径:app->build->intermediates->ndk->debug->lib下
下篇文章将会讲怎么使用这个.so库
阅读全文
0 0
- Android studio 初步使用JNI(二)制作.so库
- Android Studio使用jni、so库
- Android Studio使用jni、so库
- JNI使用实例:Android Studio使用JNI编译so库
- Mac 下Android Studio JNI 制作so库
- Android studio 初步使用JNI(三)简单使用JNI
- Android Studio JNI配置及.so库使用
- Android Studio中使用JNI和第三方.so库
- Android studio 初步使用JNI(一)配置NDK
- JNI的入门使用及so库的生成(Android Studio环境)
- Android studio使用JNI实例(2)- 调用外部so库
- Android Studio JNI生成so库
- Android Studio JNI 开发.so库
- Android Studio制作.so库实践
- android NDK JNI so文件的制作和使用
- android NDK JNI so文件的制作和使用
- Android studio使用JNI全解析(二)
- Android Studio cmake方式jni开发,在c层使用其它动态链接库*.so
- struts-入门 登陆 maven 构建
- Web基础之Servlet+JDBC+JSP项目实战记录(二)
- WorkStation创建linux虚拟机
- Libgdx专题系列:物理引擎篇 Box2D
- CodeFroces 814A An abandoned sentiment from past(快排)
- Android studio 初步使用JNI(二)制作.so库
- PopWindows 底部显示与隐藏
- 从零开始学_JavaScript_系列(45)——ES6新增数据结构:Map和WeakMap
- Kubernetes集群安全配置
- Android开发小点滴之selector、layer-list
- 第43章 z 域分析(下)
- Android 常用控件(TextView、EditText)及Shape外形资源、Selector选择器
- CPS功能实现简例,附录详细代码
- MAC中Windows下配置Anaconda3+Tensorflow+OpenCV