说明:下文是平时经验总结得来,有部分截图和文字是我懒得打字,直接从其它地方copy的,但意思是一样的,现在分享出来。如果需要带图文完整版的话请到下面连接阅读详细的。
链接地址是我个人的有道笔记分享,有不当的地方欢迎评论指出!
http://note.youdao.com/noteshare?id=1f973c3ce50c6973791a7b5746163b73
《配置环境》
1:打开cocosCreator设置》原生开发环境, 配置成如下图即可。
详细可见官网的配置文档: http://docs.cocos.com/creator/manual/zh/publish/setup-native-development.html
文档中有所需要文件的下载地址。
注:对应工具建议使用官方推荐版本,如NDK和ANT版本,近期NDK有更新版本,如果升级的话可能会有编译上的问题。
另外window和mac环境配置不同,官方文档上面有说明。
《从构建到编译再打包》
1:先看图
2:初始场景选对,参与构建的场景选项,如果项目中没有使用到的场景可以不打钩,这样可以减少包的体积大小
3:合并图集中的 SpriteFrame启用后能够减少热更新时需要下载的 SpriteFrame 文件数量,但如果图集中的 SpriteFrame 数量很多,原生平台上游戏的启动时间可能会延长,个人建议打钩,原因是热更新默认如果下载文件数多的话容易导致热更新失败。
4:编译模板默认选择default,这里如果后期的原生发包是采用框架式的发包就可以使用 binary 和link。区别:
第一 >>> binary是使用预编译好的 cocos2d-x 库构建项目。
第二 >>> link 模板不会拷贝 cocos2d-x 源码到构建目录下,而是使用共享的 cocos2d-x 源码。这样可以有效减少构建目录占用空间,以及对 cocos2d-x 源码的修改可以得到共享
5: APP ABI
建议勾选如上图的三种,这里是平台的支持库,x86等,默认是
这里需要注意的是,项目构建编译勾选了三个的话,后期接入其它SDK,相应的也要接入三个对应的文件,如图三个文件夹内
APP ABI 勾选的多的话编译需要的时间也会相应增加。
使用文件夹 pro_packages 项目打包的话,每次出包只需要点击“构建发布”面板中构建按钮即可,然后把构建好的src 和res文件夹拷贝到pro_packages根目录替换即可,frameworks 文件内添加了原生平台的东西,发包时候不要修改该文件夹
6:调试秘钥只针对安卓平台,可默认也可配置自己的签名文件,生成的原生项目对应路径如下
7:AnySDK,sdk的集合框架,详细看anysdk 官网,没有的话可以不勾选
8:SDKBox 不需要可忽略,cocos1.4版本没有这个
9:加密脚本 选项也是1.4版本没有的,勾选后,发布非调试包的时候需要填上key,而且key需要与之前相同,加密后的脚本后缀为jsc 加密格式,不可明文,同时会压缩代码内存大小,若key不相同,可能会导致启动游戏时黑屏解密脚本文件失败。web版本发正式包也需要勾选加密,否则源代码可在浏览器被抓包!
10:打开调试模式编译后的js 文件后缀为.js 可以看到具体的代码,正式发包不勾选,编译后的文件为.jsc 后缀
11:配置好后直接点击构建,sleep为构建完成。
12:用原生xcode打开ios项目。
前面构建项目前的包名,对ios来说就是
要在构建项目的时候定好包名,若要修改的话在以下地方修改ios 的包名
13:打包ipa前需要电脑联网
xcode打开设置》添加开发者账号
添加要准备打包的开发者账号
14: 准备Certificate、Provisioning Profile
Certificate(证书)就是app在打包的时候必须签名,苹果iOS系统在安装app之前会验证Certificate,否则不会通过安装。 Provisioning Profile简单来说就是包含Apple ID,证书,和设备ID等各种信息的集合体。一般来说,在打包ipa的时候,必须配置Provisioning Profile。
15:如上图,这里的红点原因如图中的英文,是因为这个包名com.wulushen.wdlmz 你们已经用了,所以我的账号不能使用。
也就是对应这个Apple ID账号在你的Mac本地是没有对应的Provisioning Profile的。Provisioning Profile是需要去开发者中心
16:官网配置 https://developer.apple.com/account/ios/profile/create
一共四步走,每一步都是点右上角的+号操作。
四步走完后文件安装在mac 电脑上后,打开xcode打包。
安装好后检查:
在打开钥匙串应用,看看有没有导入成功,
然后检查xcode
17:设置有效的Archive配置,这里面一定要选择“Release”,因为发布版本一定是release的,除非打测试包对应就是add-hot选项,第16中的第4也要对应是选择Ad Hot。
18:
选择
然后
19 :配置code sign,选择刚才下载安装好的文件
20:编译设备,如图选择
21:开始打包,
慢慢等。。。
22:没问题的话等编译就好了,这里如果有报错信息得看具体报错,一般报错是证书没有配置对,就是上面说的是步走。检查一下,证书配置有没有问题,必须先把证书安装到电脑上才可以打包
然后会自动弹出框来,这里不等了,找了别人的图。
第一个就是最新打包出来的包,点右边的输出包。会弹出
选择你相对应的,然后next。。。
再一直继续next。
然后就over!
以上是发布普通ipa 包的大致流程,发布过程中可能会出现其它大大小小的问题,如果是发布到appstore报错,可根据报错信息修改项目,一般可检查appIcon文件,启动页资源,本地电脑证书配置问题, xcode环境问题,项目资源内格式、文件类型限制、如png、jpeg等,依赖库或者sdk兼容问题,xcode 新旧版本问题!(另外cocos 不同版本编译出来的项目,如1.6和1.7、1.8,1.9等,不同版本是不可兼容的,不可发布版本后,使用cocos新或者旧版本热更新游戏)
《Android平台发包》
1:使用pro_packages/frameworks/runtime-src/proj-android-studio 该项目在原生平台打包
2:lib_interfaces 依赖库是我添加的基础库,后续会继续拓展
3:项目内的配置非必要情况不可修改,每次发包前需要修改包体的版本号和build版本号,如下
versionCode是build版本号,发包前必须要递增+1,否则无法覆盖手机上的旧包安装,会安装失败。
versionName是对用户可见的版本号,也需要自增+1,但这里不+1 的话不会影响新包覆盖旧包安装
以上两点ios平台同理
4:编译打包如图
选择keystore文件,上文中有说明keystore 文件,发包的keystore 文件信息密码需要保存好,否则会被反编译重新打包,而且同个包不同keystore 的话应用市场会认为是包体是虚假冒充不给予审核上架。
next...
勾选下方V1和V2, 可优化包体的安装启动速度,同时迭代发包时也都需要勾选两者,若新旧版本的包都是单独勾选其中之一或者其它,可能导致部分机型,部分系统版本安装失败!
finish...
以上截图没有说明的看图中的英文就可以了!
开始编译打包,编译时间会很久,取决于电脑配置,和上文说的构建面板中的APP ABI 选项。
over。。。
《原生平台调用》
以下部分官网貌似没有文档说明,不晓得更新了没有。
js 基本调用ios :
jsb.reflection.callStaticMethod('ios 类名','静态函数名');
ios 调用 js:
ios 调用js 需要注意,在后缀.mm文件内调用js全局函数,调用如下
std::string jsCallStr = cocos2d::StringUtils::format("onGameLoginRsp("%s");", strRet.c_str());
jsval ret;
ScriptingCore::getInstance()->evalString(jsCallStr.c_str(), &ret);
//注:jsval ret,根据版本情况判断传不传到evalString函数。
下面是官方ios的调用文档。
http://docs.cocos.com/creator/manual/zh/advanced-topics/oc-reflection.html