• 【转】如何在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里的代码,设置为正确的路径。

  • 相关阅读:
    ASP.NET MVC下的四种验证编程方式
    tp框架下,数据库和编辑器都是utf-8, 输出中文却还是乱码
    按拼音首字母排序
    PHP 文件导出(Excel, CSV,txt)
    RedisDesktopManager 可视化工具提示:无法加载键:Scan..
    window下redis如何查看版本号
    jQuery 防止相同的事件快速重复触发
    input中加入搜索图标
    JS搜索商品(跟外卖app店内搜索商品一样) ,keyup函数和click函数调用
    JS正则对象 RegExp(有变量的时候使用),用来匹配搜索关键字(标红)
  • 原文地址:https://www.cnblogs.com/cappuccino/p/2099541.html
Copyright © 2020-2023  润新知