请选择 进入手机版 | 继续访问电脑版
查看: 34880|回复: 29

[教程] Windows下环境Android配置,成功编译打包引擎Demo

[复制链接]
最佳答案
0 
leibi123 发表于 2015-2-4 15:22:16 | 显示全部楼层 |阅读模式
本帖最后由 leibi123 于 2015-2-4 15:24 编辑

首先可以先看下坛子里面的原始教程Windows下环境Android配置: http://crossapp.9miao.com/Articledetail_1011.html

下面提到的算是对这个教程的一个补充优化吧。

我的开发环境:win7下Eclipse + CrossApp 0.6.0

工程导入eclipse后,编译运行过程中所出现的异常和错误以及对应的解决办法如下表所示。
1.在工程src下的包错误,提示找不到org.CrossApp.lib这个包

原教程解决办法:将CrossApp\CrossApp\platform\android\java\src路径下的文件夹复制到工程的\proj.android\src目录下,注意,org.CrossApp.lib包需要和工程的包名在src的同级目录下,不能有包含关系。

我的解决办法:导入引擎android工程的办法。同导入项目android工程的办法一样,导入这个工程,路径CrossApp\CrossApp\platform\android

2.运行工程出现Error: Program "bash" is not found in PATH

原教程解决办法:右键工程->roperties,在打开面板中点击C/
C++ Build,在Build command一项中,把默认的command替换为自己ndk目录下的ndk-build.cmd,例如:D:\android-ndk-r9c\ndk-build.cmd。

我的解决办法:在环境变量里面加入ANDROID_NDK_ROOT配置D:\cocos2dx\android-ndk-r9d(之前用过cocos2dx的朋友在环境里面里面肯定已经有这个环境变量了),然后同源教程方法一样,只是command命令为${ANDROID_NDK_ROOT}\ndk-build.cmd

3.运行工程出现Cannot find module with tag 'CrossApp' in import path

原教程解决办法:在android.mk中找到$(call import-module,CrossApp),在这句前面添加如下两段代码:
$(call import-add-path, D:/CrossApp)
$(call import-add-path, D:/CrossApp/CrossApp/platform/third_party/android/prebuilt)
路径修改为自己的对应路径。

我的解决办法:
$(call import-add-path,$(LOCAL_PATH)/../../../../../CrossApp)
$(call import-add-path,$(LOCAL_PATH)/../../../../../CrossApp/CrossApp/platform/third_party/android/prebuilt)


前提条件是,项目是用project-creator.exe生成的,在引擎的projects目录下,也就是工程所在路径为默认的路径,例如CrossApp\CrossApp\projects\CrossAppTest

我的办法与源教程办法区别就是,我没有写绝对路径进去,这样我在一个电脑上面建立的项目,放到另外一个安装配置了CrossApp的电脑上面,只要把项目扔到 引擎的projects目录下面,就可以不用修改C++ Build的Build command,也不用修改android.mk的路径了。


4.项目-右键-debug as android application生成APK的时候出现 [2015-02-04 14:25:54 - Demo] The connection to adb is down, and a severe error has occured.
[2015-02-04 14:25:54 - Demo] You must restart adb and Eclipse.
[2015-02-04 14:25:54 - Demo] Please ensure that adb is correctly located at 'D:\cocos2dx\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' and can be executed.


解决方案: 这是由于adb服务启动失败导致的,网上解决方法很多。我就说下最常用的解决办法。
首先关闭Eclipse,然后运行,cmd,打开命令行工具. 切换到adb所在的路径,也就是上面报错提到的路径。命令行输入"D:"切换到D盘,然后输入"cd D:\cocos2dx\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\",输入adb,会刷出一堆命令,网上翻会看到adb kill-server和adb start-server两个命令,一个是关闭服务的,一个是开启服务的。首先在任务管理器里面杀掉进程adb.exe,然后命令行输入“adb kill-server”,关闭服务器,最后输入adb start-server开启服务,成功 会有如下提示* daemon not running. starting it now on port 5037 * * daemon started successfully *. 接着就可以重启Eclipse了,然后重新生成APK,一般就可以成功了,如果还是有问题,就清理下项目,再试试。如果还是有问题,那就问度娘吧。



5.编译成功了,也装到手机上了,可是运行崩溃。这可真是多灾多难啊。
看日志报错是因为ffmpeg库加载不到,原来代码里面忘记加载了。

解决方案:项目的src下面的Demo.java中
    static {
            System.loadLibrary("ffmpeg");        // <--请添加该语句!
        System.loadLibrary("CrossApp_cpp");
    }   
  

这方法是在论坛中看到的,有点想不明白,这问题在很早的版本都出现了,为什么不在最新版本中修复。

6.我以为就此大功告成了,结果尼玛还没完。运行又崩了。
接着看日志02-04 15:09:36.618: D/CrossApp debug info(10407): Get data from file(information.json) failed!
这是说找不到资源文件么。一看工程中的assets文件夹,里面竟然是空的。用惯了cocos2dx的自动化,
突然有点不习惯啊,这要是CrossApp可以改进的地方啊。不会自动,咱就手动吧

解决方案:把Resources文件夹下的所有文件拷贝到demo\proj.android\assets文件夹下面。刷新android工程,再来。

最终奇迹出现,Demo在我的小米手机上面成功跑起来了,泪崩了

最后我想说,还好我还练过。这要是一个没接触过cocos2dx的纯新人想在android手机上面看下demo,还不给弄哭了。希望此教程对于新人有用。
当然CrossApp本着开源精神,值得我们大家的肯定与赞扬了,希望更加完善和稳定,加油!

评分

参与人数 1铜板 +50 收起 理由
Slim + 50

查看全部评分

最佳答案
0 
w_abc5981 发表于 2015-2-4 15:49:55 | 显示全部楼层
我刚因为0.6.1打包的apk太大(空项目8M多,看了别人的才2M还带图片资源)下了0.6.0,在eclipse中build提示没找到“no rule for CAUIHelper.so 。。。”(大概是这个提示已经关闭了eclipse),楼主竟然没碰到,奇怪了。我还是暂时用0.6.1吧,等下个版本

点评

这个我还真没有遇到过,看是不是开发工具版本的问题或者makefile文件写的有问题。 下面是我的相关版本: NDK D:\cocos2dx\android-ndk-r9d ANT D:\cocos2dx\apache-ant-1.9.2 JDK 1.8.0  详情 回复 发表于 2015-2-4 16:14
最佳答案
0 
 楼主| leibi123 发表于 2015-2-4 16:14:49 | 显示全部楼层
w_abc5981 发表于 2015-2-4 15:49
我刚因为0.6.1打包的apk太大(空项目8M多,看了别人的才2M还带图片资源)下了0.6.0,在eclipse中build提示 ...

这个我还真没有遇到过,看是不是开发工具版本的问题或者makefile文件写的有问题。
下面是我的相关版本:
NDK D:\cocos2dx\android-ndk-r9d
ANT D:\cocos2dx\apache-ant-1.9.2
JDK 1.8.0
最佳答案
0 
Slim 发表于 2015-2-4 16:28:54 | 显示全部楼层
就是需要这样的教程,感谢
最佳答案
0 
Slim 发表于 2015-2-4 16:33:29 | 显示全部楼层
因为在windows下执行脚本是ndk-build.cmd,这个脚本没写自动拷贝资源,所以需要手动拷贝下,在linux/unix下的shell脚本是可以的
最佳答案
0 
Slim 发表于 2015-2-4 16:38:02 | 显示全部楼层
$(call import-add-path,$(LOCAL_PATH)/../../../../../CrossApp)这个方法也行,自动读取工程目录,$(LOCAL_PATH)就是mk文件所在的目录,向上取路径就行了。
最佳答案
0 
Top0 发表于 2015-2-4 16:59:55 | 显示全部楼层
不错,这个给力
最佳答案
0 
foggy 发表于 2015-2-4 17:14:47 | 显示全部楼层
这个真不错```节省很多招错误时间```
最佳答案
0 
Slim 发表于 2015-2-4 19:25:44 | 显示全部楼层
foggy 发表于 2015-2-4 17:14
这个真不错```节省很多招错误时间```

本9也这样认为
您需要登录后才可以回帖 登录 | 注册

本版积分规则

推荐阅读 More>

© 2001-2015 9秒社团

合作伙伴

公司简介 | 联系方式
COPYRIGHT©2015 ZHONGQINGLONGTU NETWORK CO.LTD ALL RIGHTS RESERVED.ICP备11023195号-4
北京中清龙图网络技术有限公司
返回顶部 返回列表