zoukankan      html  css  js  c++  java
  • 【转】如何在ndk开发环境下运行helloworld

    本文主要讲述如何在ndk开发环境下运行helloworld。
    本文使用的开发环境为windows + cygwin,用linux当然是没有问题的。

    安装开发环境

    本文并不打算介绍如何安装ndk开发环境。这方面的资料在google的官方文档上有很好的描述。下面给出
    它的链接:
    http://developer.android.com/

    这里主要讲一下要注意的问题:
    1、ndk版本必须是r4或r5
    官方给出的ndk-r4不支持STL,而我们的引擎代码需要用到,所以需要找到能支持STL的ndk-r4版本。幸
    好已经有人做了这个工作,下载地址为:
    http://www.crystax.net/android/ndk.php

    ndk-r5则已经内置了STLPort,您可以到android官网去下载ndk-r5来使用

    2、下文以eclipse为IDE来介绍
    使用别的IDE及配套工具也是一样的,参考这里的文章应该很容易转过去。

    3、如果是在windows上开发,cygwin的版本需要1.7或以上
    这点在google的开发文档上也有强调,否则无法编译程序。

    下载源码

    到这里本文假设你已经搭建好ndk开发环境,并且可以运行ndk里自带的demo。如果还不行的话,好好阅读
    google的文档吧,或者找人帮助一下,应该很容易的。

    接下来,下载cocos2d-x的源码
    1. 稳定版:
    2. 最新代码:

    编译

    在继续进行之前,先定义几个变量
    1、ANDROID_NDK_ROOT
    ndk存放的路径,这里的路径是cygwin的路径。以本文为例,ndk存放的windows的路径为E:\android-ndk-r4-crystax,
    那么它对应的cygwin路径为/cygdrive/e/android-ndk-r4-crystax。

    2、COCOS2DX_ROOT
    cocos2dx代码的存放路径,同样也是cygwin的路径。在本文中,cocos2dx存放在windows路径为
    D:\Work7\cocos2dx\cocos2dx,那么它的cygwin路径为/cygdrive/d/Work7/cocos2dx/cocos2dx。

    3、HELLOWORLD_ROOT
    helloworld代码的存放路径,同样也是cygwin的路径。在本文中,helloworld存放在windows路径为
    D:\Work7\cocos2dx\HelloWorld-android,那么它的cygwin路径为/cygdrive/d/Work7/cocos2dx/HelloWorld-android。

    在编译源码之前,还需要做以下几个工作:
    1、把helloworld源码导入到eclipse
    这个步骤和上文运行ndk sample的方法是一样的。

    2、在HELLOWORLD_ROOT/jni/ 下建立一个到COCOS2DX_ROOT的软链接
    ln -s $COCOS2DX_ROOT $HELLOWORLD_ROOT/jni/cocos2dx
    名字需要为cocos2dx,因为在HELLOWORLD_ROOT/jni/Android.mk里我们假定了使用这个名字。
    当然你可以换一个别的名字,但是要记得修改HELLOWORLD_ROOT/jni/Android.mk。

    3、在ANDROID_NDK_ROOT/samples下建立一个到HELLOWORLD_ROOT的软链接
    ln -s $HELLOWORLD_ROOT $ANDROID_NDK_ROOT/samples/helloworld-cocos2dx

    好了,现在可以把helloworld当做ndk的一个sample来编译了
    $ANDROID_NDK_ROOT/ndk-build -C samples/helloworld-cocos2dx

    运行

    运行helloworld的方式和运行别的sample是一样的。这里简单介绍一下:
    1、build project
    这会自动生成R.java文件,编译java代码并打包

    2、clean project
    如果需要把最新的.so打包到apk中,需要进行这一步。如果只是简单地build project是不会把.so文件
    打包进apk文件的(第一次除外)。

    3、run project
    右键点击工程,选择run as,选择Android Application。当然了,如果之前成功运行过,则可以使用
    工具栏的 快捷方式运行。在运行前,别忘了启动你的模拟器。

    如何在2.1上运行

    因为2.1上安装后的apk路径和2.2模拟器不太一样,所以需要做点小改动才能运行在2.1上。具体要做的
    工作如下:

    1、更改HELLOWORLD_ROOT/jni/helloworld/HelloWorld.cpp
    把 #define RESOURCE_PATH    "/data/app/org.cocos2dx.application-1.apk"
    改为 #define RESOURCE_PATH    "/data/app/org.cocos2dx.application.apk"

    注意的问题

    1、每次重新build出新的.so文件时,需要在eclipse下通过clean project才能把新编出来的.so文件打包到apk里。

    2、eclipse下载安装包到模拟器上安装时,安装后的apk文件名会在名字后面加个数字。
    以我们的例子来说,安装后的apk路径名为/data/app/org.cocos2dx.application-1.apk。而且这个数字还会变化:
    比如你运行过一次该程序后,如果改动了java代码,然后再次运行时,它的名字会变成/data/app/org.cocos2dx.application-2.apk,
    再改动后运行,又变成了/data/app/org.cocos2dx.application-1.apk。

    也就是说它的数字会在1和2来回变换。因为我们的代码需要使用到这个路径名,所以需要特别注意。具体的使用见
    HELLOWORLD_ROOT/jni/helloworld/HelloWorld.cpp。

    如果是下载到真机安装的话,安装后的名字不会有后面这个数字,也就是它的名字应该为
    /data/app/org.cocos2dx.application.apk,所以如果要下载到手机运行的话,需要更改
    HELLOWORLD_ROOT/jni/helloworld/HelloWorld.cpp里的代码,设置为正确的路径。

  • 相关阅读:
    How To Build CyanogenMod Android for smartphone
    CentOS安装Code::Blocks
    How to Dual boot Multiple ROMs on Your Android SmartPhone (Upto Five Roms)?
    Audacious——Linux音乐播放器
    How to Dual Boot Multiple ROMs on Your Android Phone
    Everything You Need to Know About Rooting Your Android Phone
    How to Flash a ROM to Your Android Phone
    什么是NANDroid,如何加载NANDroid备份?
    Have you considered compiled a batman-adv.ko for android?
    BATMAN—Better Approach To Mobile Adhoc Networking (B.A.T.M.A.N.)
  • 原文地址:https://www.cnblogs.com/cappuccino/p/2099541.html
Copyright © 2011-2022 走看看