android studio NDK使用,编译c生成.so实践记录
来源:互联网 发布:r软件使用统计分析 编辑:程序博客网 时间:2024/05/16 19:07
开发环境,Android studio 2.1.2,SDK环境和NDK环境
SDK不说了,NDK环境配置网上也有很多,这里就简单记录下:
1 下载NDK并安装到电脑 D:\Android\android-ndk-r11c
2 android studio中右键项目进入菜单配置NDK
3 在项目的gradle.properties文件中加上 android.useDeprecatedNdk = true
为了方便生成头文件和so文件,我们可以在Android Studio → External Tools中设置两个命令,分别来生成头文件和生成.so文件
Program: $JDKPath$/bin/javah
Parameters: -encoding UTF-8 -d ../jni -jni $FileClass$
Working directory: $SourcepathEntry$\..\java
Program: D:\android\android-ndk-r11c\build\ndk-build.cmd
Parameters: NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs
Working directory: $ModuleFileDir$\src\main
(注意:NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs
这个含义是将生成的so文件放在jniLibs这个文件下,
如果不写这句话,什么都不填,则为默认的文件夹)
写一个测试类
右击这个类选择刚才写的javac命令,就会生成头文件
根据头文件写一个测试的.c文件
注意:打红框的地方要和头文件的名称和方法命名一样
写一个Android.mk文件
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := JniTestLOCAL_SRC_FILES := TestJni.cinclude $(BUILD_SHARED_LIBRARY)
然后右击jni文件夹选择我们的命令ndk-build
则生成了
build.gradle的配置
最后so已经生成,调用
android.useDeprecatedNdk=true
最后加上一句
Android Studio正确添加so库的两种方式
以下两种方式二选一
方法一:
1.在src/main中新建jniLibs文件夹 ,把.so复制进去即可
方法二:
1.在app/中新建libs文件夹,把.so复制进去
2.在build.gradle中添加以下五行脚本即可(注:以下脚本意思是会把libs文件夹当成jniLibs文件夹,可以直接用so库了)
sourceSets { main { jniLibs.srcDirs = ['libs'] }}贴上完整的build.gradle文件
apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.tofu.chat" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { jniLibs.srcDirs = ['libs'] } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile project(':common') compile files('libs/kandy-1.6.244.jar')}
//这里是指定so的路径,如果是正规点的路径jniLibs就不用写sourceSetsle .
//现在so的路径是在jniLibs_test这个目录所以要指定一下
sourceSets{
main{
jni.srcDir "src/main/jni"
jniLibs.srcDir"src/main/jniLibs_test"
}
}
//这里是指定libs的so路径,一般不用写,下面这句会自动去找libs里面的文件
// compile fileTree(dir: 'libs', include: ['*.jar'])
/* sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}*/
Demo
0 0
- android studio NDK使用,编译c生成.so实践记录
- android studio NDK使用,编译c生成.so实践记录
- android studio NDK使用,编译c生成.so实践记录
- android studio ndk-build 编译C生成.so文件(ndk基础篇)
- android studio 编译C生成.so文件
- android studio编译c生成.so文件
- android studio 编译C生成.so文件
- 关于android studio进行NDK编译生成.so文件
- Android studio NDK编译及so库生成方法讲解
- Android studio NDK编译C代码so文件
- android studio中使用ndk编译.so文件,调用C/C++代码(jni编程)
- android studio 2.3.2 ndk so的生成和使用
- Android Studio使用NDK编译自己的.so库
- Android Studio 使用NDK编译Protobuf为so库
- android NDK开发使用Builder自动编译生成so文件
- Android studio NDK-JNI 编译so文件
- android studio 中编译C生成.so文件
- Android--ndk编译生成.so文件
- ReactiveCocoa 小总结
- jQuery选择器之基本筛选选择器
- 完整java开发中JDBC连接数据库代码和步骤
- 仿京东的一个MVC框架的使用
- includeos 创建 输出一个hello world的过程
- android studio NDK使用,编译c生成.so实践记录
- 分享一款很实用的数据恢复软件 easyrecovery
- spring配置文件中分别使用多个properties文件
- MySQL5.7 运行SELECT DISTINCT 遇到3065问题
- Linux下快速查看CPU使用情况的相关命令
- 前端框架与库的区别
- 数据库连接错误The Network Adapter could not establish the connection
- Required int[] parameter 'ids' is not present
- 几款移动跨平台App开发框架比较