[Android开发]Mac下NDK开发(JNI)

Mac下使用Eclipse实现Android中调用C/C++(NDK)基础详细教程 写于2014年那个办公室停电导致热爆了汗流浃背的夏天,因为以前不懂MD,一直没整理上博客。 一、吐槽和需求果然跟po主用之前猜的差不多,eclipse不愧是po主非常非常没有猿粪的开发工具,po主简直已经无力吐槽了,为什么稳定性这么糟糕的东西居然还能被如此多大牛开发者甘之如饴?一群叫嚣着要开发出世界上最人性化UI的人连自己用的工具都不稳定(人性化?呵呵),就像一个拿着漏勺烂锅残口菜刀的乞丐跟你说他能 阅读详情

Mac下Android调用C/C++程序的实现(JNI)


IDE用的是Androidstudio。

首先,我们需要配置Mac下的NDK环境,比较简单,参考博客:

Mac下Android studio 之NDK配置教程(一)
Mac下Android studio 之NDK配置教程(二)

好,接下来我们就开始写我们在Mac下的第一个NDK程序。

第一步:首先,新建一个项目,项目截图如下:

这里写图片描述

在NavHelper中定义JNI的接口:

public static native String getTextStringFromNativate();
public native String print(String msg);
第二步:生成JNI相关文件

记住,写好代码后记得Build->Rebuild Project。

localhost:~ dream$ cd /workspace/NDKDemo/app/src/main 

注意workspace是你自己的路径,接下来采用javah来生成C头文件

localhost:main dream$ javah -d jni -classpath ../../build/intermediates/classes/debug/ -jni com.geniusvjr.ndkdemo.NavHelper

运行完成后,回到Android Studio下面,你会发现在main的同级目录下,生成了一个叫jni的文件夹,并生成了文件:

com_geniusvjr_ndkdemo_NavHelper.h

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

#ifndef _Included_com_geniusvjr_ndkdemo_NavHelper
#define _Included_com_geniusvjr_ndkdemo_NavHelper
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_geniusvjr_ndkdemo_NavHelper
 * Method:    getTextStringFromNativate
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_geniusvjr_ndkdemo_NavHelper_getTextStringFromNativate
  (JNIEnv *, jobject);

/*
 * Class:     com_geniusvjr_ndkdemo_NavHelper
 * Method:    print
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_geniusvjr_ndkdemo_NavHelper_print
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

接下来自己新建一个c文件:main.c来实现接口中的方法:

//
// Created by 陶程 on 16/3/12.
//

#include "com_geniusvjr_ndkdemo_NavHelper.h"

JNIEXPORT jstring JNICALL Java_com_geniusvjr_ndkdemo_NavHelper_getTextStringFromNativate
        (JNIEnv * env, jobject object){
    return (*env)->NewStringUTF(env,"这是C语言程序");

}

JNIEXPORT jstring JNICALL Java_com_geniusvjr_ndkdemo_NavHelper_print
        (JNIEnv * env, jobject object, jstring str){
    return (*env)->NewStringUTF(env,"Java_dzq_ndk_NavHelper_print");
}
第三步:编译——运行

首先配置好Android Studio的NDK路径,打开项目根目录下 local.properties 文件,追加ndk.dir(NDK的路径)

ndk.dir=//Users/dream/Documents/bin/android-ndk-r10e 

然后在app目录下的 build.gradle中设置需要生成的库文件名(生成的so文件名):

ndk
    {
       moduleName "Jni"  //设置库(so)文件名称
    }

Tips:将这段代码加在defaultConfig 这项里面

在NavHelper类中加载:

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

最后一步的配置,打开项目根目录下面的:gradle.properties 加上以下代码

android.useDeprecatedNdk=true

我们在MainActivity里面写一些显示的代码:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        String says = NavHelper.getTextStringFromNativate();
        tv.setText(says);
        setContentView(tv);
    }
}

模拟器中显示如下:

这里写图片描述

至此,NDK的第一个程序开发完毕。

jni获取Android设备MAC Address最完美解决方案 jni获取Android设备MAC Address最完美解决方案。解压import即可。新版本可能不太试用了,请酌情下载 立即下载

相关推荐

android jni获取 Mac地址

在jni中获取android 设备的mac地址

mac上ndk环境配置

一、启动终端Terminal 二、输入  pico .bash_profile  回车。 三、输入以下内容【路径依实情而定】: export JAVA_HOME=`/usr/libexec/java_home` export PATH=${PATH}:${JAVA_HOME}:${A

zf135792468的专栏 1万+

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3774

Mac上搭建NDK环境

原文链接:https://blog.youkuaiyun.com/qq_31844349/article/details/79479357 Android Studio 默认的NDK 1.下载安装好Android Studio之后,若是下载默认的NDK可以点开: Android Studio -> Preferences -> Appearance -> System Settings -&...

sazass的博客 1477

量化回测框架三选一:Backtrader、Zipline、PyAlgoTrade,新手到底该跟谁学?

本文对比分析了三大量化回测框架Backtrader、Zipline和PyAlgoTrade,帮助新手选择最适合的入门工具。从安装配置、策略编写到文档查阅,详细解析各框架的特点和适用场景,为量化交易初学者提供实用指南。

weixin_28745309的博客 267

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

Mac及Android环境下的JNI学习

Mac及Android环境下的JNI学习 4 人阅读 发表回复 简介 从Java中调用C/C++库 Hello World 带参数的函数 Android中的情况 从C/C++中调用JAVA 高级主题 参考 简介 JNI就是Java Native Interface, 也可以理解为一般脚本语言的C AP...

runfeel 180

魔百和CM211-1刷Armbian全流程:从安卓盒子到Linux服务器的完美变身

本文详细介绍了如何将魔百和CM211-1机顶盒刷入Armbian系统,实现从安卓盒子到Linux服务器的完美变身。涵盖硬件兼容性验证、固件选择、刷机流程、系统优化及常见问题解决,特别适合技术爱好者低成本搭建家庭NAS或开发环境。

weixin_30329623的博客 238

Mac下AndroidStduio安装NDK和使用

安装ndk和cmake: 安装cmake插件: 新建项目,选择Native C++ 在项目中引入ndk目录

hongxue8888的博客 4056

YOLO26涨点改进 | 全网独家,注意力创新改进篇 | Arxiv2025 | YOLO26引入MSLA多尺度线性注意力模块,高效提取多尺度特征和建模长程依赖,含多种创新改进,助力有效涨点

本文提出了一种多尺度线性注意力模块(MSLA)来优化YOLO26模型。MSLA通过并行使用不同尺寸的深度可分离卷积(3×3至9×9)提取多尺度特征,并结合线性注意力机制高效建模全局依赖关系。该模块显著提升了模型对多尺度目标的检测能力,同时保持了轻量化特性。实验表明,MSLA能有效增强小目标检测和复杂场景下的分割精度。文章详细介绍了MSLA的网络结构、核心优势及实现代码,并提供了两种集成MSLA的YOLO26改进方案,为实时目标检测任务提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 292

【异常】出现“‘git‘ 不是内部或外部命令,也不是可运行的程序”的错误

出现“‘git’ 不是内部或外部命令,也不是可运行的程序”的错误通常意味着 Git 没有被正确安装在你的系统上,或者其可执行文件的路径没有被添加到系统的环境变量中。

奶爸的编程之路,也就一周冷个三天 1389

android ndk mac安装成功,Mac下Android Studio NDK 环境搭建并运行

本文包括两部分。一,NDK环境配置二,NDK项目运行。2,下载完成之后,在cmd命令中解压文件。(1)cd 命令进入下载后ndk存放的目录 cd /Users/talon/Desktop/eclipse/androidStudio/NDK(2)执行解压命令 ./android-ndk-r10d-darwin-x86_64.bin按下回车后,可以看到一直有信息在跑。看到下图 代表解压成功。解压...

weixin_42300167的博客 1025

【Android性能优化】Android App 冻结与内存压缩:CachedAppOptimizer 源码级解析

本文基于 AOSP Android 16 源码,以 `CachedAppOptimizer` 为核心,深度解析 Android 对"后台缓存应用"的两大治理手段——**进程冻结(Freezer)**与**内存压缩(Compaction)**。文中完整还原冻结的 debounce 去抖动机制、`mEarliestFreezableTime` 的最早可冻结时刻算法、粘性冻结(Sticky Freeze)的语义,以及解冻时必须"先解 binder 再解进程"的顺序奥义。

weixin_44081096的博客 175

安卓 NDK 秘籍(一)

使用 Android NDK 编程本质上是同时用 Java 和 C、C++、汇编等原生语言编写代码。Java 代码在 Dalvik虚拟机VM) 上运行,而原生代码编译为直接在操作系统上运行的二进制文件。JNI) 像一座桥梁,将这两个世界连接起来。图表中的箭头表示哪个方面发起交互。Dalvik VM和原生代码都在Android 系统之上运行(Android 是基于 Linux 的操作系统)。它们需要系统提供执行环境。JNI是Dalvik VM的一部分,它允许原生代码访问 Java 代码的字段和方法。JNI。

龙哥盟 900

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 120

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android Studio下NDK—JNI初涉

之前在开源中国上面发布的,今天把它挪过来 http://my.oschina.net/u/565690/blog/519438         由于后期的需求研究了一下在Android Studio下面的NDK开发流程,以前使用Eclipse的时候也搭建过这方面的东西,当时是在Window的环境下,使用的Cygwin来模拟Linux下的编译环境,步骤可能比较繁琐,这里就不介绍了,这里主要是给

小斑马的专栏 872

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Mac 下配置NDK/JNI开发环境,并运行简单demo

1.去NDK官网下载mac版的ndk,然后自己解压出来。 2.打开androidStudio正常新建一个显示"hello world" 的android工程. 3.配置NDK路径   (a)点击菜单栏File, ProjectStructure   (b)在弹出的窗口里,左侧选中SDKLocation   (c)然后在右侧Android NDK Location中填入刚才解压出来的NDK目录的路径

YC1101的博客 1247

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JNI和NKD入门系列二,mac环境下配置NDk,并在android studio上进行JNI开发

1、下载并配置NDKNDK各版本下载地址在此http://blog.youkuaiyun.com/shuzfan/article/details/52690554,对应好各自系统。(压缩文件记得解压)接下来将NDK存放路径添加到PATH环境变量。首先打开当前用户的环境变量配置文件(可能文件名略有不同)vim ~/. bashrc然后在文件后面添加类似信息: export PATH=/ Android/andr...

wu2007369的博客 3246

mac android ndk 路径,Mac Android Studio下NDK—JNI初涉

今天由于后期的需求研究了一下在Android Studio下面的NDK开发流程,以前使用Eclipse的时候也搭建过这方面的东西,当时是在Window的环境下,使用的Cygwin来模拟Linux下的编译环境,步骤可能比较繁琐,这里就不介绍了,这里主要是给大家分享下Mac 下Android Studio NDK开发的基础。1、大家Mac 下NDK的开发环境;终端打开cd 到相应的下载文件同级目录下:...

weixin_39655689的博客 753

Android JNI MAC OS环境配置

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33894992的博客 85

Android studio开发NDK,第一个NDK程序教程

欢迎来到Studio的NDK教程(Mac平台)本文主要内容是:NDK 在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。。 —— [NDK详细讲解 ] 本文重点是怎么MAC下Android Studio开发第一个NDK程

Spoofing----无线安全 649

Android NDK环境测试

Android NDK开发的环境很多,windows,mac,还是Ubuntu,设置cygwin,个人更中意mac和Ubuntu,cygwin用着不习惯,感觉在windows上面装一个cygwin像一个累赘一样. 首先很多不大工程的so开发基本上都会直接涉及到javah这个命令行的使用,这个可以在cmd.exe中输入javah -help查看一下命令有哪些调用方式.这里不具体介绍,只在下面的工程

刘志保的博客 1699

Mac下安装NDK,进行JNI开发

Android studio 集成NDK开发环境,只要设置ndk路径。如果使用eclipse bundle开发,没有NDK插件,需要导入jar包,和ADT插件一样。如果下载JavaEE for mac 64位,需要安装ADT插件才能开发android应用。下面介绍Mac下安装如何NDK,进行JNI开发。为什么用AS开发,还要Eclipse帮衬?有些项目是eclipse的,用它来阅读项目源码或许有些必

Android_杜小菜_移动开发技术专栏 2250

mac ndk开发环境搭建

mac ndk开发环境搭建 1 建立Android 工程  2 建立java文件并编译生成.class 文件 (java文件需包含native函数和加载共享库的静态语句) 3 打开控制台进入工程目录bin/classes下  4 输入javah -jni 包名+类名 如 com.example.hello.MainActivity 得到头文件 5 在andorid工程根目录下手动建一个j

liyoushihaer的专栏 950

MAC 下Android Stdio的NDK环境搭建以及开发初步

在mac系统下使用AS进行jni开发需要使用到NDK,下面来介绍下在mac下配置NDK环境以及进行jni调用的实例初步。首先介绍下JNI是干啥的:JNI是Java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码。JNI 是本地编程接口,Java和C/C++互相通过的接口。Java通过C/C++使用本地的代码的一个关键性

关山口男子职业技术学院的猿猴 2250

mac java jni_mac下NDK开发(java调用so文件)

eclipse下两种配置方式:一种是右键工程选择properties->builders->new->program,然后再做相应的选择,因为这种方式我没有尝试过,网上也有例子,所以我就不做详细的说明。另一种方式:先加载ndk路径: 选择标题栏的Eclipse->Preferences-> 然后选择NDK的路径即可。接下来新建一个android工程:TestJNI...

weixin_28622215的博客 1283
上一篇: [面经]腾讯一面
下一篇: [面试]阿里一面
陶程
博客等级 码龄12年 360粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值