eclipse生成SO文件「建议收藏」

eclipse生成SO文件「建议收藏」利用eclipse进行NDK开发(生成SO文件)开发步骤

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Eclipse生成so文件:

1.首先需要eclipse,jdk能正常开发

2.点Window->Preferences->Android->NDK,设置NDK路径(先要下载。如:E:\android-ndk-r9c)

3.在工程上右键点击Android Tools->Add Native Support…,然后给我们的.so文件取个名字,

  例如:myndk(myndk.so)

  这时候工程就会多一个jni的文件夹,jni下有Android.mk和my-ndk.cpp文件。

  Android.mk是NDK工程的Makefile,myndk.cpp就是NDK的源文件

4.建议单独写一个类文件来加载动态库。

 如:

public class Load {

    static { 

        System.loadLibrary(“NDKTest”);//加载so

    }

    public native int addInt(int a, int b); //调用方法

 }

5.现在就可以去写myndk.cpp的代码了。

#include <jni.h>

#include “com_example_ndktest_Load.h”

//JNI接口的命名规范是:Java_ + 调用该方法的包名(包名的点用_代替) + _ + 调用该接口的类名 + _ + 方法名,对于实例方法,

//有两个参数是必要的,一个JNI的环境指针JNIEnv *,另一个是调用该方法的Java实例jobject

JNIEXPORT jint JNICALL Java_com_example_ndktest_Load_addInt (JNIEnv *, jobject, jint a, jint b) {

    return a + b;

}

6.注意事项


1.编译头文件


(1)  cmd进入文件目录,一般到src目录就可以了


(2) 调用:javah -classpath . -jni 包名.类名。(如:javah -classpath . -jni com.buaa.testjni.TestJNI)


(这时编译成功的话在jni文件夹下就有.h文件了)


2.编译也许会遇到Unable to launch cygpath. Is Cygwin on the path?错误,解决办法如下:


工程右键,点Properties->C/C++ Build的Building Settings中去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd


3.cmd进入到项目目录下(可以是src输入:ndk-build  就可以得到so文件(前提是配置好了NDK)


在C/C++ Build中点击Environment,点Add…添加环境变量NDKROOT,值为NDK的根目录(如:E:\android-ndk-r9c)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用的Map集合

    常用的Map集合Map集合Map集合常用方法增加删除判断获取Map集合中TreeSet的应用Map集合中HashSet的应用Map集合常用方法Map集合和Collection集合的区别Map集合是有Key和Value的,Collection集合是只有Value。Collection集合底层也是有Key和Value,只是隐藏起来。1.增加put(Kkey,Vvalue)2.删除…

    2022年5月29日
    30
  • fgc java,频繁FGC的真凶原来是它

    fgc java,频繁FGC的真凶原来是它频繁FGC的真凶原来是它上周排查了一个线上问题,主要现象是CPU占用过高,jvmold区占用过高,同时频繁fgc,我简单排查了下就草草收场了,但是过后我对这个问题又进行了复查,发现问题没有那么简单,下面跟着我一起分析一下到底是怎么回事?复查过程复查原因事后再看dump文件注意到最大的对象是一个ArrayList,里面几乎都是ElasticSearchStatusException对象可是发生…

    2022年6月19日
    80
  • 半年学习安排

    半年学习安排

    2021年5月7日
    124
  • Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】

    No cross,no crown . 不经历风雨,怎么见彩虹。Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个”机器人”可以7*24小时工作,它能能够自动帮助你做一些事情,如监控,提醒,自动处理故障等。Redis-sentinel简介Redis-sentinel是Redis的作者antirez,因为Redis集群的被…

    2022年2月27日
    51
  • 图解springmvc 执行流程

    图解springmvc 执行流程核心对象DispatcherServlet核心控制器负责请求,响应,数据的分发。HandlerMapping处理器映射器,负责到controller中,找到对应的方法,返回给核心控制器。HandleAdapter处理适配器,将handle找到的方法执行,执行结果,即ModelAndView数据和视图返回给核心控制器。HttpMessageConvertor消息转换器,数据类型的转换,如日期…ViewResolver视图解析器,核心控制器调度视图解析器,视图解析器,返回视图。核心控制

    2022年6月28日
    29
  • C/C++中static变量和static函数的用法

    C/C++中static变量和static函数的用法静态成员数据和静态成员函数1.C中静态数据和静态函数的用法C语言中定义一个静态变量和静态函数主要是为了满足某个文件的需求比如我们在文件List.c中定义staticintcount=0;//静态变量staticintget_last_node(List*Head)

    2022年7月16日
    127

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号