`
abc20899
  • 浏览: 932735 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android NDK 的学习之旅-----JNI LOG 打印

 
阅读更多
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文件:
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() {
			@Override
			public 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 -llog
LOCAL_MODULE    := helloLog
LOCAL_SRC_FILES := \
HelloLog.c
include $(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 NDK 的学习之旅-----JNI LOG 打印

    本教程将带你踏上“基于Android NDK的学习之旅”,重点探讨如何在JNI中进行LOG打印,以便于调试和理解代码执行过程。 首先,我们需要了解NDK。Android NDK(Native Development Kit)是Google提供的一套工具,用于...

    android-ndk(android-ndk-r26b-windows.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++开发工具集。...通过“android-ndk-r26b-windows.zip”,Windows用户可以方便地获取并开始他们的原生代码开发之旅。

    android-ndk(android-ndk-r25b-linux.zip)

    这个“android-ndk-r25b-linux.zip”文件是NDK的一个特定版本,即r25b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提高性能、...

    android-ndk(android-ndk-r25b-windows.zip)

    这个压缩包“android-ndk-r25b-windows.zip”包含了NDK的第25个版本,专为Windows操作系统设计。NDK的主要功能是让开发者能够在Android应用中使用原生代码,例如C、C++,以实现高性能计算或利用硬件加速等功能。 **...

    android-ndk(android-ndk-r23b-windows.zip)

    这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用开发中的一个重要组成部分,它允许开发者使用原生代码(如C、C++)来编写部分应用程序,从而利用底层的...

    android-ndk(android-ndk-r23b-linux.zip)

    这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提升性能或...

    android-ndk(android-ndk-r26b-darwin.zip)

    在本案例中,我们关注的是"android-ndk-r26b-darwin.zip",这是一个专为macOS系统设计的NDK版本。 **Android NDK的主要功能和用途** 1. **性能优化**:对于计算密集型或图形密集型的应用,如游戏和复杂的科学计算...

    android-ndk-r19c-linux-x86_64.zip

    echo 'export PATH=$PATH:/opt/android/ndk/android-ndk-r19c' | sudo tee -a ~/.bashrc source ~/.bashrc ``` 现在,NDK已准备就绪。接下来,我们需要安装QT 5.13。访问QT官方网站(https://www.qt.io/download)...

    安卓NDK android-ndk-r12b-windows-x86_64

    可用于安卓 qt开发 安卓NDK android-ndk-r12b-windows-x86_64

    android-ndk-r17c-windows-x86_64.zip

    4. **工具链**:NDK包含了一系列编译、链接和其他工具,如arm-linux-androideabi-gcc(此版本的GCC)和clang,用于构建和优化针对不同Android架构的本地代码。 5. **预编译库**:NDK附带了一些预编译的库,如...

    android-ndk-r18b-windows-x86_64.zip

    标题中的“android-ndk-r18b-windows-x86_64.zip”表明这是一个适用于Windows 64位系统的Android NDK版本,具体为R18B更新。 在Android应用开发中,NDK的主要用途包括: 1. **性能优化**:对于计算密集型或图形...

    android-ndk-r20b-windows-x86_64.zip

    对于64位Windows用户来说,"android-ndk-r20b-windows-x86_64.zip"是一个关键资源,它意味着可以直接在Windows环境中搭建本地开发环境,无需担心系统架构问题。解压后的文件包括了所有必要的工具和库,如编译器、...

    android-ndk-r20-linux-x86_64.zip

    《深入理解Android NDK:基于android-ndk-r20-linux-x86_64.zip的探讨》 Android NDK,全称为Native Development Kit,是Google为开发者提供的一套工具集合,它允许开发者使用C和C++语言进行Android应用程序的开发...

    android-ndk-r18b-linux-x86_64.zip

    android-ndk-r18b-linux-x86_64.zip https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip

    android-ndk-r9-windows-x86_64.zip

    《Android NDK R9:深入理解与应用》 Android NDK(Native Development Kit)是Google为Android平台提供的一套工具,允许开发者使用C/C++语言编写应用程序,从而利用原生代码的高性能。本文将深入探讨Android NDK ...

    android-ndk-r16b-windows-x86_64.zip

    "android-ndk-r16b-windows-x86_64.zip" 是NDK的第16个版本,特别为Windows 64位操作系统设计。 在Android应用开发中,通常我们使用Java或Kotlin编写大部分代码,但由于这些语言运行在Dalvik或ART虚拟机上,它们的...

    NDK工具android-ndk-r10e-linux-x86_64

    标题中的"android-ndk-r10e-linux-x86_64"表明这是一个特定版本的NDK,即版本号为R10e,针对Linux 64位系统的版本。 **NDK的基本概念与功能:** 1. **本地库开发:**NDK允许开发者使用C/C++编写部分或全部应用代码...

    android-ndk-r10e-windows-x86_64.exe

    android-ndk-r10e-windows-x86_64.exe

    android-ndk(android-ndk-r25b-darwin.zip)

    `android-ndk-r25b-darwin.zip` 是针对macOS系统的NDK版本,版本号为r25b,包含了一系列用于构建、编译和调试原生代码的工具。 在Android应用开发中,NDK的主要作用和知识点包括: 1. **JNI (Java Native ...

    android-ndk(android-ndk-r26b-linux.zip)

    这个“android-ndk-r26b-linux.zip”文件是NDK的一个特定版本——R26B,特别为Linux操作系统设计。 NDK的主要功能和知识点包括: 1. **原生库支持**:NDK允许开发者创建原生库,这些库可以直接在设备的CPU上运行,...

Global site tag (gtag.js) - Google Analytics