基于eclipse进行ndk开发的环境配置

Android NDK 环境搭建,大牛最佳总结 最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的14套腾讯、字节跳动、阿里、百度等2020面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。ics/618156601)对大家有一个方向参考。 阅读详情

前述

虽然我们在其他的博文中(如https://blog.youkuaiyun.com/ericbar/article/details/76602720),早就用到了ndk,但如果想在Android设备运行包含这些so的应用程序,还需要将这些so打包到apk里去。
现在主流的Android开发IDE工具是Android Studio,但是本文还是从eclipse入手进行讲述。

指定NDK的位置

打开eclipse,从菜单栏依次选择,Windows——Preferences——Android,通过Browser选择ndk正确的路径,OK完成。
ndk路径

项目添加原生支持

所谓原生支持,就是本地支持,也就是native支持,也就是支持JAVA和C/C++混编。为了测试,我们先建立一个Android项目,比如helloworld,一路自动就好了。
接下来,选中项目名,右键->Android Tools->Add Native Support,
原生支持
如果是第一次为此项目添加原生支持,会弹出对话框,需要指定so库的名字,如下所示,
指定库名
这时会在项目中生成一个jni目录,并且自动添加了helloworld.cpp文件。

JAVA里的JNI调用

jni是java native interface的简写,可以通过它实现java和本地c/c++的互相调用,我们在上述例子MainActivity类里,添加对本地接口函数nativeHelloWorld的调用,

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nativeHelloWorld();
    }

并声明如下,注意前面的native关键字,

public native void nativeHelloWorld();

加载so共享库

在实现nativeHelloWorld本地方法之前,我们先在MainActivity类里加载libhelloworld.so本地库,参考如下方式,

static {
    System.loadLibrary("helloworld");
}

配置eclipse的javah

从菜单栏选择Run->External Tools->External Tools Configurations,左侧栏里选中Program,单击左上角的New launch configuration,再单击Main选项卡, 按照如下信息填写,需要确保Android sdk路径下有类似android-19的文件夹,根据自己sdk实际情况调整,

NAME:  Generate C and C++ Header File
Location:  ${system_path:javah}
Working Directory:  ${project_loc}/jni
Arguments:  -classpath "${project_classpath};${env_var:ANDROID_SDK_HOME}/platforms/android-19/android.jar" ${java_type_name}

重新配置

接下来,切换到Refresh选项卡,选中Refresh resource upon completion复选框,并在列表中选择The project containing the selecte resource,如下图,

javah_refresh

切换到Common选项卡,选中Display in favorites menu组下面的复选框External Tools,如下图,

javah_common

点击Apply保存配置信息。

通过javah产生头文件

首先必须在左侧的项目栏里,选中包括本地方法声明的java类,一定不要选中在项目上。接下来,点击菜单栏里的Run->External Tools->Generate C and C++ Hearder File,java工具将自动产生对应的头文件。

如果此时遇到 “Unable to launch cygpath” 之类的错误,需要做如下配置:
在项目上点右键,Properties->C/C++ Build,选中Building Settings选项卡,去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd,如下图,

build

接下来,在左侧的C/C++ Build中点击Environment,点Add…添加环境变量NDKROOT,值为NDK的根目录,例如我的是D:\eclipse2016\android-ndk-r9d-windows-x86_64\android-ndk-r9d,如下图,

ndkroot

确定后,再次按照前述方法,应该可以顺利的产生jni的头文件了。

最后,如果仍然遇到如下报错,一定是android.jar没找到,需要检查前面的配置是否正确,

错误: 无法访问android.app.Activity
  找不到android.app.Activity的类文件

比如,我的默认配置如下,一定要确保sdk/platforms/android-19/android.jar下文件存在,

-classpath "${project_classpath};${env_var:ANDROID_SDK_HOME}/platforms/android-19/android.jar" ${java_type_name}

如果还报错,那就是环境变量ANDROID_SDK_HOME没有配置上,参考下图配置系统环境变量即可。

ANDROID_SDK_HOME环境变量

编写原生代码

通过前述步骤,已经在helloworld项目中jni目录下生成了com_example_helloworld_MainActivity.h文件,我们在helloworld.cpp里实现对应声明的方法即可。只有如下一个函数需要实现,

JNIEXPORT void JNICALL Java_com_example_helloworld_MainActivity_nativeHelloWorld
  (JNIEnv *, jobject);

具体代码如下,一定要记得添加com_example_helloworld_MainActivity.h头文件的引用,否则可能运行时找不到函数,但是可以编译通过,出现莫名其妙的错误。这里的log输出借助Android的原生实现,所以,需要在Android.mk里添加LOCAL_LDLIBS += -llog 。

#include <jni.h>
#include <stdio.h>
#include <android/log.h>
#include "com_example_helloworld_MainActivity.h"

#define TAG "helloworld"
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)

JNIEXPORT void JNICALL Java_com_example_helloworld_MainActivity_nativeHelloWorld
  (JNIEnv *, jobject)
{
    LOGV("This is jni hello world. ");
}

运行程序,可以在logcat窗口里看到如下结果,

05-09 22:52:54.801: V/helloworld(10412): This is jni hello world. 
Android NDK环境配置 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的bui 阅读详情

相关推荐

Eclipse与Android NDK集成的全面指南

本文还有配套的精品资源,点击获取 简介:本教程详细介绍了在Eclipse开发环境中集成Android NDK的整个过程,适合进行混合式Android应用开发的开发者。内容涵盖了环境配置、Eclipse配置、项目创建、NDK集成、构建和调试以及注意事项,是学习如何在Eclipse中高效使用Android NDK的完整指南。 1. 环境安装与配置 1.1 开发环境的...

weixin_28939623的博客 1621

(最新最详细)eclipse安装NDK开发环境的搭建和Build Configuration的添加。

一、搭建NDK环境前请看我们的注意 注意: ①搭建NDK前需要先安装ADT和SDT; ②下载好后的NDK需要”解压“,并注意文件放在哪里; ③安装ADT教程点我;安装SDT教程点我; ④由于本人是小白,用的eclipse已汉化,可以记住图标去点击,我会给提示! ------------------------------------------------------------------------------------------NDK下载地址: ①android-ndk64-r10(建议进此处下载

qq_56912516的博客 3655

Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy)

文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。

coffeeii的博客 5828

Eclipse开发NDK

1. 概念了解: 交叉编译: 在一个平台下,编译另外一个平台能够执行二进制的代码 windows下编译 成android 平台可以运行的汇编 工具: ndk cdt: Eclipse开发c/c++插件 , 如果eclipse没有安装需要安装,查看是否安装该插件 ##NDK目录结构 * docs:帮助文档: HOW TO:相当于index * ...

dreams_deng的博客 2726

S7-200SMART系列全套接线说明

SMART200接线方法,输入,输出,模拟量,面板,扩展糟等,并且详细说明接线原理。

文都龙哥 1万+

大数据国赛第2套任务C-子任务一特征工程

根据**Hudi**的dwd_ds_hudi库中相关表或MySQL中shtd_store中相关表(order_detail、sku_info),计算出与用户id为6708的用户所购买相同商品种类最多的前10位用户(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),将10位用户id进行输出,若与多个用户购买的商品种类相同,则输出结果按照用户id升序排序,输出格式如下,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;

weixin_44117248的博客 903

android在eclipse环境下的ndk开发环境配置

文章目录1 简介2 预置环境3 生成JNI头文件4 可能遇到的问题4.1 如果希望删除当前项目中的Native Support4.2 生成一次so之后频繁报File Exists的错误5 所有文件的内容 1 简介   android平台需要使用C/C++语言编写的库需要经过JNI(Java Native Interface)。JNI是一种编程框架,JNI允许运行于JVM的Java程序调用本地的C/C++以及其他高性能语言编写的代码。JNI有两种调用方式: java代码调用native的代码。这种方式比较常

梦的灰色边沿... 1311

c语言播放背景音乐

相信很多童鞋都在为大学课设而伤透头脑,而背景音乐的使用无疑会成为其中的一个亮点(总比没有好吧(╯▽╰)),故接下来我将介绍一下如何用C播放音乐。我用的编译器是CodeBlocks16.01接下来新建一个C文件建立完后是这样滴然后添加其中mciSendString()函数是由&lt;mmsystem.h&gt;库提供的供播放音乐(MP3)的函数第一个参数是歌曲所在的绝对路径 打开音乐所在位置 复制这...

qq_41443987的博客 3万+

NDK开发之Eclipse环境配置

建立 本文介绍了如何: 获取并安装NDK 。 配置系统和Eclipse和与它采用了Android开发工具( ADT) 。 验证,使用一个简单的示例,一切工作正常。 安装 要安装和配置NDK ,请按照下列步骤操作: 获取和安装An...

chouwayun2376的博客 138

【YOLOv8全方位学习手册】第四章 数据增强:从扩充数据到塑造模型的认知边界

"""使用 Albumentations 做自定义增强,兼容 YOLO 格式"""])# 转成 numpy# boxes 必须是 [[x_min,y_min,x_max,y_max], ...]# 在数据加载时调用你可以把集成到 PyTorch 的 Dataset 类里,或使用 Ultralytics 自带的DataLoader。

VectorShift的博客 211

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 328

Android JNI开发之NDK环境配置(eclipse)

最近开发一个小项目,需要用到native方法,于是需要配置NDK环境。首先肯定是网上找,网上比较多,但是都不全,有的已经过时了。所以,我综合大家之长,写了如下配置流程,供大家使用,有什么不对的请大家指正。 总共分为5步: 1、下载NDK。这个我不说了。 2、关联NDK。这个很简单,跟关联SDK一样。Window–>Preferences–>Android–>NDK–>帮NDk目录输进去就好了。

qq_30899223的博客 1035

BPC坏点矫正

whatis the Bad Pixel? 坏点为死点,也就是基本不随照度变化呈现光电线性转换的关系。表现为暗态常亮,亮态常暗。 坏点分类:静态坏点:亮坏点,暗坏点。 动态坏点:在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要亮。与sensor ...

camerall 1万+

Android NDK开发之旅(1): Eclipse中NDK环境搭建与JNI开发流程

看着本篇文章的标题,或许你会问现在AndroidStudio版本都更新到3.0了,从2.2开始就可以直接使用Cmake来构建NDK项目,根本没有必要再去研究NDK在Eclipse中的开发。嗯,在我使用过AndroidStudio构建NDK项目后,我也是这种想法,通过cmake编译C/C++代码来构建NDK开发框架确实是非常智能、步骤也很简单,完全可以秒杀Eclipse。但是,对于从来没有开发NDK项目的人来说,直接上AS开发可能一是无法明白这其中的原理,比如Android项目是如何构建C/C++开发环境的、

老蒋也疯狂 4403

CKS-CN考试之路----11

显然是alpine-b的镜像有libcrypto3-3.1.4-r5。新版本发布老版本会被回收,此时pod只剩下2个container。我们依次测试是哪个镜像里包含libcrypto3。可以看到alpine的pod有3个副本.

Q先生 652

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Mac os x环境配置 Android ndk 开发环境(eclipse篇)

Mac os x环境配置 Android ndk 开发环境(eclipse篇)本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦: 1.请确保安卓环境已经存在 2.下载并解压最新版本ndk http://developer.android.com/tools/sdk/ndk/index.html 3. 配置 .bash_profile 开启终端,输

aa65252157的专栏 1710

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

eclipse下android开发环境配置包括【JDK、SDK、NDK、ADT】(图文教程)2020最新

第一步、jdk的安装及配置 参考前文:https://blog.youkuaiyun.com/wangkai13810651628/article/details/111644784 第二步、安装Eclipse 这里推荐我常用的eclipse版本下载链接:ssssssssss 或者去Eclipse官网(http://www.eclipse.org/downloads/)上下载Eclipse,选择EclipseIDE for JAVA EE Developers,根据自己的系统选择32位或者64位的安装包,

wangkai13810651628的博客 815

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

windows下eclipse android-ndkr7b环境配置

注意:android-ndkr7b版本中已经集成了cygwin的功能,所以不再需要安装配置cygwin,ndk-build.cmd会帮助我们完成一切。 1)cdt 环境配置            为了方便在eclipse下直接开发c/c++程序,我们需要配置cdt(若你的c/c++程序不需要在eclipse下编写可以省去这一个步)。       下载地址:http://www.ecli

xinzheng_wang的博客 9253

Android NDK开发环境搭建

一、综述         有很多介绍搭建Android NDK开发环境的文章,但是,大部分都是过时的,总结一下,大致有两种: (1)eclipse的NDK Builder配置; (2)eclipse的NDK环境配置。         一般,NDK是r7之前的版本,必须要安装Cygwin。本文使用r10版本。下面分别介绍这两种开发方式的搭建。先安装好ndk,安装过程这里就不说了。

feifei 879

windows下eclipse android-ndkr8b环境配置

注意:android-ndkr7b版本中已经集成了cygwin的功能,所以不再需要安装配置cygwin,ndk-build.cmd会帮助我们完成一切。 1)cdt 环境配置             为了方便在eclipse下直接开发c/c++程序,我们需要配置cdt(若你的c/c++程序不需要在eclipse下编写可以省去这一个步)。       下载地址:http://www.ec

strliu的专栏 2725

Android下NDK开发环境搭建

Android下NDK开发环境搭建   1.     AndroidNDK安装与配置   1.1  NDK简介   Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部分功能开发的工具,通过这个工具,我们可以把用C/C++代码编译成可以直接运行在Android平台上的本地代码,这些本地代码以动态链接库( *.so )的形式存在,也正因为这样,

LoongEmbedded的专栏 2232

Android NDK开发(七)——现代化开发方式

本专栏的前面几篇博客写了一些Android下通过JNI进行NDK开发的基础知识,主要步骤在里面也写的很清晰,但是看起来比较麻烦,为什么呢?可能细心的朋友会发现我每次在进行交叉编译的时候,是通过cygwin模拟Linux环境用ndk-build命令进行编译的,而且每次新建JNI工程的时候,都会在工程目录下手动的新建一个jni的目录,在该目录下新建C源码文件和Android.mk配置文件,这一系列的操作显得特别繁琐,尤其是cygwin,首先其下载安装是个非常耗时耗力的操作,其次使用cygwin还需要理解Linu

Vincent的专栏 3474

[mac]Android NDK 学习随笔

随着android学习的深入,总该接触NDK(native development kit)了。 它是干啥用的呢?简单地说,就是在android应用中调用c/c++代码。 好~,既然知道它是干啥的就该说说怎么用了。 1、首先,最讨厌的配环境了! 下载NDK,谷歌的网站反正我是高低进不去,我是在国内网游分享的资源中下载的,搜一搜总是有的。我用的是版本是"android-ndk...

antu1433的博客 152

Eclipse NDK 开发之 HelloWorld

使用Android的新版本sdk、ndk开发,完全不需要进行命令行操作。 1,确认Android开发环境; 2,下载ndk,在eclipse中设置路径; 3,创建接口类; 4,配置Android项目的NativeSupport; 5,修改HelloWorld.cpp,实现接口功能; 6,修改主程序,调用接口; 7,进行工程编译,运行程序; 8,Demo下载。

lintax的专栏 1860
上一篇: 基于ndk-r16b编译Android平台的FFmpeg-3.4.2和FFmpeg-4.0动态库
下一篇: 基于FFmpeg和SurfaceView实现Android原生窗口(ANativeWindow)的视频播放
ericbars
博客等级 码龄10年 120粉丝 30原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值