如何使用NDK c++建立第一个Android应用

2025-04-07 15:10:37
推荐回答(1个)
回答1:

•安装JDK (双击执行安装向导即可)
•解压adt, NDK,ant到D盘(或其他目录)
•设置环境(系统)变量
•依次添加JAVA_HOME,ANDROID_SDK_HOME,ANT_HOME,NDK_HOME变量
例如:
1. JAVA_HOME=C:\Program Files\Java\jdk1.7.0_05
2.ANDROID_SDK_HOME=D:\adt-bundle-windows-x86-20140702\sdk
3.ANT_HOME=D:\apache-ant-1.9.4
4.NDK_HOME=D:\android-ndk-r10
•添加Path变量
JAVA_HOME%\bin;%NDK_HOME%;%ANDROID_SDK_HOME%\platform-tools;%ANT_HOME%\bin
安装后检验:
打开控制台,依次输入
•javac –version (检验JDK安装)
•ant –version (检验ant安装)
•ndk-build –version (检验NDK安装)
•adb devices ( 检验android platforms tools安装)
如果以上命令都是有效命令,安装完成
打开eclipse,
•菜单选择File->new->Project->Android->Android Application Project
创建Android应用。
•输入应用程序名称Hello
•注意要选择Target SDK版本, 我的手机是Android 4.2系统,所以选择API 17, 选择高出实际手机版本,编译后的APK运行会crash,这里也可以不选,后面还有选项可对此进行设置
接下来四个对话框都选默认值即可
工程创建完毕,
•右键单击工程run as->Android Application, 插入手机(使用真机验证,模拟器太慢),不出意外,手机端会运行右面所示界面
到此基于Java的Android开发环境建立并测试完毕,接下来让环境支持基于NDK的c/c++的开发。
将Android工程变为支持C++编译。
右键单击工程,Androud toos->Add Native Support,在弹出对话框中直接点击finish,此时eclipse会自动在工程文件中创建jni文件,含对应配置文件和源文件
工程此时转换为c/c++工程,点击鼠标右键,可以看到build project选项,但此时编译有错,因为转换后的工程需要设置NDK编译环境
点击eclipse最上层菜单windows->preferences->Android->NDK设置NDK路径
右键工程,在properties->c/c++ build中添加
${NDK_HOME}\ndk-build.cmd
这里设置的是ndk-build的路径,注意NDK_HOME为自设的环境变量
此时进入工程文件jni文件加下可以执行ndk-build查看编译结果,也可在ecplise中执行build-project编译工程,编译后的文件在libs文件夹下,名为libhello.so,
自此C++/NDK编译环境建立完毕
写个c++函数试试。
向界面中拖入一个按钮控件
•编辑res\layout\activity_main.xml文件,在TextView中加入android:id=“@+id/show”
•添加android:onClick=“clickHandler”
修改jni文件夹下hello.cpp为:
#include
jstring JniString(JNIEnv* env) {

return env->NewStringUTF("Hello,NDK");
}

extern "C"
{
JNIEXPORT jstring JNICALL Java_com_example_hello_MainActivity_stringFromJNI(JNIEnv* env,jobject o){

return JniString(env);
}
}
修改src文件夹下java源文件MainActivity.java,添加如下代码
public void clickHandler(View source)
{
TextView tv = (TextView)findViewById(R.id.show);
tv.setText( stringFromJNI() );
}
public native String stringFromJNI();
static {
System.loadLibrary("Hello");
}
由于jni文件夹下Android.mk文件中定义的编译后的文件为libHello.so (Hello首位大写), 所以上述System.loadLibrary(“Hello”) 要用Hello (H大写),否则apk运行在手机上会因为找不到库文件而crash.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Hello
LOCAL_SRC_FILES := Hello.cpp
include $(BUILD_SHARED_LIBRARY)
完成以上项目后先clean project (重要), 然后build project, 运行程序,在手机端会运行程序,点击button 按钮,默认的hello world会变为hello,NDK.
到此,C++开发android程序环境建立及测试完成