实现Android Studio JNI开发C/C++使用__android_log_print输出Log

摘要:
我相信很多人在第一次学习Android JNI编程时都需要输出日志。当百度谷歌搜索时,他们都表示需要在Android.mk_LDLIBS+=-L$/usr/lib日志中添加LOCAL。事实上,这就是eclipse的开发方式。Android Studio不以这种方式使用。Android Studio的Android.mk是自动生成的,即使修改也无济于事。事实上,AndroidStudio的Android.mk是基于gradle文件生成的,因此您需要修改gradle文件。

相信很多人在刚开始学习Android JNI编程的时候,需要输出Log,在百度Google搜索的时候都是说需要在Android.mk中加入LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib -llog ,其实这是在eclipse开发上的方式,Android Studio并不是这么使用。

Android Studio的Android.mk是自动生成的,就算修改也是没用了,实际Android Studio的Android.mk是根据gradle文件生成的,那么就需要修改gradle文件。

如果不修改gradle,直接使用__android_log_print就会报错

Error:(36) undefined reference to '__android_log_print'

现在只需要在jni Module中得build.gradle 添加一些代码即可实现输出Log

build.gradle文件完成代码

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ndk {
                moduleName "moduleName"
                ldLibs "log"//实现__android_log_print
                abiFilters "armeabi", "armeabi-v7a", "x86"
            }
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v13:21.0.3'
}
ldLibs "log"  是关键代码
#include <string.h>
#include <android/log.h>
#include <jni.h>
#include <stdio.h>

#define  LOG_TAG    "native-dev"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

void testlog(){
    LOGI("test");
}

免责声明:文章转载自《实现Android Studio JNI开发C/C++使用__android_log_print输出Log》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇自建Git服务器codeblock 设置背景颜色下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java中的日志——Java.util.logging、log4j、commons-logging

Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging。其中log4j和commons-logging都是apache软件基金会的开源项目。这三种方式的区别如下: Java.util.logging,JDK标准库中的类,是JDK 1.4 版本之后添加的日志记...

人脸识别1:1对比 (二)

本项目采用Face++第三方接口,项目实现了两张图片的人脸识别和对比,得到相似度等信息 项目步骤如下: 一、所需权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permissio...

Python机器学习(1)——决策树分类算法

1、决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归。不过对于一些特殊的逻辑分类会有困难。典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题。 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题。因此如何构建一棵好的决策树是研究的重点。 J. Ross Quinlan在1975提出将信息熵的概念引入决策...

keepalived日志

默认日志存放在/var/log/messages 一、查看配置文件 # Options for keepalived. See `keepalived --help'output and keepalived(8) and # keepalived.conf(5) man pages fora list of all options. Here are t...

[转]mysql 的日志的启动与查看

mysql有以下几种日志:错误日志:  -log-err查询日志:  -log慢查询日志: -log-slow-queries更新日志:    -log-update二进制日志:-log-bin 日志文件 文件中的信息 作用 错误日志 记录启动、运行或停止mysqld时出现的问题。 系统故障时定位故障原因 查询日志 记录建立的客户端连接和执行的...

Eclipse的常见使用错误及编译错误

http://blog.csdn.net/zhandoushi1982/article/details/8049404 (1)导入工程时出现:Error generating final archive: Debug Certificate         这样的编译错误是由于新版的Android SDK调试key有1年的试用期限制,如果当年电脑的And...