参考了https://blog.csdn.net/zi413293813/article/details/50074239 然后自己重新整理补充

我用的ndk-r10d

ndk下载地址http://developer.android.com/sdk/ndk/index.html

eclipse 开发环境

1、用eclipse创建一个android项目

2、选中项目右键->Properties->Builders->New->选中Program 点击OK->各种配置文字太难描述直接上图

配置了ndk-build 的路径还有刚刚创建的那个android项目

打勾

Specify Resources 浏览找到刚刚创建的android项目就可以了,项目配置就这些

在src目录先创建一个class文件,内容如下

public class JniClient {
static public native String AddStr(String strA, String strB);
static public native int AddInt(int a, int b);
}

找到JniClient.java(刚刚创建的那个类)所在位置,右键打开cmd或者powershell 执行命令javac JniClient.java

在项进入到src磁盘目录右键打开cmd或者powershell 执行命令 javah com.example.mtest.JniClient (这个需要根据自己项目实际路径而定)

这样就生成了com_example_mtest_JniClient.h 头文件内容就不展示了,最前面连接地址里面有

然后手动创建一个com_example_mtest_JniClient.c 最前面连接地址里面有 ,编辑器有问题贴不出来

把这个头文件和源文件剪切到 jni 目录(项目根目录下 没有就自己创建)

在jni目录里面添加一个Android.m

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=_SRC_FILES := com_example_mtest_JniClient.c
include $(BUILD_SHARED_LIBRARY)

以及Application.mk

#使用STL库
APP_STL := gnustl_static
#兼容老的语法,使一些错误降为警告
APP_CPPFLAGS += -fpermissive
#选择平台,如果都需要生成用空格隔开
APP_ABI := armeabi armeabi-v7a

刷新项目就会在lib目录生成对应的 so 文件

下面写一下如何使用刚刚生成的so库

重新新建一个android 项目 我这里用的是cocos2d-x的一个游戏项目

把生成的so放到新的android项目的jni目录下

在这个新项目Android.mk里面添加如下内容

include $(CLEAR_VARS)
LOCAL_MODULE := libTestNdk
LOCAL_SRC_FILES := TestNdk/$(TARGET_ARCH_ABI)/libTestNdk.so
include $(PREBUILT_SHARED_LIBRARY)

LOCAL_STATIC_LIBRARIES += libTestNdk

还不能直接使用,回到第一个创建的android项目 把JniClient.java这个文件打成一个jar包

我是在src目录下powershell里面执行jar -cvf mtest.jar com\example\mtest\JniClient.class

生成mtest.jar包 ,不过bin目录里面好像有自动生成

把这个jar包放入第二个项目lib里面,在appactivity里面添加如下代码

然后在onCreate()方法里面调用

在手机上运行项目可以看到如下输出

.748: I/System.out(5703): ...abelmou...HelloWorld from JNI !

说明调用成功,写得有点乱方便自己回顾

最新文章

  1. undefined reference to `__android_log_print'
  2. PHP类的原理
  3. spring的多个PropertyPlaceholderConfigurer实例装配的问题
  4. h5 js 图片预览并判断 ajax上传
  5. poj 2245 水题
  6. subprocess使用
  7. [转]回答--python django学的很迷茫怎么办?
  8. 基于php下载文件的详解
  9. Careercup - Facebook面试题 - 5733320654585856
  10. codeblocks常用快捷键
  11. listView 分页加载数据
  12. R笔记(1):formula和Formula
  13. python3中报错:TypeError: 'range' object doesn't support item deletion
  14. Pseudo Registers
  15. 第21月第6天 zhihu如何用3个月零基础入门机器学习
  16. mysql数据库转成oracle踩过的坑
  17. android-------Android Studio使用MAT分析工具遇到的错误
  18. CentOS7为firewalld添加开放端口及相关操作
  19. mybatis查询缓存——(十三)
  20. 用Spark向HBase中插入数据

热门文章

  1. 【canvas系列】canvas实现“ 简单的Amaziograph效果”--画对称图【强迫症福利】
  2. chrome 浏览器调用 ocx 插件
  3. C# 实现水印
  4. 《SQL Server 2008从入门到精通》20180627
  5. C语言const与#define
  6. 使用SharpZipLib压缩与解压文件
  7. Ajax 请求下载 Execl 文件
  8. java并发之同步辅助类CyclicBarrier和CountDownLatch
  9. Falsk的模板分配和蓝图、定制错误信息、 和补充
  10. Ubunt16.04下安装PHP7+Nginx+MySQL