使用NDK创建及配置C++程序(原生纯C++项目,不包含JAVA代码)

  写在前面,这篇文章是在上一篇博客:《Eclipse下搭建Android开发环境(使用NDK开发C/C++程序,无需安装Cygwin)》的基础上进行撰写的,如本篇文章有不明的地方,请去观摩一下我的上一篇文字。链接:http://www.cnblogs.com/xiaomiao/archive/2012/02/20/2360308.html 

————————————————————分割线——————————————————————

1.    首先,搭建好Android试验平台(参考文档:《Eclipse下搭建Android开发环境(使用NDK开发C/C++程序,无需安装Cygwin)》

2.    如图一所描述,首先创建一个Android项目(参考文档:Android.NDK.Beginner's.Guide,作者:Sylvain Ratabouil,我再发个链接吧http://ishare.iask.sina.com.cn/f/23061508.html?retcode=0,这个是新浪爱问的一个资源,需要两个积分下载,没有积分的就去多搜一搜,不会太难弄)

   

注: 1. 项目名称及包名可自行命名,值得注意的是在接下来的AndroidManifest.xml 中将相应的名称改为对应的。

         2. 不要勾选Create Activity.

         3. 关于Android平台版本和Min SDK Version,只要对应就好。

    

                                               (图一) 

3.      修改AndroidMainfest.xml文件的内容为一下内容。唯一需要注意的就是<meta-data android:name="android.app.lib_name" android:value="droidblaster"/>标签中,value的值要和Android.mk 中的LOCAL_MODULE名称一致。

         AndroidMainfest.xml的内容如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

                            package="com.packtpub.droidblaster"

                            android:versionCode="1"

                            android:versionName="1.0">

<uses-sdk android:minSdkVersion="10"/>

         <application android:icon="@drawable/icon"

                                      android:label="@string/app_name">

                   <activity android:name="android.app.NativeActivity"

                                       android:label="@string/app_name">

                   <meta-data android:name="android.app.lib_name"

                                        android:value="droidblaster"/>

                            <intent-filter>

                                     <action android:name="android.intent.action.MAIN"/>

                                     <category android:name="android.intent.category.LAUNCHER"/>

                            </intent-filter>

                   </activity>

         </application>

</manifest>

4.      使用Eclipse将生成的项目转换为C++项目,如图二所示:

    

                                                      (图二)

5.      新建并配置一个Builder,使项目能够自动编译C/C++代码。(参考文档:上一篇博客中的5.5小节,创建过程在该文档中已有详细说明)

6.      在项目上点击右键,Properties-> C/C++ General-> Path and Symbols,找到Includes那一栏,

         添加三个环境变量,如图三所示。

                                                                           (图三)

         注:此处三个变量分别指向:

    ${env_var:ANDROID_NDK}/platforms/android-9/arch-arm/usr/include;                        

    ${env_var:ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.4.3/include;

    ${env_var:ANDROID_NDK}/sources/android/native_app_glue;

    ANDROID_NDK为系统环境变量,代表NDK的安装目录。

7.      在项目的目录下面建立文件夹jni,在jni中建立文件Android.mk,Android.mk的内容为:

           LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := droidblaster

    LOCAL_SRC_FILES := Main.cpp EventLoop.cpp Log.cpp

    LOCAL_LDLIBS := -landroid -llog

    LOCAL_STATIC_LIBRARIES := android_native_app_glue

    include $(BUILD_SHARED_LIBRARY)

    $(call import-module,android/native_app_glue) 

    注:标注为红色字体的语句需要根据具体项目情况来具体填写。

8.      把预先准备好的.cpp及.hpp文档放入到jni文件中。(参考文档:Android.NDK.Beginner's.Guide 的150 – 153页,由于篇幅有限,我就不贴那些代码了)

9.      编译运行,ok!

————————————————————————分割线———————————————————————

  

  写在后面,这篇文字写得并不是非常的详细,至少没有上一篇详细。但是我觉得我已经把重要的需要注意的情况已经列举了出来,应该是足够了。

  有人也许会觉得我的这个排版有一些问题,因为我一般都是在word上面写好文档(毕竟这个才是重要的),然后才会将其复制出来,粘贴在这里,略作修改之后发表出来。

  最后,依旧是那句话,欢迎交流,欢迎转载,要热爱讨论,接受批评,ok!

原文地址:https://www.cnblogs.com/xiaomiao/p/2361929.html