Android Studio NDK环境搭建

windows上运行arm32架构的安卓模拟器 在win10上研究和学习32位arm汇编指令的执行 阅读详情

NDK

下载NDK

下载

NDK Download

mac: android-ndk-r10e-linux-x86.bin

安装

➜  ndk ls
android-ndk-r10e-darwin-x86_64.bin
➜  ndk chmod a+x android-ndk-r10e-darwin-x86_64.bin
➜  ndk ./android-ndk-r10e-darwin-x86_64.bin

配置环境

gradle.properties

在末尾添加一行: android.useDeprecatedNdk=true

添加build工具

AS > Preferences > Tools > External Tools

add javah
  • Name: javah
  • Group: default(External Tools)
  • Description: generate C header
  • Options: select all
  • Show in: select all
  • Tools Settings:
    • Program: $JDKPath$/bin/javah
    • Parameters: -v -d $ModuleFileDir$/src/main/jni -jni $FileClass$
    • Parameters: -bootclasspath $ModuleSdkPath$/platforms/android-23/android.jar -v -d $ModuleFileDir$/src/main/jni -jni $FileClass$ (if you need android object)
    • Working directory: $SourcepathEntry$

(PS: Right click on the class)

项目结构

➜  ~ javah
用法:
  javah [options] <classes>
其中, [options] 包括:
  -o <file>                输出文件 (只能使用 -d 或 -o 之一)
  -d <dir>                 输出目录
  -v  -verbose             启用详细输出
  -h  --help  -?           输出此消息
  -version                 输出版本信息
  -jni                     生成 JNI 样式的标头文件 (默认值)
  -force                   始终写入输出文件
  -classpath <path>        从中加载类的路径
  -bootclasspath <path>    从中加载引导类的路径
<classes> 是使用其全限定名称指定的
(例如, java.lang.Object)。
add ndkBuild
  • Name: ndkBuild
  • Group: default(External Tools)
  • Description: ndk build
  • Options: select all
  • Show in: select all
  • Tools Settings:
    • Program: /Users/ttdevs/android/android-ndk-r10e/ndk-build
    • Parameters: NDK_LIBS_OUT=$ModuleFileDir$/libs
    • Working directory: $ModuleFileDir$/src/main

(PS: Right click on the module name)

项目结构

编写代码

新建一个Module:ndkutil

修改ndkutil的build.gradle

android {
    ...
    defaultConfig {
        ...
        ndk {
            moduleName "ndkutil"
//            abiFilters "armeabi-v7a", "x86"
//            stl "gnustl_static"
//            cFlags "-std=c++11 -Wall"
//            ldLibs "log", "jnigraphics", "EGL", "GLESv3"
        }
    }

    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir "libs"
    }
}

创建工具类CipherUtil

package com.ttdevs.ndk;
public class CipherUtil {
    static {
        System.loadLibrary("Cipher");
    }
    public static native String getCipherKey();
}

生成头文件com_ttdevs_ndk_CipherUtil.h

在刚才创建的CipherUtil.java上点击右键 > External Tools > javah
此时会在main目录下生成: jni/com_ttdevs_ndk_CipherUtil.h

编写代码

都是在ndkutil/src/main/jni目录下

  • 创建C源码:Cipher.cpp
#include "com_ttdevs_ndk_CipherUtil.h"

JNIEXPORT jstring JNICALL Java_com_ttdevs_ndk_CipherUtil_getCipherKey(JNIEnv *env, jclass){
    return (*env).NewStringUTF("Hello World!");
}
  • 创建Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := Cipher
LOCAL_SRC_FILES := Cipher.cpp

include $(BUILD_SHARED_LIBRARY)
  • 创建Application.mk
APP_MODULE := Cipher
APP_ABI := all

编译生成so文件

在module(ndkutil)上点击右键 > External Tools > ndkBuild ,可以看到如下log:

/Users/ttdevs/android/android-ndk-r10d/ndk-build NDK_LIBS_OUT=/Users/ttdevs/android/workspace/Demo/ndkutil/libs
[arm64-v8a] Compile++      : Cipher <= Cipher.cpp
[arm64-v8a] SharedLibrary  : libCipher.so
[arm64-v8a] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/arm64-v8a/libCipher.so
[x86_64] Compile++      : Cipher <= Cipher.cpp
[x86_64] SharedLibrary  : libCipher.so
[x86_64] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/x86_64/libCipher.so
[mips64] Compile++      : Cipher <= Cipher.cpp
[mips64] SharedLibrary  : libCipher.so
[mips64] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/mips64/libCipher.so
[armeabi-v7a] Compile++ thumb: Cipher <= Cipher.cpp
[armeabi-v7a] SharedLibrary  : libCipher.so
[armeabi-v7a] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/armeabi-v7a/libCipher.so
[armeabi] Compile++ thumb: Cipher <= Cipher.cpp
[armeabi] SharedLibrary  : libCipher.so
[armeabi] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/armeabi/libCipher.so
[x86] Compile++      : Cipher <= Cipher.cpp
[x86] SharedLibrary  : libCipher.so
[x86] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/x86/libCipher.so
[mips] Compile++      : Cipher <= Cipher.cpp
[mips] SharedLibrary  : libCipher.so
[mips] Install        : libCipher.so => /Users/ttdevs/android/workspace/Demo/ndkutil/libs/mips/libCipher.so

Process finished with exit code 0

此时我们可以发现在ndkutil/libs/目录下生成的so文件。

测试代码

String cipher = CipherUtil.getCipherKey();

项目结构

项目结构

Mac下Android Studio NDK 环境搭建并运行 然后查看文件夹 Test\app\build\intermediates\classes\debug 会生成一个.h文件:com_android_talon_JniUtils.h。3,在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。然后接下来的步骤就是根据生成的class文件,利用javah生成对应的 .h头文件。4,生成的so文件也有了,那我们就要引用这个so文件。 阅读详情

相关推荐

ubuntu下Android studio NDK 真机环境搭建

最近需要在linux环境下编译项目,所以记录一下开发环境的搭建过程 使用的是virtualbox 安装ubuntu14 ,我的分区分配方案是:/boost 主分区,102MB ,/ 根目录 逻辑分区 10001MB,/home目录 逻辑分区 10001MB,内存置换空间swap  逻辑分区 2002MB(内存的1.5-2倍),剩下的磁盘安装系统。 系统安装完成后,先激活root账户,首先需要打

I_do_can的博客 2821

Android开发环境搭建

Android开发环境搭建(Eclipse) 1. 下载Eclip

navyhu的专栏 605

Android Studio的NDK开发环境搭建

目标 由于要涉及到音视频的开发,所以要用到JNI,之前一直用AS2.0的,发现用这个做NDK开发太麻烦了,后来看到动脑学院老师的一个教学视频,android studio的NDK开发配置,做了一个学习笔记,视频可以百度搜索的到。配置要求 Android Studio 2.2以上(因为在2.2以上更好的兼容了ndk开发) gradle2.5 以上android-ndk-r10以上如果配置一个过高一个过

the_name_for_yu的博客 1132

Android Studio模拟器(AVD)安装,android开发新技术

上图两个都安装但是版本过低,当然没安装的直接安装即可,咱先升级看看。选中红框内的内容>Apply。 5、安装(更新) AVD HAXM 6、下载后>next>Finish 7、Unable 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》 【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享 to install Intel® HAXM VT-x is disabled in BIOS. 看到标题和上图,就知

m0_64604042的博客 2484

YOLOv8的Anchor-Free革新:从中心点预测到动态IoU匹配的全面解析

本文深入解析了YOLOv8采用Anchor-Free(无锚框)设计的核心优势与实现机制。通过摒弃预设锚框,模型直接预测目标中心点与宽高,结合解耦头、动态IoU匹配及Varifocal Loss等创新,显著简化了训练流程并提升了检测精度,尤其在小目标检测和模型泛化能力上表现突出。

weixin_29094301的博客 358

快速了解Spyder

一 面板介绍菜单栏:放置所有功能工具栏:放置快捷菜单,可以通过菜单栏中的View的Toolbars的复选框来勾选工作区:写代码的地方属性页的标题栏:可以显示当前代码的名字和位置查看栏:查看文件、调试时的对象及变量输出栏:查看程序的输出信息,也可以作为shell终端来输入Python语句状态栏:用来显示当前文件权限、编码,光标指向位置和系统内存二 注释功能注释功能为编写代码很常用功能,下面介绍Spy...

实践求真知 1万+

【ARM汇编】0x00_基于AndroidStudio构建ARM32-v7a以及ARM64-v8a环境

系统映像要求: 适用于 Android 5.0(API 级别 21)及更高版本的 arm64-v8a 系统镜像|默认情况下,构建系统会以 thumb 模式生成 ARM 目标二进制文件,其中每条指令都是 16 位宽,并与。默认情况下,NDK 构建系统会为所有非弃用 ABI 生成代码。也可以指定多个值,方法是将它们放在同一行上,中间用空格分隔。如截图所示,为hello_arm增加可执行权限,运行打印。下表介绍了 Android SDK 工具的常用环境变量。默认情况下,模拟器会将配置文件存储在。

BigDark的博客 5098

Zynq 双核AMP 通信

4、配置离线编译(这里不讲),配置linux的内核地址空间(0x4000_0000改为0x2000_0000),以及单核启动。CPU1设置为0x2000_0000~0x3FFF_FFFF(也可以小于0x3FFF_FFFF)如果禁用CPU1的L2 cache,在CPU1的bsp里面添加编译时候所需要的宏。3、配置工程,将vivado产生的.xsa文件复制到amp_com项目目录下。9、使用petalinux-package --boot 打包。一、vivado工程。5、编译u-boot。

y183128184的博客 1088

Android:Device supports x86, but APK only supports armeabi, armeabi-v7a,arm64-v8a on device

一、前言:在我运行app的时候出现如下错误二、解决方案:我也在网上查了很多,经过自己的尝试验证过的结论分享给大家。

Rssqzqyp的博客 5789

【人工智能 Open AI】程序员怎样提升研发效率?从技术、业务、项目管理等等多个方面来阐述。

程序员要想提升研发效率,需要从技术、业务、项目管理等多方面着手,多靠工具配合实践实现,从而提升研发效率。

AI天才研究院 5529

Python 爬虫高级实战:HTTPS 证书忽略与代理抓包配置

本文深入解析了HTTPS加密与SSL证书校验机制在爬虫开发中的核心问题及解决方案。文章首先剖析了HTTPS协议架构和证书校验流程,指出爬虫开发中常见的证书异常场景及其负面影响。随后详细介绍了Python主流请求库(requests、httpx、aiohttp)的证书忽略配置方法,包括同步/异步模式下的实现方案。针对代理环境,文章系统比较了HTTP、HTTPS、SOCKS5等代理类型的特性差异,并提供了完整的代理配置示例。特别对中间人抓包场景,阐述了Mitmproxy的工作原理和配置要点。最后提出了工程级爬虫

2503_91057718的博客 87

安卓开发环境搭建JDK + SDK Manager + NDK + Android Studio

第一次接触安卓开发,配置环境就折腾了一晚上。在此分享安装与配置过程,希望可以帮助更多入门开发者。 一、JDK JDK(Java Development Kit) 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。 1. 下载 : 官网下载地址 如图(红圈处注意,这里我选择的是8u191,64位,wi...

chengxunyang的博客 4446

uniapp - 微信支付报错 {“errMsg“:“requestPayment:fail:[payment微信:-1]General errors“} 详细解决办法,uniApp使用微信支付时报错

uniapp,微信支付报错,uniapp微信小程序 H5网页 安卓苹果ios真机调试时报错,uniapp真机测试微信支付报错如何解决,调用微信支付出现报错{"errMsg":"requestPayment:fail:[payment微信:-1]General errors"},微信支付提示错误,uniapp进行微信支付时报错怎么解决,如何解决微信支付报错,uniapp微信支付报错fail,uni-app真机测试ios上报错,uniapp真机测试安卓手机第一次支付成功第二次就报错了,uniapp微信支付调用第

✅ 精选推荐文章 4134

【2021最新】安卓开发环境搭建 android studio安装 JDK+SDK+NDK ADB调试

** 2021最新 ** android studio开发环境搭建 包括下载安装 调试 JDK SDK NDK Gradle ADB环境搭建 安卓项目修改编译打包 eclipse+ADT+JDK+SDK+NDK环境搭建 Flutter+Dart开发环境搭建 安卓项目调试打包编译 需要远程搭建调试 请点击 进入 ...

weixin_45691961的博客 1828

诊断CAPL自动化(5) ——没有CANdela,无法编辑cdd数据库文件,也能轻松完成诊断测试

🍅我们知道cdd数据库文件,是CANoe测试环境的重要组件,它可以让我们更加轻松的完成诊断测试工作;但是创建和编辑cdd文件是需要CANdela 来完成的,一个 liscense 就要将近二十万,成本确实高🍅特别是在处理22/2E/31服务的时候,频繁的增加功能,可能需要频繁的用CANdela 修改CDD,我测试开发过程中,一般很少去修改cdd,有这个时间,纯手撸也开发完了,就一个CANdela,鬼知道此时此刻到了谁手里,我也懒得去找。🍅演示软硬件环境;目录📘前言。

蚂蚁小兵 5756

实战落地!Python抓取股票历史数据:开盘/收盘/成交量全维度爬取(附数据清洗+可视化)

股票历史数据抓取的核心是“数据准确性+完整性”,网页爬取适合小批量、个性化需求,API调用适合批量、标准化需求。多市场数据抓取:适配港股(00700.HK)、美股(AAPL)的抓取逻辑;高频数据抓取:抓取分钟级、小时级行情数据,用于短线量化策略;财务数据扩展:抓取市盈率、市净率、净利润等财务指标,结合价格数据做基本面分析;量化策略回测:将清洗后的数据接入Backtrader、VNPY等量化框架,验证策略有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1740

android NDK——搭建Android Studio的NDK环境

我用的是Android studio集成Android的NDK 首先先看一下大概步骤: 1,下载NDK 2,NDK的环境搭建 3,Demo实例之调用本地无参方法直接返回字符串 4,通过javah命令获取到本地头文件 5,生成jni文件夹。用于存放.h和.c文件 6,创建并编写.c文件 7,as中配置生成so文件的信息。 8,解决so文件生成失败 9,结果演示 一:下载NDK...

qq_37710798的博客 1686

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android Studio3.0之NDK环境搭建

最近在公司项目中需要用到串口通讯扫描头,所以需要已有项目中进行NDK开发,故将NDK环境搭建过程记录,并编写测试demo验证。 1.配置NDK环境 下载ndk需要的工具:打开SDKManager 然后选择SDK Tools 理论上以上三个都可以在这里下载并安装,如果下载失败,可以自行去浏览器下载,下载地址:https://developer.android.google.cn/ndk/downl...

Summer丶 1138

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

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

Android Studio NDK开发环境搭建及Demo示例

Android Studio NDK开发详解 所用工具版本 Android Studio 1.5 android-ndk-r10e-windows-x86_64.exe

fenglincanyi的博客 1612

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android Studio 的NDK开发环境搭建

1. 准备1.1.版本要求(这个配置会解决Android Studio在开发C/C++的兼容性问题) (1) Android Studio 2.2以上; (2) Cmake3.6以上:是用来编译C/C++成so的构建工具,创建项目为C++的时候会自动导入这个插件; (3) Gradle2.5以上:从2.5开始支持C/C++,在本次选择2.8; (4) ndk-r-10以上:本次选择13

Jarry的博客 3040

Android studio NDK开发环境搭建

作为一个新手,以前没搞过NDK开发,前一段一个项目需要用到。网上下载了一个Demo,SuperpoweredSDk,什么汁都绞尽了才把它跑起来,什么cmake了,Jni了都不懂,临时看的资料才了解了一点,网上的方法都试了,有的很麻烦(cd什么了最讨厌了),推荐我用的构建方法

zxy19910720的博客 699

android studio搭建cmake的ndk环境

下载所需资源 android studio中下载Ndk、LLDB、CMake 创建可开发的jni项目环境 新建jni文件路径 项目右键: new -> folder -> Jni Folder 文件存放路径:“src/main/cpp/” 创建cmake配置文件 CMakeLists.txt a. 配置信息详见地址 https://d.android.com/studio/pro...

boolean的博客 584

android ndk环境搭建 mac,Android studio-NDK环境搭建(Mac版)

Android studio-NDK环境搭建(Mac版)Android studio-NDK环境搭建(Mac版)请珍惜别人的劳动成果,转发转载或借鉴,请附带原作者链接http://blog.youkuaiyun.com/wj9966谢谢支持~配置NDK环境之前,请已经搭建好Android sdk环境,adt也是最新的。下面开始介绍如何在Mac版的Android studio上搭建NDK环境:1、到http:...

weixin_42510271的博客 558

android之android studio的NDK环境搭建

JNI: 使用NDK 英文网站 http://tools.android.com/tech-docs/new-build-system/gradle-experimental Requirements: Gradle 2.5 only Android NDK r10e (if you are using NDK) SDK with Build Tools at least v

I_do_can的博客 7257

android studio搭建NDK环境,使用JNI (Java 调 C)

android studio搭建NDK环境,使用JNI (Java 调 C)

susu1083018911的博客 814
上一篇: Android本地数据安全尝试(中)——Conceal
下一篇: Crontab定时任务
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值