android studio __android_log_print 问题
来源:互联网 发布:淘宝上gtx660是新货吗 编辑:程序博客网 时间:2024/05/20 13:04
分类: Android平台
最近在使用android studio编译安卓程序,要用到jni
我在jni源码中引用了__android_log_print ,且在Android.mk中加了LOCAL_LDLIBS := -llog
原因:
默认情况下,存在src/main/jni文件夹时,gradle生成脚本会执行ndk编译生成操作,但是,编译生成方式并不是像以前那样用ndk-build去处理Android.mk Application.mk等
进行c/c++代码的编译链接,而是在临时文件路径中重新生成了一份新的mk文件,并以此作为ndk编译项目,所以会导致log库没有被正常链接进去,导致找不到定义。
解决方法:
通过在app目录下的build.gradle中
android {
加入配置: (注意是加在android {}之中)
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir 'src/main/libs'
}
的方式来屏蔽掉默认的jni编译生成过程,这样执行gradle生成时就不会再处理jni中的原生代码,而由手动调用ndk-build方式去生成so动态链接库,同时下面的jniLibs.srcDir重定位生成库文件夹为ndk-build默认生成的libs文件夹(这个默认是src/main/jniLibs,当然是默认生成jni脚本执行成功的话,如果想保留不变的话也可以修改一下手动执行ndk-build时的生成路径),这时再调试运行就可以正确的嵌入native库文件执行了。
进入jni目录,手动运行ndk-build
如果要自动进行ndk-build,在加上面配置的基础上(注意可加在最后面,不能在android {}之中)
在build.gradle后面加上
task ndkBuild(type: Exec) {
commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
我在jni源码中引用了__android_log_print ,且在Android.mk中加了LOCAL_LDLIBS := -llog
但是编译时还是会出现如下错误:
Error:(82) undefined reference to `__android_log_print'原因:
默认情况下,存在src/main/jni文件夹时,gradle生成脚本会执行ndk编译生成操作,但是,编译生成方式并不是像以前那样用ndk-build去处理Android.mk Application.mk等
进行c/c++代码的编译链接,而是在临时文件路径中重新生成了一份新的mk文件,并以此作为ndk编译项目,所以会导致log库没有被正常链接进去,导致找不到定义。
解决方法:
通过在app目录下的build.gradle中
android {
加入配置: (注意是加在android {}之中)
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir 'src/main/libs'
}
的方式来屏蔽掉默认的jni编译生成过程,这样执行gradle生成时就不会再处理jni中的原生代码,而由手动调用ndk-build方式去生成so动态链接库,同时下面的jniLibs.srcDir重定位生成库文件夹为ndk-build默认生成的libs文件夹(这个默认是src/main/jniLibs,当然是默认生成jni脚本执行成功的话,如果想保留不变的话也可以修改一下手动执行ndk-build时的生成路径),这时再调试运行就可以正确的嵌入native库文件执行了。
进入jni目录,手动运行ndk-build
如果要自动进行ndk-build,在加上面配置的基础上(注意可加在最后面,不能在android {}之中)
在build.gradle后面加上
task ndkBuild(type: Exec) {
commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
作者:帅得不敢出门 程序员群:31843264
0 0
- android studio __android_log_print 问题
- android-studio undefined reference to `__android_log_print
- android studio undefined reference to `__android_log_print'
- "android-studio undefined reference to `__android_log_print "错误解决方法
- Android Studio 下安卓 jni 开发错误 undefined reference to __android_log_print
- 使用android studio 报错 undefined reference to '__android_log_print'
- 使用android studio JNI报错 undefined reference to '__android_log_print'
- android ndk添加打印 解决undefined reference to __android_log_print'问题
- Android studio中JNI-NDK开发打印LOG出现 undefined reference to `__android_log_print' 解决
- 在Android中间件JNI层添加调试信息__android_log_print()
- undefined reference to '__android_log_print'(android studio1.3版本)
- Android NDK 编译时候出现 undefined reference to `__android_log_print
- android的ndk编译时错误__android_log_print无法找到定义
- android studio 安装问题
- Android Studio编码问题
- Android studio 使用问题
- Android Studio使用问题
- android studio 问题整理
- WIN10下 JAVA环境搭配
- 04、数组与字符串
- redsi 散列
- msyql
- ViewDragHelper实现仿qq列表滑动删除
- android studio __android_log_print 问题
- 酒店管理系统_02-Servlet版本-mysql数据库(使用方法封装自动创建数据表)
- Bzoj4006:[JLOI2015]管道连接:斯坦纳树
- NOIP 2010 引水入城
- MyBatis集合Spring(二)之SqlSession
- iOS—数据缓存
- hihoCoder搜索二·骑士问题
- 烽火传递
- Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例