Cocos2dx打包apk时变更NDK引发问题及解决

现在官方的Cocos Studio已经支持打包apk文件,写该随笔的时候还没试过官方的打包功能,所以就按自己的学习顺序先把打包的心得卸下。

问题及最终解决方案:

其中耗时最长的问题就是ndk-r10改成ndk-r9d后一直编译不通过;

最终解决办法是删除项目路径下/proj.android/obj/local/armeabi目录下的所有文件。(当时因为使用cocos2dx2.2.3版本源码学习才遇到该问题,可能cocos2dx最新版本已无该问题)。

发现问题过程:

初学Cocos2dx,了解了下windows平台编译android包的流程:

1.需要以下软件包:

1) adt(eclipse集成环境可用于编译android项目)

2) ndk(一系列工具可按linux下makefile格式编译c和c++的动态库,然后自动将so和java应用打包为apk)

3) cygwin(提供windows下可用的linux命令,如make,这些命令用于ndk的编译工作,Cygwin还有很多其他作用,因为这里只是供ndk使用,所以不赘述)

笔者当初下载Cygwin的时候是2.87(x64)版本,使用的163的镜像,下完发现如果全安装需要20多G的硬盘空间。后来通过查资料知道供ndk使用只需要将Devel点为install,其他都为default即可。

第一次笔者使用的ndk版本是r10,后来有问题改为r9d。

2.添加环境变量

1) 在系统环境变量PATH中追缴加Cygwin\bin;

2) 新建环境变量NDK_ROOT,值为ndk所在路径

添加完后就可以编译了。笔者此时编译的时候遇到一个问题(对于比较干净的系统应该不会遇到这个问题),提示我出错,错误信息如下:

ERROR: You are using a non-Cygwin compatible Make program.
Currently using: C:/MinGW/bin/make

To solve the issue, follow these steps:

1. Ensure that the Cygwin ‘make‘ package is installed.
   NOTE: You will need GNU Make 3.81 or later!

2. Define the GNUMAKE environment variable to point to it, as in:

     export GNUMAKE=/usr/bin/make

3. Call ‘ndk-build‘ again.

  开始查了半天没找到解决方法,后来仔细看发现Currently using:C:/MinGW/bin/make。这个make并不是Cygin/bin下面的make,然后我想起来之前配置eclipse c++环境使用了MINGW,暂时从Path中删除该值,问题解决。

3.编译及运行

此时编译成功,于是拿着我的android跑跑看看,结果一运行程序立刻停止响应,从LogCat看到的错误:

SharedLibrary  : libcocos2dcpp.so undefined reference to ‘rand‘

网上查查发现大多数使用r10都有这个问题,没有实际的解决方案,于是重新下载了ndk r9d的包,修改NDK_ROOT环境变量后再次编译,这次的结果是编译不通过,编译的时候就报上面的rand错误。仔细检查后发现编译的时候虽然开始提示是用的r9d的环境,但是编译还是会用到r10的路径,不知道为什么。于是把r10移动到其他地方,然后把项目路径下/proj.android/obj/local/armeabi目录清空。再次编译,程序终于可以正常运行在Android手机上了。

时间: 2024-10-07 01:24:00

Cocos2dx打包apk时变更NDK引发问题及解决的相关文章

Android之编译打包apk时几个常用的技巧

今天和大家分享一下用eclipse打包apk时的三个小技巧: 一.防止被反编译而扰乱混淆加密: 1. 请打开project.properties文件中的这句话(即将这句前面的"#"去掉即可)    proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 2. 然后可以根据自己的需求对proguard-project.txt文件做出"例外"的方法或类的规则定

【Python求助】在eclipse和pycharm中,通过adb install安装中文名字APK时老是报错,如何解决

1 # -*- coding: utf-8 -*- 2 import os 3 import sys 4 import subprocess 5 import time 6 from uiautomator import device as d 7 subprocess.check_output(r'adb install E:\Project\work\exercise\app_list\程序.apk') 输出如下: 1 adb: usage: filename doesn't end .ap

cocos环境配置和打包apk

环境: Win10 + vs2015 + cocos2d-X-3.10 开发  软件的安装与环境配置: 资源准备:(后面备注的版本为笔者所选的) 1  python (python-2.7.3) 2  CocosForWin-v3.10(官网可下载) 3  vs2015 分别安装以上三个软件,路径没有限制,但是路径名称最好不要出现中文/空格等特殊字符,包括后面建立项目时项目的存放路径,最好用纯英文+"-",比如"cocos2d-x-3.10",因为笔者以前就因为路径

打包apk java 虚拟机内存不足

解决方案:在android->sdk->build-tools-android-version 中有个 dx.bat dx.bat --dex 命令的dx.bat脚本有这样一句代码 REM By default, give dx a max heap size of 1 gig and a stack size of 1meg. rem This can be overridden by using "-JXmx..." and "-JXss..." o

Cocos2dx打包成apk包时在手机上闪退

在项目运行过程中,在手机上运行会出现闪退的现象, 报告错误代码如下: 06-30 10:45:19.921: E/cocos2d-x assert(28033): E:/workspace/cocos2d-x-2.2.2/projects/****/proj.android/../../../cocos2dx/platform/android/CCApplication.cpp function:sharedApplication line:60 06-30 10:45:19.921: A/li

实训二(cocos2dx 2.x 打包apk)

利用cocos2dx编程得到的展现形式之一就是最终的apk,中间的过程只有自己走过才能知道,对于没有章法的初学者,那是相当的头疼, 言归正传,2.x到3.x版本引擎变动很大,除去了CC只是很小一方面,就有很多人不适应,打包apk的方法上也有了很多不同. 本文主要会介绍在windows平台上,利用Cocos2dx 2.x版本引擎打包apk的过程. Cocos2d-x 2.x版本引擎 打包apk 1.环境+工具 VS2013.android-ndk-r9d.android-sdk-windows-r

实训三(cocos2dx 3.x 打包apk)

上一篇文章<实训二(cocos2dx 2.x 打包apk)>简单的讲述的利用cocos2dx 2.x引擎在windows平台上打包apk的方法与过程,本文将介绍3.x版本引擎,如何打包apk的问题. 首先,Cygwin在3.x版本引擎上已经用不到了,另外3.x版本引擎加入了好几个实用的Python脚本文件,比如在将引擎压缩包解压缩后,会看到setup.py文件,SDK.NDK.ANT等环境的配置就可以运行这个文件进行,即根据提示,将自己系统中相应工具的路径输入即可. 其次,与2.x版本一样,3

Cocos2dx开发(3)——Cocos2dx打包成Android APK,ANT环境搭建

前面cocos2dx的运行环境(Android SDK,JDK,),最后Cocos2dx的APK的打包环境,最运行环境上再加ANT环境就好了 1.ANT下载配置 官网下载:http://ant.apache.org/bindownload.cgi 解压放到你的合适目录,把ANT根目录的bin 添加到环境变量Path里 这里是E:\DevelopTool\AndroidTool\apache-ant-1_9_4\bin 重新打开命令窗,如下表示成功 打开cocos2dx根目录运行 download

cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法

cocos2d-x 3.0 中,如果你需要使用CocosStudio.Extensions扩展库 等等,都需要自己手动添加. 添加步骤如下:(比如说现在我要添加libExtensions,libCocosStudio , libGUI) 1.添加附加项目 右击解决方案--->添加现有项目--->添加:项目目录\cocos2d\extensions\proj.win32\libExtensions,然后你会发现左边多了一个libExtensions扩展库 右击解决方案--->添加现有项目-