在c程序中向logcat打印日志
-
Android.mk文件增加
LOCAL_LDLIBS += -llog
-
C代码中增加
#include <android/log.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
- 用法类似printf
printf("i = %d\n",i);
LOGD("i = %d",i);
获得类中方法的签名用javap
- 在bin classes 目录下 执行javap -s 包名.类名获得类中方法签名
bin\classes>javap -s com.itheima.alipay.MainActivity
jni开发时三种模式
- 只有一个android工程师,jni流程,本地c程序
- 只有一个android工程师,有.so库,头文件,文档
- 有android,有c工程师,把c工程师提供c函数包装调用
- 把c工程师提供.c和.h文件拷贝到工程的jni文件夹下
- 在jni源文件中包含.h头文件,调用基中c工程师实现的函数
- 在Android.mk文件中LOCAL_SRC_FILES 需要指定编译c工程师提供.c源文件
c++开发jni和c区别
- 源文件类型不同,.cpp,.c
- 调用JNIEnv对应函数方法,c++ :
//c++通过JNIEnv调用函数 env是一个一级结构体指针,比c调用少第一个参数env
env->NewStringUTF("Hello From C++!");
//c调用方法
(*env)->NewStringUTF(env, buf);
- c++编写jni程序需要包含javah生成头文件
#include "com_itheima_hellofromcpp_MainActivity.h"