zoukankan      html  css  js  c++  java
  • 使用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!

  • 相关阅读:
    RSS简易阅读器vb.net源代码
    [建议]有关图片地址的建议
    [音乐欣赏]wind flowers
    有个叫计算机的比我笨
    一个朋友画的建筑设计手绘图与其想到的
    [推荐]华建小翻--QQ里的一个不错的服务商
    爆强的广告
    [学习日记]重构简易RSSREADER的UML类图
    [音乐欣赏]红颜
    [音乐欣赏]花与琴的流星
  • 原文地址:https://www.cnblogs.com/xiaomiao/p/2361929.html
Copyright © 2011-2022 走看看