Eclipse Android JNI初探小结

1、Eclipse没有NDK选项解决

       NDK需要ADT插件支持;ADT可以下载到本地或是联网下载;

       具体可以参照http://blog.csdn.net/shi_weihappy/article/details/42238625点击打开链接

2、出现NDK之后;配置NDK路径

       打开Window-->Preferences-->NDK-->NDK Location 选择下载好的

       D:\android-ndk32-r10b-windows-x86\android-ndk-r10b

       如下图所示:

     

3、编写JNI

package com.example.myfirstjni;

public class MyJni {
	
	static {
		System.loadLibrary("MyFirstJni");
	}
	public native static String getString();
}

 4、把MyJni转化为二进制文件 

       命令行切换到工程目录下,cd-->myfirstjni下面;执行javac MyJni.java;在myfirstjni路径下面会生成MyJni.class文件;

       之后cd 到src目录下,执行javah com.example.myfirstjni.MyJni;相关图如下所示

       

5、右键工程项目;在Android Tools-->Add Native Support添加本地支持,在根目录中会生成jni文件夹,下面有.mk文件

       和.cpp类,此时我们把上一步生成的头文件放到jni中备用,也可以自己生成Application.mk来编译相关的支持CPU的.so文件;

       默认的是armeabi平台的CPU;相关的路径和展示如下图所示

       

       .mk文件里面可以不动

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := MyFirstJni
LOCAL_SRC_FILES := MyFirstJni.cpp

include $(BUILD_SHARED_LIBRARY)
Application.mk
   
APP_ABI := all //这里可以修改比如APP_ABI := armeabi-v7a
MyFirstJni.cpp类里面,具体的参数需要含义自己百度

#include <jni.h>
#include <com_example_myfirstjni_MyJni.h>//导入头文件,如果有需要
JNIEXPORT jstring JNICALL Java_com_example_myfirstjni_MyJni_getString
  (JNIEnv *env, jclass){
    return env->NewStringUTF("I'm ok!");
}
.h文件里

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_myfirstjni_MyJni */

#ifndef _Included_com_example_myfirstjni_MyJni
#define _Included_com_example_myfirstjni_MyJni
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_myfirstjni_MyJni
 * Method:    getString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_myfirstjni_MyJni_getString
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif
这里会报错,就是Type 'jclass' could not be resolved

此时需要配置一下

paths 和 Symbols;

右键工程项目-->Properties-->C/C++ General-->Paths and Symbols;右边选择include标签



点击OK即可

6、后面直接编译即可(注意:在直接run的时候记得把工程项目切换为java;在add native support的时候会切换为C/C++的模式


总结:有很多很多的坑,大家自己慢慢尝试。







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值