NDK

1.1 Android NDK 环境配置----Cygwin

喜夏-厌秋 提交于 2020-02-05 03:33:29
一.开发NDK要使用的工作   一. 环境和工具:32 win7旗舰版 Cygwin(1.7.25-1)ndk-r9b cdt(对应你的Eclipse版本,我直接下载的Eclipse IDE for C/C++ Developers) 和基本的android开发环境   由于我是在windows 32 位机器环境下开发NDK,所有需要如下工具:Cygwin(1.7.25-1)下载地址: http://cygwin.com/setup-x86.exe 。官方网站为 http://www.cygwin.com/ (PS:我自己喜欢在官网下载软件,(*^__^*) 嘻嘻……);NDK的版本为r9b 下载地址为 http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86.zip 。官方网站为 http://developer.android.com/tools/sdk/ndk/index.html 。 如果你的机器为64位机器,到官网下载相应的版本即可,再次不在赘述。 二.安装Cygwin Cygwin的功能是windows平台下模拟unix和Linux环境开发。把unix和Linux 的程序移植到window 平台。 1.点击下载完成的 setup-x86 .exe,点击下一步。  2.你会看见三个可以选择的步奏,

NDK+eclipse+cygwin配置要点

房东的猫 提交于 2020-02-05 03:30:13
1.安装cygwin(devel目录下最好都安装) 2.cygwin安装目录下的“home/当前用户名”的.bash_profile下以UltraEdit(Unix方式)或者eclipse打开,最后添加一句: ANDROID_NDK_ROOT=/cygdrive/d/SDK/android-ndk-r5b-windows(实际的NDK路径) export ANDROID_NDK_ROOT (可以在cygwin中用cd $ANDROID_NDK_ROOT确认) 3.在eclipse的项目的属性中添加新的外部链接编译器后,指定参数为: --login -c "cd /cygdrive/d/HelloNDK/jni && $ANDROID_NDK_ROOT/ndk-build" (先cd到eclipse工程下的jni目录,再执行ndk-build) (如果ANDROID_NDK_ROOT命令无法识别,先确认是否成功配置了NDK的所在路径(如D:\SDK\android-ndk-r5b-windows)到Path环境变量里) 来源: https://www.cnblogs.com/mixiyou/archive/2011/04/05/2006157.html

JNI 和 NDK 介绍

夙愿已清 提交于 2020-02-05 02:59:49
1、JNI Java Native Interface(JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机(VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 上面过程分为2个部分: 第一、用C语言生成一个库文件。 第二、在java中调用这个库文件的函数。 JNI 是Java调用Native机制,是Java语言自己的特性,类似的还有微软.Net Framework上的p/invoke,可以让C#或Visual Basic.Net调用C/C++的API,所以说 JNI和Android没有关系 ,在PC上开发Java的应用,如果运行在Windows平台使用 JNI是是经常的,比如说读写Windows的注册表。 2、NDK Native Development Kit(NDK) 是一系列工具的集合。 * NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库。 * NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。 * NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。 NDK

Android NDK开发

安稳与你 提交于 2020-02-05 02:48:45
Android NDK 开发教程(极客学院) 一、Android NDK环境搭建 使用最新ndk,直接抛弃cygwin,以前做Android的项目要用到NDK就必须要下载NDK,下载安装Cygwin(模拟Linux环境用的),下载CDT(Eclipse C/C++开发插件),还要配置编译器,环境变量,特别麻烦,新版就不需要了。 方法/步骤 Android官网下载Android的开发工具ADT(Android Development Tool的缩写),该工具集成了最新的ADT和NDK插件以及Eclipse,还有一个最新版本SDK,解压之后就可以用了。 ADT插件:管理Android SDK和相关的开发工具的 ; NDK插件:用于开发Android NDK的插件,ADT版本在20以上,就能安装NDK插件,另外NDK集成了CDT插件 。 下载链接见:http://developer.android.com/sdk/index.html Android官网下载最新的NDK,注:NDK版本在r7以上之后就集成了Cygwin,而且还是十分精简版。 下载链接见:http://developer.android.com/tools/sdk/ndk/index.html eclipse配置 解压ndk并配置环境变量:添加系统环境变量NDK_ROOT为: D:\Android\android-ndk

Android NDK开发入门实例

不羁岁月 提交于 2020-02-05 02:48:01
AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合。 注意 : AndroidNDK 只能用于 Android1.5 及以上版本中。 I. Android NDK 目标: Android虚拟机允许你的应用在源码中通过JNI调用本地代码(c/c++)中实现的方法们。概括起来,这表示: --你的应用的java源代码中要声明一个或多个方法,这些方法前面需有'native'关键字,这表明它们被本地代码实现。如: [java] view plain copy native byte[] loadFile(String filePath); --你必须提供本地的共享库(.so),库中包含这些方法的实现。这个库将会打包你的应用的.apk中。这个库的命名必须符合标准的Unix命名规则,也就是:lib<something>.so这种形式。并且还要包含一个标准的JNI入口。例如: libFileLoader.so --你的应用必须显式的加载本地库。例如,要在应用启动时加载,只需简单地在代码中增加如下语句: [java] view plain copy static{ System.loadLibrary( "FileLoader"); } 注意写库的名字时你不需要使用 'lib' 前缀和 '.so' 后缀。

Android开发——NDK开发入门

醉酒当歌 提交于 2020-02-05 02:45:29
注:本文并非原创,参考了几位前辈的文章,本文只是稍作整理。 参考1: Eclipse配置NDK_R4开发环境(集成Cygwin 、CDT) 分别介绍了在window和linux下配置eclipse自动化编译ndk。 参考2: android NDK 开发环境配置 介绍了新版ndk的配置。 参考3: 史上最强NDK入门项目实战 详细介绍了ndk HelloWorld的开发过程,不过ndk版本比较旧,编译方式不同。 一、什么是NDK? NDK是android应用程序用来调用本地代码的一个工具集合。我们都知道android应用都是运行在DVM之上的,利用NDK我们可以实现应用程序直接调用本地代码(C、C++)。这样可以提高应用程序的运行效率,获得更好的体验。 二、HelloWorld for NDK 1.下载 android-ndk-r4b 下载地址: android-ndk-r4b-windows.zip 新版的ndk和旧版本的编译方式有不少区别,具体见参考2和参考3。 2.下载cygwin。为了在window中模拟Linux环境,ndk-build是基于Linux的。如果适用linux系统就不需要用到cygwin了。 ……………………(详细请看以上三个参考资料) 三、注意点 这个是Android.mk文件的内容 1: LOCAL_PATH := $(call my-dir) 2: 3

Android:NDK开发入门

北城余情 提交于 2020-02-05 02:42:51
为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。 3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。 下面就介绍下Android NDK的入门学习过程: 入门的最好办法就是学习Android自带的例子, 这里就通过学习Android的NDK自带的demo程序:hello-jni来达到这个目的。 一、 开发环境的搭建 android的NDK开发需要在linux下进行: 因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。 安装android-ndk开发包,这个开发包可以在google android 官网下载: 通过这个开发包的工具才能将android jni 的C/C++的代码编译成库 android应用程序开发环境: 包括eclipse、java、 android sdk、 adt等。 如何下载和安装android-ndk我这里就不啰嗦了,安装完之后,需要将android-ndk的路劲加到环境变量PATH中: sudo gedit /etc/environment

AndroidStudio相关经验记录

烂漫一生 提交于 2020-02-01 08:29:50
1、初次打开Gradle工程特别慢,一直提示下载更新Gradle   解决办法: 打开Gradle工程子目录:“\gradle\wrapper” 下的 “gradle-wrapper.properties” 文件,找到其中的文件 “distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip” ,用下载工具Download下来,然后放到 “C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.14.1-all\4cj8p00t3e5ni9e8iofg8ghvk7” 目录下,重新打开Gradle工程就好了!后面的那个目录名是随机生成的,可能不一样。 2、关于CMake和NDK   从Android studio2.2 版本开始,默认C++构建工具是CMake,研究了一下方法确实比NDK更方便。不过,在测试发现,如果使用旧版本的NDK时,会报错:“CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage” 3、关于Gradle 参考一篇博文:《 Gradle从入门到实战 - Groovy基础 》,对于语法中的问题多查文档: http://www.groovy-lang

Mac os x下配置 Android ndk 开发环境

断了今生、忘了曾经 提交于 2020-01-27 08:08:32
本文转载自: https://www.cnblogs.com/jarrah/archive/2013/03/15/2961892.html 作者:jarrah 转载请注明该声明。 1.阅读下面之前,请确保你android sdk的开发环境已经搭建好,ADT也最好是目前最新的. 2.到http://developer.android.com/tools/sdk/ndk/index.html这里下载最新的ndk. 3.下载完成后,解压你下载的文件. 4.配置一下你的.bash_profile; 开启终端,输入命令 pico .bash_profile 首先添加一行 export PATH=${PATH}:/Users/jarrahwu/Documents/android-ndk-r8d 然后再来一行 A_NDK_ROOT=/Users/jarrahwu/Documents/android-ndk-r8d 最后来一行 export A_NDK_ROOT 这个其实就相当于windows里面的环境变量.contrl + x 保存一下,再输入 Y确认,最后来个enter.最后的最后,关闭终端,重新打开一下. 可以参考一下我上传的图片. 如果上面配置无误的话.就可以准备写一个ndk的hello world了. (1)首先想正常建立android项目一样,建立好一个项目叫MyNDK (2)配置一下

Android已有项目添加NDK支持

╄→尐↘猪︶ㄣ 提交于 2020-01-24 02:41:23
1.项目添加NDK路径:File->Project Structrue ->SDK Location ->设置NDK路径; 2.生成一个CMakeLists.txt文件,并放入根目录(和src目录同级) 3.build.gradle添加如下内容 externalNativeBuild { cmake { path file ( 'CMakeLists.txt' ) } } 4.创建一个java文件,例如:OKJNIUtils.java,放在com.tttxxx.onekey这个包下,并写个hello函数 package com . tttxxx . onekey ; public class OKJNIUtils { //需要加载这个,才能使用里面的函数 static { System . loadLibrary ( "okGKLib" ) ; } //这个和c++里面的函数名字,有对应关系。到时候调用安卓里面的函数hello,就能调用到C++里面的函数 public native String hello ( ) ; } 5.src目录的main目录 下面创建cpp文件夹 创建一个cpp文件,例如: # include <jni.h> # include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_tttxxx