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 打印 eclipse工程文件
android-ndk(android-ndk-r26b-windows.zip)适用于Windows系统
android-ndk(android-ndk-r25b-windows.zip)适用于Windows系统
老版本的ndk,版本号是android-ndk-r9-windows-x86_64
android-ndk-r13b-windows-x86_64 稳定版 platforms包含9-24
android-ndk-r18b-linux-x86_64.zip https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip
android-ndk(android-ndk-r23b-windows.zip)适用于Windows系统
可用于安卓 qt开发 安卓NDK android-ndk-r12b-windows-x86_64
android-ndk(android-ndk-r25b-darwin.zip)适用于macOS系统
android-ndk(android-ndk-r25b-linux.zip)适用于Linux系统
android-ndk-r15c-linux-x86_64.zip 分包压缩的,合并后为一个压缩包,再解压即可.
android-ndk-r10e-darwin-x86_64 第二个卷 cat x* > file.zip 第一卷地址 http://download.csdn.net/detail/hejisan/9803776 解压 http://blog.csdn.net/hejisan/article/details/53725955
Android ndk r21e
Android-NDK-MD5-安卓jni 进行md5加密; Android-NDK-MD5-安卓jni 进行md5加密
android-ndk-r20-windows-x86_64
老版本的ndk,版本号为android-ndk-r9d-windows-x86_64,保存起来以备不时之需。
android-ndk-r23-windows 安卓环境下载
这个是windows版的android ndk。这是最后一个支持gcc的版本了,下一个版本就不再支持gcc了,所以有需要继续使用gcc的,可以下载这个版本
android-ndk-r16b-windows-x86_64.zip 在谷歌开发者官网下的,因为被墙了,所以做个备份
64位windows下ndk,方便直接使用。cygwin+ndk+FFmpeg配合使用,编译Android 动态库进行视频编辑。