android NDK环境开发及生成so文件

混合开发之—— Android studio 下的NDK环境配置,生成so文件步骤并且进行简单使用 1:什么是NDK 它的全拼是Native Develop Kit。 Android NDK 是一套允许您使用原生代码语言(例如C和C++) 实现部分应用的工具集。 在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。 NDK具体讲解我这里就不做介绍了,直接看图讲解: NDK下载和环境配置 首先在android studio的SDK中下载NDK和CMake,然后找到它们的路径,我的是:C:\Users\lJb\AppData\Local\Android\Sdk\ndk\21.0.6113669\ 阅读详情

安装环境:

不用再看网上很多繁琐的NDK环境安装教程,Google已经集成了所有应该集成的插件,就像sdk、adt一样;所以安装环境非常之简单,就分两部:

一、去官网下载安装包,这个就不多说了,对应自己的pc系统版本下载对应安装包就行,然后解压缩;

二、设置环境变量,个人习惯一般在系统Path里设置,只要你设置过java的,这个都是小case;然后去cmd里敲  dnk-build命令,出现以下界面就说明ndk环境设置成功了。




安装了NDK,可以在eclipse下直接生成so文件。NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可。


第一次生成so文件的时候,我们先使用NDK的sample下的hello-jni的例子。

1、启动eclipse,通过Create project  from existing source,选择hello-jni的目录,按默认选项创建工程即可;

2、观察hello-jni的工程目录结构,发现根目录下多了一个名叫jni的文件夹,该文件夹下面有两个文件,Android.mk和hello-jni.c。

Android.mk是用来生成so文件的配置文件,我们来看看里面是什么:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

include $(BUILD_SHARED_LIBRARY)表示会生成一个动态链接库,即so文件,生成的库文件名称为lib*.so

LOCAL_MODULE    := hello-jni表示将要生成一个名称为libhello-jni.so的库文件

LOCAL_SRC_FILES := hello-jni.c表示生成库文件的源文件是hello-jni.c

打开hello-jni.c文件,会看到里面有一个函数:


jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}

这个函数从根据什么原则生成的呢?是根据src下的HelloJni.java文件中的函数 public native String  stringFromJNI();生成的。命名规则为:

Java_(固定开头)com_example_hellojni(用"_"连接的包名)_HelloJni(类名)_stringFromJNI(函数名)

这个函数的生成可以使用javah的命令:用命令行方式进入工程目录的bin\classes目录下,运行javah com.example.hellojni.HelloJni,就会把所有native的函数都按规则生成在一个名为HelloJni.h的头文件里。

3、新建并配置一个新的Builder

1) 点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,点击OK;

2) 在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:

Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。

WorkingDiretcoty中需要填入HelloJni的工程根目录。

3) 在【EditConfiguration】中,配置选项卡【Refresh】:

勾选“Refresh resources upon completion”,

勾选“The entire workspace”,

勾选“Recuresively include sub-folders”。

4)在【EditConfiguration】中,配置选项卡【Build Options】:

勾选“After a “Clean””,

勾选“During manual builds”,

勾选“During auto builds”,

勾选“Specify working set of relevant resources”。

点击“Specify Resources…”勾选TestNDK工程的“jni“目录,Finish!

保存设置,点击OK。

4、生成so文件

由于我们勾选了“During auto builds”,所以在工程有所改变的时候,so文件便会自动编译,正确生成以后就能在工程目录下发现多了两个文件夹,文件夹libs\armeabi目录下生成了一个叫libhello-jni.so的文件。至此,使用NDK生成so文件的工作就完成了。

5、so文件的调用

在HelloJni.java文件中有一段代码:


[mw_shl_code=java,true]static {
System.loadLibrary("hello-jni");
}[/mw_shl_code]

使用loadLibrary就可以加载该so文件了,加载的时候不需要写libhello-jni.so,只要写hello-jni就可以了。
Android Studio NDK开发并调用so库 前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就... 阅读详情

相关推荐

unity+ndk+android+.so+apk

1. 安装NDK 解压下载后的文件夹,将文件夹路径添加到系统环境变量Path中 2. 编写文件 makeSo文件夹名称可以修改,但jni不要修改 Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := NativeCode LOCAL_C_INCLUDES := $(LOCAL_PA...

smilife_的博客 3262

鸿蒙OS单独编译可执行文件以及SO库等

如何在鸿蒙源码中添加编译c语言可执行文件 在源码目录applications/sample中增加目录hello_world,然后在该目录下添加文件BUILD.gn和main.c,其中BUILD.gn内容为 executable(“hello_world”) {//双引号内容一定需要和目录名相同,否则无法编译成功 sources = [ “main.c” ] } 执行hb build -f -T //applications/sample/hello_world命令生成对应的可执行文件,执行成功后,会在 ou

qq_41795122的博客 2689

VASPKIT绘制平面平均电荷差分密度

平面平均密度差(planar-averaged electron density difference)是密度差的衍生。密度差是个三维空间函数,经常通过绘制平面图、等值面图方式图形化考察。虽然这两种图很直观,但平面图会受到截面选取的影响,而等值面图会受到等值面数值(isovalue)选取的影响,因此都有一定任意性,也不容易定量讨论。对于电子转移有比较明确方向的情况,可以绘制平面平均密度差曲线,由此可以清楚地考察垂直于选取的方向上每个截面上的密度差积分值,在定量讨论、对比上比较便利。

weixin_43948934的博客 1万+

AndroidNDK开发——使用Cmake编译生成so文件

可以看到项目demo成功运行,期前也遇到不少问题,so的加载和调用,jni初始化,数据传递等等,如果有兴趣的同学可以自己去试试,学到手的东西才是自己的。本文是以串口通信的so为例,所以里面的头文件及数据调用的方法都是在加载串口数据,不过我为了测试所以暂时只写了一个简单的,因为测试串口需要设备和串口通信助手,这里先不讲,后面有空会逐一讲解串口通信流程和实战demo.

u012556114的博客 3979

content-pipeline:一条可落地的内容生产流水线

content-pipeline 是一种将内容创作工程化的系统性方法,其核心在于用确定性流程替代碎片化人工操作。它基于结构化提示(prompt)、预置叙事框架与品牌参数固化三大原理,实现从素材输入到多平台发布的端到端自动化。技术价值体现在显著降低认知负荷、保障输出一致性、支持本地化资源绑定与闭环反馈校验。典型应用场景包括技术教程批量生成、跨平台(公众号/小红书/即刻)内容适配、AI写作质量可控迭代等。本文深入解析其作为‘内容制造业’基础设施的底层设计逻辑与实操路径,尤其聚焦Claude Code环境下的真实

weixin_31199559的博客 268

操作系統恐龍書第十版課後答案CH10

課後

apple_72111807的博客 4046

Android Studio 进行NDK开发,实现JNI,以及编写C++与Java交互(Java调用本地函数)并编译出本地so动态库

NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。就会生成两个文件这几个so文件,如下图一,然后就能正常获取到C++文件(也就是cpp文件)中的数据了,还可以把so动态库提供给第三方使用,具体方式详见。在android的JNI中,要先将相应的C/C++打包成so库,然后导入到lib文件夹中供java调用。(5)安卓中的so文件是什么?

UrasakiNakajima的博客 8428

黑金ZYNQ7010开发板开箱实测:从接线到串口通信的保姆级指南

本文提供黑金ZYNQ7010开发板从开箱到串口通信的完整实操指南。详细介绍了硬件连接、驱动安装、启动模式设置及串口终端配置等关键步骤,并针对常见问题提供排查思路,帮助FPGA开发者快速上手ZYNQ平台,建立稳定的调试通道。

weixin_29266749的博客 466

Android Studio 编译C/C++生成.so文件

NDK

qq_45661948的博客 7364

VScode - 从入门到精通:高效开发环境搭建指南

本文是一份全面的VSCode高效开发环境搭建指南。从选择理由、安装配置、核心插件推荐到个性化设置与高效技巧,详细讲解了如何将这款轻量级编辑器武装成强大的开发工具。重点介绍了GitLens、Prettier、Live Server等必备插件,以及通过用户设置、代码片段和快捷键打造专属高效工作流的方法,帮助开发者从入门到精通。

weixin_27734811的博客 426

Clock Gating设计陷阱:为什么你的ICG cell总是导致setup violation?(附解决方案)

本文深入分析了数字IC设计中ICG(Integrated Clock Gating)单元导致setup时序违规的常见问题,包括时钟偏斜和数据路径过长两大核心原因。通过量化分析影响因素,提供了逻辑重组、寄存器重定时等优化策略,并介绍了预防性设计方法和物理实现阶段的优化技巧,帮助工程师有效解决ICG相关的setup violation问题。

weixin_29168153的博客 204

Android NDK制作so库

序言:该篇文章记录Android studio怎么使用NDK制作so库过程 1. 配置NDK环境 (1)点击1处进行NDK下载,勾选3处可以查看NDK的具体版本号 (2)NDK下载后的位置 SDK位置在:D:\AS\SDK NDK位置在:D:\AS\SDK\ndk,我这里下载了三个版本的 (3)配置环境变量 a. 打开电脑控制面板---->系统和安全---->系统---->高级系统设置---->环境变量 b.在系统变量里点击新建,创建一个NDK的环境变量 变量名就自己定义了,我

weixin_41914179的博客 712

ThinkBook 16p 2024 BIOS降压定频实战:从解锁CFG Lock到AC Loadline调优

高性能笔记本在满载时频繁撞上温度墙,通常源于固件层默认电压冗余过大,而系统级降压工具又受限于CFG Lock锁定。要根治问题,需要从BIOS固件层面理解电压管理机制——AC/DC Loadline参数控制着CPU在不同负载下的电压请求,通过修改这些负载线值可以安全降低电压,解锁CFG Lock后还能让XTU、ThrottleStop等软件调参工具恢复可用。这种BIOS级调优在工程实践中广泛用于改善散热、稳定频率、压降风扇噪音,尤其适用于联想ThinkBook 16p 2024与拯救者Y9000P等采用HX平

weixin_32496547的博客 386

[Android]NDK开发环境配置与JNI开发

本文的目标是实现NDK开发环境的配置以及学习JNI开发流程。1.环境配置 本文的开发环境为win10 64位+Eclipse+Android ADT+NDK+CDT。 2.安装: 这里只介绍NDK和CDT的安装。 2.1从链接:http://dl.google.com/android/repository/android-ndk-r11c-windows-x86_64.zip下载NDK开发包

Forgive Me 6688

98DX3236内核编译过程小结

0.条件(1)Marvell技术支持提供的压缩文件:GNU EABI:arm-mv5sft-linux-gnueabi_SW3.2.tar.bz2.tar.bz2armebv7-marvell-linux-gnueabi-softfp_i686_201201.tar.bz2CPSS代码:Cpss-PP-DxCh-4.2_012.zipLinux内核文件:lsp-4.2_012.zipLSP-Uni...

snaking616 1801

SAP B1中文培訓教材_SDK

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

安卓NDK开发环境配置与生成so文件方法二

上一篇文章介绍了利用eclipse来进行ndk开发生成so文件,该文章介绍利用终端命令行生成so文件,并补充NDK环境下载配置。 1. 电脑上需要下载相应版本的ndk,我是用的是android-ndk-r14b-windows-x86_64版本,相应的版本下载请参考博文http://blog.youkuaiyun.com/shuzfan/article/details/52690554,该博主太伟大了,整理

hapoy9的博客 562

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NDK开发一

0x1:新建立一个安卓工程 一直NEXT 到Finish 0x2:编写调用so代码和方法定义 在MainActivity.java同目录下右键创建一个JniGg.java文件,用于调用so JniGg.java的代码如下 然后右键编译一下 在找到项目的目录 NdkTest\bin\classes\com\ndktest 看是否有代码生成 一切正常编译...

weixin_30667649的博客 116

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

eclipse中加载C/C++源文件生成对应的so文件(图文教程) 2020最新

准备工作: 确保eclipse正确配置了ndk开发环境; 第一步、新建一个安卓项目 第二步、添加一个ndk支持 第三步、引入jni支持 第四步、在jni文件夹下创建(.c、.h、Android.mk、Application.mk)等文件; 项目结构 .c文件:安卓调用的so文件里方法的具体实现; .h文件:.c文件里用到的方法(类似java里的接口定义)和结构体(类似java里的实体类)的定义; Android.mk文件:标注了SO文件生成相关的信息,例如生成路径、生成名称、引

wangkai13810651628的博客 798

android调用so封装jni,GitHub - Michelle0716/AndroidJniDemo1: 安卓对c进行so文件打包,并以jni的形式进行调用...

AndroidJniDemo1安卓对c进行so文件打包,并以jni的形式进行调用项目中的部分app : 编译so文件jniDemo: 添加运行so文件开发环境:android studio 3.0.1(As3.0以上创建项目,选择支持c/c++,项目会自动生成需要的配置,不需要在编写cMakeList文件,创建后,直接运行,即可调用cpp里面c文件的内容)配置ndk谷歌官方下载 ht...

weixin_42358791的博客 219

win7+eclipse+ndk创建第一个自己编写的ndk应用程序

1、点击下图图标右边三角符号->External Tools Configurations... 2、(1)新建一个configurations(2)自定义一个名字(3)选择你自己jdk\bin目录下的javah.exe(4)选择project_loc在后边加上\src(5)仿照着写吧 3、同样方法创建NDK 4、创建安卓应用程序MyNdk (1)生

猛虎o蔷薇 586

android NDK环境搭建及练习

NDK环境搭建: 1. ndk资源,百度ndk去官网下载;有的是压缩包,有的exe文件,都是双击解压到当前文件夹 2. Cygwin是一种在windows环境下用Linux编译的软件,因为最终的程序在android或者ios内核都是Linux,所以难免程序用编译linux;该工具下载去Cygwin官网下载;下载后安装教程可以百度,很多图文教程;大概说一下:官网下载后,打开软件,这软件还

jackzhouyu的专栏 1187

Windows环境下NDK环境搭建

在windows平台上新的NDK版本(r7及其以上)可不借助cygwin就能编译链接产生.so动态链接库文件。 r7以上需要使用cygwin或者r7以下 的请自行搜索。      环境eclipse 4.4 安装ADT插件。       NDK android-ndk-r10d 32位的。本人的android环境目前都是32位。      android-ndk-r10d 是个e

成长的味道 1007

关于NDK如何生成so文件

准备工作 由于ndk版本和IDE的版本可能存在不一致性,所以编译时会检查ndk的过时性,这个时候如果报警了,可以在gradle.properties文件下添加一行: ## 随着gradle版本的升级,这条设置被废弃了,也就是说高版本gradle里就算设置了下面这句,也会被移除 android.useDeprecatedNdk=true 配置环境变量,方便通过命令提示行,在任意地方使用ndk命令 linux不用配置环境,Windows需要在环境变量里找到Paht,添加ndk根目录地址路径。ndk下到哪

haizhuo的博客 1080

Android-NDK编译.so文件

记录下ndk如何编译.so文件 按部就班的说下:  首先下载NDK,这个我是直接在Android studio里面下载的,也没去官网下载,下载好了,就是配置环境变量了,因为我是从Android studio里面下载的,所以就直接在path中配置D:android_sdk/ndk-bundle这个路径了,配好了后我们可以用ndk-build去cmd命令台检测下看下是否配置成功  接下来就是在An

浮生若梦-笑叹人生 856

NDK开发:保存App私密信息成So库,使用加载动态连接库获取私密信息

在我们App开发中总会有一些私密信息需要保存到App客户端,即使App有Progrund做代码混淆,但是安卓有很多反编译的方法获取App原代码,这些私密信息还是不够安全。 下面我们就来实现一个把私密信息保存成so库,然后让App动态加载,或许这些私密信息。 1)首先,安装安卓的NDK开发环境: 比较完整的NDK开发步骤: 我也按照网上的配置了很多次生成so文件的时候总是会出现问题,编译可以通过,但...

阿甘正传 665
上一篇: 英文电邮札记
下一篇: androidUI(一)之程序员有必要了解的8px原理
android_xiaozhou
博客等级 码龄14年 14粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值