Cocos2dx打包apk时变更NDK引发问题及解决
现在官方的Cocos Studio已经支持打包apk文件,写该随笔的时候还没试过官方的打包功能,所以就按自己的学习顺序先把打包的心得写下。
问题及最终解决方案:
其中耗时最长的问题就是ndk-r10改成ndk-r9d后一直编译不通过;
最终解决办法是删除项目路径下/proj.android/obj/local/armeabi目录下的所有文件。(当时因为使用cocos2dx2.2.3版本源码学习才遇到该问题,可能cocos2dx最新版本已无该问题)。
另外发现其他编译出错,如No rule to make target,也可以删除该目录试试。
发现问题过程:
初学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手机上了。
其他解决方法:
1.重装系统后,有可能编译失败,大多是因为重装系统后一些文件夹没有读写权限造成的,这时可以删除proj.android目录下的一些临时文件夹试试(包括assets,bin,libs,obj,res)。
2.有一些权限问题怎么删除文件都无法解决的,可以修改"build_native.sh"
第60行:
cp -rf "$file" "$APP_ANDROID_ROOT"/assets
-->cp -rfp "$file" "$APP_ANDROID_ROOT"/assets
第64行:
cp "$file" "$APP_ANDROID_ROOT"/assets
--> cp -p "$file" "$APP_ANDROID_ROOT"/assets
引用自:http://www.oschina.net/question/1252613_137222
Cocos2dx打包apk时变更NDK引发问题及解决的更多相关文章
- Android Studio 打包APK时,出现3个或多个APK
Android Studio 打包APK时,原来只会出现一个apk,结果现在出现3个apk,仔细检查了一下项目文件发现: Android Studio 的 buid.gradle文件里有个配置项被更改 ...
- cocos2dx打包apk
一.相关工具准备 1.SDK 2.NDK 3.ANT 4.JDK 并且搭建好JDK环境 二.搭建环境 1.打开cocos2dx目录下的setup.py文件 2.如图所示,按照提示分别输入之前下载的ND ...
- android打包apk时混淆遇到的问题
android打包apk的时候一般会选择混淆,而在eclipse中常使用的是proguard来混淆.有很多时候引用了第三方包的时候会导致打包不成功,或者打包成功不能运行的情况. 首先看看正常的prog ...
- unity调用安卓打包apk时的错误unable to convert classes into dex format
出现这种问题一般是由于有重复的文件所致,看下unity报的错误那些文件重复了,把重复的文件删了即可 例如,将eclipse中的安卓工程bin\class导出jar包时,会将下面的.class文件打包, ...
- Android Studio打包APK时出现 is not translated in "en" (English) [MissingTranslation]
错误信息: Error:(16) Error: "baidutieba_client_inavailable" is not translated in "en" ...
- 关于ionic2打包android时gradle下载不了的解决方法(附:简单优化启动速度彩蛋)
问题 之前在使用ionic2时使用建立android平台命令或者编译时,总是会在获取gradle时卡住,等很久进度也不变化,导致命令超时失败.于是经过查阅资料和自己实践测试,总结出以下办法. 方法 其 ...
- 【Python求助】在eclipse和pycharm中,通过adb install安装中文名字APK时老是报错,如何解决
# -*- coding: utf-8 -*- import os import sys import subprocess import time from uiautomator import d ...
- Android studio打包APK混淆配置
要在打包APK时加入混淆需要在Module中的buid.gradle中加入如下信息 buildTypes { release { minifyEnabled true shrinkResources ...
- 打包apk java 虚拟机内存不足
解决方案:在android->sdk->build-tools-android-version 中有个 dx.bat dx.bat --dex 命令的dx.bat脚本有这样一句代码 REM ...
随机推荐
- vue中echarts随窗体变化
<div id="myChart" :style="{width: '100%', height: '345px'}"></div> & ...
- 理解Xaml标记语言
理解XAML XAML基于XAML,因而具有与XAML相似的特性.在XAMl中,同样必须区分大小写,但是Xaml以.xaml作为扩展名,表示这是一个应用程序的标记扩展文件.WPF中的XAML主要用于创 ...
- CXF - JAX-WS入门
相关dependency,我使用的版本是2.7.11: <dependency> <groupId>org.apache.cxf</groupId> <art ...
- 【3】.net MVC 使用IPrincipal进行Form登录即权限验证
1.在MVC项目中添加用户类,可以根据实际项目需求添加必要属性 public class UserData { /// <summary> /// ID /// </summary& ...
- 二:SpringMVC知识整理
springmvc复习: 1.SpringMVC介绍 2.SpringMVC入门程序 1)创建web工程 2)导入jar包 3)在web.xml中配置前端控制器(指定上下文件的路径 classpath ...
- GuavaCache实现堆缓存
一.缓存 频繁地数据库I/O是很大的负担,而缓存是减少I/O提高性能的银弹. 缓存的实现一般上是以类似map的键值对的形式,并对外提供put和get方法,但缓存空间不能无限扩大,所以它得有一种缓存清除 ...
- mybatis笔记<二> 整合spring
mybatis与spring整合需要添加几个jar包,mybatis-spring, spring-context, spring-jdbc 1. spring ioc只要一个jar包就ok 2. 我 ...
- nexus3安装
windows环境 1.下载nexus3 2.以管理员的方式打开命令行,建议打开服务管理界面,将这个服务设置为手动,步骤是:右键我的电脑-->服务-->nexus,然后点击设置手动启动 3 ...
- 软件项目技术点(1)——Tween算法及缓动效果
AxeSlide软件项目梳理 canvas绘图系列知识点整理 Tween算法及缓动效果 软件里在切换步序时需要有过渡动画效果,从当前位置的画面缓动到目标位置的画面.动画效果可重新查看文章系列第一篇 ...
- 【Supervised Learning】 集成学习Ensemble Learning & Boosting 算法(python实现)
零. Introduction 1.learn over a subset of data choose the subset uniformally randomly (均匀随机地选择子集) app ...