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

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


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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于小文件的分布式文件存储方案(JDistFS)

    基于小文件的分布式文件存储方案(JDistFS)1.前言这个项目是我2011年在杭州某家互联网公司实习的写的项目,当时坐下来感觉还不错,能够支持上百台服务器的集群需求,并且也支持简单的负载均衡策略,接下来,我来简单地介绍下JDistFS的实现目标,架构以及提供给上层用户使用的接口说明2.JDistFS目标  1)支持C++/JAVA语言的API借口  2)支持Linux/Windows系统  3)支持集群,支持

    2022年5月4日
  • 3分钟理解np.meshgrid()[通俗易懂]

    3分钟理解np.meshgrid()[通俗易懂]欢迎光临我的个人主页官方解释:np.meshgrid(*xi,**kwargs)Returncoordinatematricesfromcoordinatevectors.从坐标向量中返回坐标矩阵不够直观直观的例子二维坐标系中,X轴可以取三个值1,2,3,Y轴可以取三个值7,8,请问可以获得多少个点的坐标?显而易见是6个:(1,7)(2,7)(3,7)(1,8…

    2022年4月28日
  • plsql developer 使用技巧[通俗易懂]

    plsql developer 使用技巧[通俗易懂] Oracle数据库相信已成为很多企业构建自身关键业务的重要后台支撑,也是众多开发人员常常采用的后台。但Oracle自己提供的一套客户端工具不是很好用,极大的影响了工作效率,幸好现在有了PL/SQLDeveloper这款工具。现在越来越多的开发人员成了它的忠实fans。本文就是立足于实用的基础上,总结了了改工具的常用技巧:   1.记住登陆密码   为了工作方便希望PL/SQLDe…

    2022年5月18日
  • 大数据篇:三大指标

    大数据篇:三大指标大数据篇:三大指标上一篇文章中文章讲了如何用服务等级协议(SLA)来评估我们的系统,并讲解了几个常用的SLA指标今天我们来讲分布式系统中另外几个基本概念可扩展性(Scalability)先从我们为什么需要分布式系统说起。原因是我们系统的数据量越来越大,从原来的GB到TB到现在的PB级,单机已经无法胜任这样的工作了。工作中也常有这样的场景,随着业务变得原来越复杂,之前设计的系统无法处理日渐…

    2022年5月10日
  • Python3_打开和运行方式

    Python3_打开和运行方式蹬蹬蹬……第一次写博客,如有错误欢迎指正。Python很火,前几天也是因为需要装了一下,但是并没有用它,今天打开准备刚准备试下,才发现自己对这个软件一无所知,百度了一些资料发现并不能用才知道pyth

    2022年7月6日
  • Ajax发送请求的四个步骤

    Ajax发送请求的四个步骤<scripttype=”text/javascript”> window.onload=function(){ varbtn=document.getElementById(‘btn’); btn.onclick=function(){ //使用Ajax发送请求需要如下几步 //1、创建XMLHttpRequest(); varxhr=…

    2022年5月17日

发表回复

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

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