Android NDK 的学习之旅-----JNI LOG 打印
16lz
2021-01-23
1.创建android 工程
android create project -n ndk002 -t 8 -p /Users/zhaoshun/android/android-ndk-r8/samples/ndk002 -a Test002 -k killqq.net.ndk
2.编写应用层项目文件 Test002.java文件:
3. 在工程目录中创建jni 目录及文件
Android.mk文件内容:
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
这句话打印log信息
HelloLog.c文件:
4.编译运行
android create project -n ndk002 -t 8 -p /Users/zhaoshun/android/android-ndk-r8/samples/ndk002 -a Test002 -k killqq.net.ndk
2.编写应用层项目文件 Test002.java文件:
public class Test002 extends Activity{private static final String libSoName = "helloLog";private EditText getStr;private Button send_btn;private String getCstr = null; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); getStr = (EditText)findViewById(R.id.input); send_btn = (Button)findViewById(R.id.send); send_btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {getCstr = setParamToJNI(getStr()); // 取得c传过来的字符串if (getCstr == null) {//Log.i("info","load error");}else {//Log.i("info",getCstr);}}}); } //定义本地方法 由C实现 public native String setParamToJNI(String msg); //取得用户发送的字符串 private String getStr(){ String str = getStr.getText().toString(); return str.trim().length()>0?str:"default"; } //加载库文件 static { System.loadLibrary(libSoName); }}
3. 在工程目录中创建jni 目录及文件
Android.mk文件内容:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llogLOCAL_MODULE := helloLogLOCAL_SRC_FILES := \HelloLog.cinclude $(BUILD_SHARED_LIBRARY)
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
这句话打印log信息
HelloLog.c文件:
#include <string.h>#include <jni.h>#include <android/log.h> //加载log头文件//jstring msg 接受参数 用户发送的字符串jstring Java_killqq_net_ndk_Test002_setParamToJNI( JNIEnv* env,jobject thiz,jstring msg){ if (msg == NULL) { //该方法为打印的方法 __android_log_print(ANDROID_LOG_INFO, "JNIMsg", "Your params is null"); return (*env)->NewStringUTF(env, "Your params is null"); } char data[128]; memset(data, 0, sizeof(data)); char *c_msg = NULL; c_msg = (*env)->GetStringUTFChars(env, msg, 0); //该方法为打印的方法 __android_log_print(ANDROID_LOG_INFO, "JNIMsg", "Get Param: %s From Java", c_msg); return (*env)->NewStringUTF(env, "success");}/** __android_log_print(ANDROID_LOG_INFO, "JNIMsg", " Log Content ");JNIMsg 为 你想输出到的过滤标签Log Content 为你 想输出的相关信息,用法与C的Printf一样*/
4.编译运行
更多相关文章
- Android 实例子源代码文件下载地址380个合集
- Android基本控件常用属性及方法
- android 布局文件中xmlns:android="http://schemas.android.com/
- Android——导入已存在的android工程时出现红叉错误“AndroidMan
- android中xml文件的使用详解
- Android中一个Activity多个intent-filter的调用方法
- [摘]android 入门xml布局文件
- Android 选择文件并返回路径