首先,进行环境配置。
jdk1.8 : https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
ndk-r10e :https://developer.android.google.cn/ndk/downloads/revision_history
ant:
https://archive.apache.org/dist/ant/binaries/
sdk https://android-sdk.en.softonic.com/download
当然这不是SDK,只是一个下载SDK的工具。
最终结果如图所示:
下载好后,对压缩包进行解压。
现在讲一下安装的具体操作:
jdk,配置环境变量:
打开电脑的搜素框输入 编辑系统环境变量,如下
点击,就会弹出
新建 : JAVA_HOME
新建: classpath
变量值:.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
注意,不要少了标点符号 .;
配置 path
新建: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
点击新建,然后输入:
ant 的环境设置
点击 新建 按钮,然后输入ant的路径
D:Downloads\apache-ant-1.9.7-bin\apache-ant-1.9.7\bin
将cocos2dx和android环境关联起来。就是把 ndk 、sdk、 ant配置到cocos2dx的环境中。
然后,输入 setup.py
然后,依次输入 ndk 、sdk、 ant 的路径。
接下来
需要将class文件夹下面的cpp文件添加进 Android.mk文件中,
这里,我们可以选择一个一个地添加 cpp 或 c 文件,但是文件数量多了以后就容易出现问题。
为此,建议改成
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
#遍历Classes目录
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellocpp/main.cpp
#从所有文件中提取出所有的.cpp和.c文件
FILE_LIST += $(filter %.cpp %.c, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
接下来,打包APK
在项目页面,打开cmd窗口
输入命令 cocos compile -p android --ap android-29
解释:android-29 是你下载的SDK的名称
之后就等待游戏编译,编译成功后会出现
遇到的问题有:
1、程序包org.apache.http.message不存在,即缺少 org.apache.http包。
方法:此时,在sdk下,找到 org.apache.http.legacy.jar 。然后
将 org.apache.http.legacy.jar 这个包放到,D:\myWorkSpace\justTest\cocos2d\cocos\platform\android\java\libs目录下面:
原因是: android 6.0(api 23) SDK,不再提供org.apache.http.*(只保留几个类). sdk 23版本以上的就没有这个程序包了。需要的话,要自己手动添加。
2、[Error] ‘to_string’ was not declared in this scope to_string()
方法:
将Application.mk,里面的
改为
APP_STL := c++_static
这里可以查看:
https://lichuachua.blog.csdn.net/article/details/103092876
3、有些windows特有的方法是无法在 android 使用的,如
sprintf_s,这个只能在windows上使用,因此打包的适合会出问题,我们需要替换成 snprintf。snprintf才是通用的方法。
因此,最好使用标准函数,如果打算跨平台的话。
可以参照的博客:
https://www.jianshu.com/p/f78719e9a638
https://blog.csdn.net/pikefish/article/details/84950344
https://blog.csdn.net/HappyKocola/article/details/73554867