导航:首页 > 操作系统 > androidndk开发环境搭建

androidndk开发环境搭建

发布时间:2023-02-19 05:28:17

㈠ 如何使用android的ndk建立native的开发环境

从网上看了一篇使用andriod的toolchain在cygwin上来建立android的开发环境,但是在vista上编译始终失败,在xp上能够成功。但是编译的时间比较长,而且对于新手来说也比较麻烦,难道就没有简单的方法吗?google已经把andriod的ndk已经放出来了,所以我就想着打它的主意了,把它配置一下,就能来开发c的程序了。旁边小伙肯定笑了,“搞啥?,有病啊,ndk就是一个开发native code的环境。”大哥,我当然知道了,虽然使用ndk来开发native code相对容易,但是它的.mk文件我看的是云里雾里,我本来想调用自己写的另外一个so库,都不知道在.mk文件里如何写,我现在也懒的去看ndk里面的mk文件,等哪天(哪天?天晓得是哪一天)有空了好好研究一下。好了,闲话少说,开练吧。首先安装cygwin,这个网上的教程多的是,就不说了,接着下载android ndk,这个在andriod的官网上就有了,然后下载一个从android模拟器里取system lib的工具busybox,然后调用命令

$adb push busybox /dev/sample/busybox

$adb shell chmod 777 /dev/sample/busybox

$adb shell ./dev/sample/busybox tar -cf /dev/sample/libs.tar /system/lib

$adb pull /dev/sample/libs.tar libs.tar

这样就将模拟器下的 /system/lib 目录的所有库(so)文件打包并下载下来了,解压libs.tar就得到了我们所需要的所有库文件。

接着将所有的文件 到 $(NDK)/build/prebuilt/windows/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1,好了,这个时候基本的配置工作就结束了,怎么样简单多了吧。

接着编写一个简单的c文件 tutorial01.c

#include <stdio.h>

int getinformation()

{

return 0;

}

然后编写一个Makefile文件

CC = /cygdrive/f/software/android/android-ndk-1.5_r1/build/prebuilt/windows/arm-eabi-4.2.1/bin/arm-eabi-gcc

CFLAGS = -g -O2 -fPIC -DANDROID -I ./ -I ../ -I F:/software/android/android-ndk-1.5_r1/build/platforms/android-1.5/arch-arm/usr/include

SDFLAGS = -nostdlib -Wl,-T,armelf.xsc -Wl,-soname,$@ -Wl,-shared,-Bsymbolic -lc

CRT_OBJS= -lz -lm

all: libtutorial01.so

libtutorial01.so: tutorial01.o

$(CC) $(SDFLAGS) -o $@ tutorial01.o $(CRT_OBJS)

tutorial01.o: tutorial01.c

然后make,这个时候会报错 can't find "armelf.xsc", 在ndk的目录里搜索一下,搜到之后 到$(NDK)/build/prebuilt/windows/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1,然后make,成功。这样一个简单的so文件就生成了,这个时候如果想在android的虚拟机上运行,我们还需要给它包装一下。再编写一个文件test01.c,在这里是使用dl动态加载so文件,静态加载始终有问题,搞不清楚android是如何搜索目录,而且现在只能用绝对路径,这个问题还得仔细研究研究。

#include <string.h>

#include <jni.h>

jint

java_com_example_testffmpeg_testffmpeg_getinformation( JNIEnv* env,

jobject thiz )

{

void* filehandle = dlopen("/data/data/com.example.test/lib/libtutorial.so", RTLD_LAZY );

int ll = -1;

if(filehandle)

{

int( * getinformation ) ();

getinformation = dlsym(filehandle, "getinformation");

if( getinformation )

{

ll = getinformation();

}

else

{

ll = -3;

}

dlclose(filehandle);

filehandle=0;

}

else

{

ll = -2;

}

return ll;

}

同样再来一个Makefile文件

CC = /cygdrive/f/software/android/android-ndk-1.5_r1/build/prebuilt/windows/arm-eabi-4.2.1/bin/arm-eabi-gcc

CFLAGS = -g -O2 -fPIC -DANDROID -I ./ -I ../ -I F:/software/android/android-ndk-1.5_r1/build/platforms/android-1.5/arch-arm/usr/include

SDFLAGS = -nostdlib -Wl,-T,armelf.xsc -Wl,-shared,-Bsymbolic -Wl,-soname,$@ -lc -L ../tutorial

CRT_OBJS= -lz -lm -ldl

all: libtest01.so

libtest01.so: test01.o

$(CC) $(SDFLAGS) -o $@ test01.o $(CRT_OBJS)

ok, make一下成功。好了,接下来使用andriod的sdk写一个简单的activity, testapp来测试其运行情况,以下是test01.java的代码。

package com.example.test;

import android.app.Activity;

import android.widget.TextView;

import android.os.Bundle;

public class test01 extends Activity

{

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

/* Create a TextView and set its content.

* the text is retrieved by calling a native

* function.

*/

TextView tv = new TextView(this);

// tv.setText( stringFromJNI() );

Integer ll = getinformation();

String lls = ll.toString();

tv.setText(lls);

setContentView(tv);

}

/* A native method that is implemented by the

* 'hello-jni' native library, which is packaged

* with this application.

*/

public native int getinformation();

/* this is used to load the 'hello-jni' library on application

* startup. The library has already been unpacked into

* /data/data/com.example.HelloJni/lib/libhello-jni.so at

* installation time by the package manager.

*/

static {System.loadLibrary("test");

}

}

在eclipse中运行,在模拟器上显示0,就表示成功了。

㈡ 如何在Ubuntu下搭建Android NDK开发环境

一,下载NDK包
二,解压NDK包

1,这里是tar.bz2后缀名,解压命令:# sudo tar -jcvf android-ndk-r9b-linux-x86.tar.bz2 -C /opt/adt_bundle_linux

2,这里为了方便改了个名称,命令:# mv 原名称 ndk

三,添加环境变量

1,先输入命令:# sudo gedit ~/.bashrc 在最后一行添加
export ANDROID_NDK=/opt/adt_bundle_linux/ndk/
export PATH=$ANDROID_NDK:$PATH

2,然后输入命令:# source ~/.bashrc

3,测试下是否配置成功,可以cd /opt/adt_bundle_linux/ndk/samples/hello-jni/jni
输入命令:#ndk-builder 此处如果提示没有权限,则需要改变hello-jni目录的权限,因为它要创建并生成目录,需要有写权限。

如果出现如下提示信息,证明成功,同时出现lib和obj两个文件夹
[armeabi] Gdbserver :[arm-linux-androideabi-4.6] libs/armeabi/gdbserver
[armeabi] Gdbsetup :libs/armeabi/gdb.setup
[armeabi] Install : libhello-jni.so => libs/armeabi/libhello-jni.so

四,在eclipse中配置NDK

在eclipse中的 window->preferences->Android->NDK 输入ndk路径:/opt/adt_bundle_linux/ndk/

㈢ 如何在Ubuntu下搭建Android NDK开发环境

在Ubuntu 系统下搭建Android NDK 开发环境分以下步骤:

  1. 到官网下载NDK版本。

  2. 解压到 ~/bin 目录下。

  3. 配置NDK环境变量,打开 ~/.bashrc文件: $sudovim~/.bashrc 在文件最后一行添加一行如下指令:exportPATH=$PATH:~/bin/android-ndk-r7b

  4. 保存关闭bashrc 文件,并运行ndk-build-v 查看NDK版本信息。

  5. 如果出现NDK版本信息,就表示NDK安装成功了。

㈣ android studio配置ndk开发

网上很多资料都比较旧,我查了一些资料,并且试了一下,总结了一个最简单的配置ndk开发的方法,步骤如下:

参数讲解

我的javah配置是

我的ndk-build配置是

文件中的 native-lib 是我生成的so文件的名字,
src/main/jni/hello.cpp 是我实现的native方法所在的类,注意路径不要写错,我的文件所在路径是这样的

然后项目就可以运行了

参考链接: https://www.jianshu.com/p/1e14dcc81c3c
参考链接的文章不太详细,我改了改,写了上文

㈤ 如何在Ubuntu下搭建Android NDK开发环境

1 搭建Android SDK开发环境

2 下载NDK开发包

3打开官网: 下载NDK 开发包,当前最新版本是r7b

下载解压到 ~/bin 目录下,

3 配置NDK环境参数

打开 ~/.bashrc文件:

㈥ mac cocos2dx 安卓环境 ndk怎么装

一、下载cocos2d-x最新安装包
在终端中cd到本地将要存放目录,执行git命令
二、如果开发ios程序,需要配置xcode模板
下好后,cd到cocos2d-x目录,执行里面的sh脚本,安装cocos2d-x模板
sudo ./install-templates-xcode.sh -f
中间要输入管理员密码
之后就可以在xcode中看到新增加模板
三、如果是开发android程序
1.搭建好一个可以开发android开发环境,包括eclipse,android sdk,ADT等(最好是最新版本),确保可运行调试
2.为eclipse安装c/c++插件
打开eclipse,选择菜单Help/Install New Software
在Work With下拉框中选择自己eclipse的版本名,然后在插件里选中Programming Languages,打开下拉列表
选择C/C++ Development Tools安装,重启eclipse
3.在developer.android.com/tools/sdk/ndk/index.html下载最新的NDK,比如android-ndk-r8d-darwin-x86.tar.bz2,注意是mac版的,并解压缩
4.配置全局环境变量
终端中执行命令
vim ~/.bash_profile
输入i进行编辑,加入如下配置
export COCOS2DX_ROOT=/Users/cocos2dx/cocos2d-x
export NDK_ROOT=/Users/android/android-ndk-r8d
export ANDROID_NDK_ROOT=/Users/android/android-ndk-r8d
export ANDROID_SDK_ROOT=/Users/android/android-sdk-macosx
export PATH=$ANDROID_NDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT:$PATH
按esc,再命令
:wq
保存配置,上面配置中相应的路径自己做替换
COCOS2DX_ROOT对应cocos2d-x本地存放目录
NDK_ROOT和ANDROID_NDK_ROOT对应NDK本地存放目录
ANDROID_SDK_ROOT对应安卓sdk本地目录
5.创建一个android测试项目
cd到cocos2d-x本地目录,执行命令
./create-android-project.sh
再输入包,回车
com.test.testdemo
再输入提示的sdk的id,(比如3,对应sdk4.0.3),回车
再输入应用的目录名,比如TestDemo,回车
此时cocos2d-x目录下就有了一个TestDemo目录
cd到TestDemo目录下的proj.android中,然后执行以下命令,编译项目
./build_native.sh
6.创建AVD

㈦ 如何从零开始创建Android NDK应用

本文主内容:
1、 Android NDK 安装
2、 安装Cygwin与使用NDK编译
3、 在Eclipse中集成C/C++开发环境CDT
4、 安装Sequoyah插件
5、 JNI编译环境配置

本文建立在已经完成Android开发环境搭建的基础上。其基础环境至少需要包含以下内容:
1、 JDK
2、 Eclipse
3、 Android SDK and ADT
可以参考我之前的“Android开发环境搭建”。
一、Android NDK 安装与配置
下载Android NDK。下载地址:http://developer.android.com/tools/sdk/ndk/index.html
下载后解压缩到你的工作目录,例如:D:\Java\android-ndk-r8,结果如下图:

注意:samples下面包含几个实例开发演示项目,第一次接触NDK开发,建议先从示例开始。
docs内是技术文档,英语能力强的可以研究研究。
二、安装Cygwin与使用NDK编译
由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要用Cygwin模拟Linux编译环境。
下载:
Cygwin的下载地址:http://www.cygwin.com/

点击右上角的“setup.exe”即可下载。
安装:
第一步:运行setup.exe程序,直接点击Next进入下一步。
第二步:选择安装方式。第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。
第三步:选择安装目录。比如D:\Java\Cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。
第四步:设置本地包暂存路径。暂存目录默认是放到setup.exe的同级目录下,建议放到指定的文件夹,如D:\Cygwin_install_file。安装完成后把这个文件夹打包备份,以后再配置时不用重新下载。
第五步:设置网络连接方式。这个目前河蟹没爬过来,选第一个即可。
第六步:选择下载站点地址。据说国内163站点的速度不错,我也是用的这个。
第七步:等待加载安装项载入,选择安装项。点击Devel-Default,使之变成Devel-Install,展开后可以看到其下的子项被选中了(网上多数教程都说选中某12个包,找起来太坑爹了,直接全下载了吧,全选多了150M左右)。此界面其他设置都不用动。

第八步:等待下载完成。下载完成时间决定于你选择的安装包数量及网络连接速度,安装我安装的版本,约983M,下载完成后会自动安装到上文设置的安装目录,安装也要时间的,总时间较长,去吃个饭没啥问题。
提醒:第四步的备份建议,尽量去做。如果有备份,第二步中选择离线安装。
验证:
运行安装目录下的“Cygwin.bat”,第一次运行时,它会自动创建用户信息,用户信息存放在“.\Cygwin\home”中。
在运行“Cygwin.bat”打开的命令行窗口输入:“cygcheck -c cygwin”命令,会打印出当前Cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。
分别输入:“make –v”和,“gcc –v”命令如果检测成功,会有make和gcc相关版本信息打印出来。

设置NDK路径:
在windows的系统环境变量中添加NDK的路径。使用“/cygdrive/d/Java/android-ndk-r8”这种Linux风格路径,如果使用Windows下的“D:\Java\android-ndk-r8”,Cygwin在编译时会发出警告。

运行Cygwin命令行,可以直接使用此环境变量,当然也可以手动的cd到该目录:

使用NDK编译程序:
现在我们用安装好的NDK来编译一个NDK提供的sample程序hello-jni(我的目录位于:D:\Java\android-ndk-r8\samples\hello-jni)。
第一步:运行Cygwin,配置环境变量后可输入“cd $ndk/samples/hello-jni/”,未配置则输入命令“cd /cygdrive/d/java/android-ndk-r8/samples/hello-jni”,进入到“hello-jni”工程目录。

第二步:编译。输入命令“$ndk/ndk-build”命令即可编译。ndk-build是调用ndk的编译程序。
关于下面的错误,我没遇到,但是前人有总结,记录如下:
错误:Android NDK: Host 'awk' tool is outdated。
解决方法:打开目录“D:\Java\android-ndk-r8\prebuilt\windows\bin\”,删除awk.exe(为保险起见请先备份)。

第三步:到”…/hello-jni/libs/armeabi“目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!

导入NDK的hello-jni示例到Eclipse中:
第一步:在Eclipse中新建一个Android工程HelloJni。在Create Android Project时勾选“Create project from existing source”,Location中填“D:\Java\android-ndk-r8\samples\hello-jni” (注意:在选择API level时需要选择1.5或更高的版本)。
第二步:直接以Android Aplication运行。这里要注意,你之前在使用NDK编译程序时要把这个hello-jni编译过并产生了.so文件,此处才能运行起来。

三、在Eclipse中集成C/C++开发环境CDT
CDT的安装可以使我们在一个工程中,同时开发基于C/C++的Native代码和基于Java语言的壳,之后的配置还可以使得一次编译两部分代码。
下载:
下载地址:http://www.eclipse.org/cdt/downloads.php
说明:
Eclipse C/C++ IDE Indigo SR2:是带CDT的Eclipse开发环境。
p2 software repository:在线安装的地址。(似乎被河蟹爬了)
cdt-master-8.0.2.zip:这个是CDT的离线安装包。(推荐使用这个,保留离线包,复用)

离线安装:
Eclipse -> Help -> Install New Software,点击add。Name:随意,建议使用好记的“CDT_版本”。Location:点击Archive,定位到下载的“cdt-master-8.0.2.zip”文件。
错误:
如果Location的下面出现“Duplicate location”错误,请到Window -> preferences -> Install/Update -> Avaliable Software Site中找到该条,remove之。
验证:
安装完成后,在Eclispe中新建一个项目,如果出现了C/C++项目,则表明CDT插件安装成功了。

四、安装Sequoyah插件
Sequoyah插件用于设置Android工程对Native开发的支持。
官方网址:http://www.eclipse.org/sequoyah/downloads/
在线安装:
官网提供了用于在线安装的Update Site地址以及安装包的下载地址。貌似安装包才1M多,在线安装也没被河蟹爬过,直接在线安装了。勾选全部列出的可安装项并完成安装。
Location:http://download.eclipse.org/sequoyah/updates/2.0/

注意:
在安装界面不要勾选“Group items by category”复选框,默认是勾选的,出现了列表为空(There are no categorized items)的情况。

配置:
安装完Sequoyah插件后,为Android配置NDK路径。
在“window –> preferences ->Android -> 本机开发”中添加NDK的路径。

验证:
右键之前建立的“HelloJni”项目,在“Android Tools”选项中包含“Add Native Support…”选项即成功。
五、JNI编译环境配置
仍旧以之前建立的“HelloJni”为例,到目前为止,如果我们修改“/HelloJni/jni/hello-jni.c”文件,动态链接库libhello-jni.so文件却不会被重新编译生成。这是因为我们没有给JNI项目添加它需要的编译配置和依赖库。现在我们来配置它。
第一步:转换工程。点击“文件 -> 新建 -> 其他”(快捷键:Ctrl+N)。选择“C/C++”下的“Convert to a C/C++ Project(Adds C/C++ Nature)”。进入“下一步”。

第二步:选中你刚才建的“HelloJni”工程,下面左边选“Makefile project”右边选“Cygwin GCC”。确定后提示的“透视图”不清楚是什么,点击“是”即可。

第三步:在“HelloJni”工程上右键,选择“属性”。配置“C/C++ Build”和“C/C++ General -> Paths and Symbols”。
C/C++ Build:点击“C/C++ Build”,在右边的“Builder Settings”中去掉默认勾选的“Use default build command”复选框。设置Build command为“bash D:\Java\android-ndk-r8\ndk-build”。

C/C++ General -> Paths and Symbols:在Includes下add新的GNU C依赖路径。此“HelloJni”工程需要“D:\Java\android-ndk-r8\platforms\android-8\arch-arm\usr\include”即可,以后根据不同项目选择不同的依赖库。

验证:
将“/HelloJni/jni/hello-jni.c”中的字符串“Hello from JNI !”如改为“Hello JNI from Baron!”,运行后在模拟器上输出的字符串改变即说明配置成功。

㈧ android studio 2.2怎么配置ndk开发环境

使用Android Studio2.1.2 + android-ndk-r10e搭建NDK环境,遇到以下问题,特此记录下来;
1、配置NDK路径,打开local.properties,在末尾添加ndk.dir=E\:\\Android\\AndroidDevTools\\android-ndk-r10e;
2、打开工程的build.gradle,dependencies下面的classpath替换classpath 'com.android.tools.build:gradle-experimental:0.2.0',对应设置gradle wrapper的时候要对应
gradle2.5-all版本,如果是0.4版本,刚需要使用gradle2.8-all版本;
3、配置app的build.gradle,由于AS自带生成的gradle文件与NDK的gradle差别很大,这里附上已经配置好链接地址,

阅读全文

与androidndk开发环境搭建相关的资料

热点内容
32单片机的重映射哪里改 浏览:814
为什么前端不用刷算法题 浏览:706
对称加密系统和公钥加密系统 浏览:428
历史地理pdf 浏览:604
物联网云服务器框架 浏览:648
sybaseisql命令 浏览:181
android权威编程指南pdf 浏览:661
哪些软件属于加密软件 浏览:644
文件夹75丝什么意思 浏览:468
最便宜sop8单片机 浏览:964
图解周易预测学pdf 浏览:418
c盘莫名奇妙多了几个文件夹 浏览:169
贵州花溪门票优惠app哪个好 浏览:801
如何说话不会让人有被命令的感觉 浏览:438
哪里可下载湘工惠app 浏览:265
福特python 浏览:312
pdf转换成word表格 浏览:351
无线远端服务器无响应是什么意思 浏览:672
两位整数倒序输出python 浏览:783
为什么我的世界天空服务器进不去 浏览:262