NDK JNI 笔记
来源:互联网 发布:mysql 5.5.21.tar.gz 编辑:程序博客网 时间:2024/06/05 20:53
1.首先是先安装好 android-ndk-r10e ,这是必须的第一步。
2.新建一个Android 工程,并在目录中新建一个jni目录,里面用来放置mk,.h,和.c 文件(当然,这里还没生成)
3.编写本地方法的声明,public static native String getStringFromC();
4.(这一步应该在最后,提前说明)为了方便编译so库,可以直接在eclipse中配置好NDK目录和命令,
上面选择安装的NDK目录,下面选择编译的Android工程
,这样配置好,就可以在运行程序的时候,不用再命令行去编译so库了。
5.生成.h 头文件
javah -classpath bin/classes;D:\Android_tools\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20\android.jar -d jni com.example.hellondk.MainActivity
记住,若出现
,则是忘记把android.jar 目录加进去了。
6.编写.mk文件,不用记住,只需到android-ndk-r10e目录中的sample中,复制,进行修改即可
如:
#LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello 生成的so库的名字。LOCAL_SRC_FILES := hello.c 要编译的c文件。include $(BUILD_SHARED_LIBRARY)
7.根据.h头文件,编写c文件的函数实现:
#include <stdio.h>#include <stdlib.h>#include "com_example_hellondk_MainActivity.h"JNIEXPORT jstring JNICALL Java_com_example_hellondk_MainActivity_getStringFromC( JNIEnv * env, jclass jclass) { return (*env)->NewStringUTF(env, "Hello from JNI !!++!!!!");}
8.调用本地方法:
首先,加载so库:
static{ System.loadLibrary("hello"); }
然后,即可调用:
package com.example.hellondk;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;public class MainActivity extends Activity { static{ System.loadLibrary("hello"); } TextView tView; public static native String getStringFromC(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tView = (TextView) findViewById(R.id.tv); tView.setText(getStringFromC()); }}
由于刚接触jni,所以,为了记忆深刻,重新把这一个完整的步骤重新实现了一遍,以加深记忆,也可方便日后查看。
为C实现的方法加入日志打印
其实,只是导入一下所需要的包和头文件,再修改一下mk文件即可
1.在.C文件中加入:
#include <android/log.h>#define TAG "HELLOLOG"#define LOGV(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)
2.修改.mk文件:
LOCAL_LDLIBS += -llog
即可在.c方法中直接调用LOGV(“”);方法
:LOGV("log from native");
- NDK JNI 笔记
- JNI和NDK笔记
- JNI NDK开发笔记
- NDK&jni基础笔记
- Android笔记--NDK/JNI Log 输出
- android jni ndk-gdb调试笔记
- ndk配置+android jni开发笔记
- jni ndk 学习笔记,带源码
- NDK开发学习笔记—JNI入门
- NDK学习笔记:jni数据类型转换
- 【笔记】Android Studio中使用NDK-JNI
- Android 笔记 NDK/JNI的使用
- NDK开发笔记---CMake构建JNI
- JNI&NDK
- NDK jni
- JNI & NDK
- NDK,JNI
- NDK-JNI
- 程序员小白的这一年
- EditText 限制字符类型,个数 (已封装)
- 【codeforces 333A】 - Secrets
- 1安全基线远程评估系统
- 创建型模式5之4-Builder建造者模式例子理解
- NDK JNI 笔记
- Linux下Tomcat中catalina.out文件切割
- FutureTask的使用示例
- DoNetZip解压缩中文文件名乱码的解决方案
- SharePoint Server 2016 Beta 中已弃用的功能
- A应用中打开B应用
- couchbase 3.0.1 问题总结
- 2015总结
- 蓝桥--在线评测--入门训练