如今,通过Egret、LayaBox、CoCos引擎开发的小游戏越来越流行,很多开发者也通过引擎直接发布原生Android安装包,本文主要总结了发布安装包需要实现的功能和可能遇到的问题。
一、小游戏打包安卓APK需要实现的功能:
1、基础功能
- js和java相互通信
- 获取唯一设备id
- 版本更新功能(包括版本配置、更新提示、下载安装整个流程)
- 实现数据的本地持久化,使用SharedPreferences
- 复制信息到粘贴板
- 触发震动
- App手机通知功能
2、游戏接入
- 账号体系(微信登录、登录账号缓存、个人信息获取与处理、openid、联合id,账号退出时清理用户数据,停止timer,重新登录)
- 广告接入: 腾讯优量汇或穿山甲广告接入(视频、banner、插屏等)
- 微信分享功能及回调处理(普通分享、截屏生成图片分享)
- 邀请来源机制(完成分享到邀请整个流程,需要管理好邀请关系)
- 友盟统计
3、其它辅助细节处理:
- window.onError 全局错误侦听和上报
- 如果接入应用宝市场,需要显示“用户协议”
- 需要针对网络异常时,屏蔽广告等
- 编写脚本,实现发布版本时自动修改版本号 //参考https://blog.youkuaiyun.com/a1064072510/article/details/82994857
- 针对不同渠道添加渠道编译参数 参考 https://www.cnblogs.com/ldq2016/p/7568906.html
- 如何查看一个陌生apk的证书信息、生成panda.jks证书、生成panda.keystore证书,如何对空白包进行签名
- 优化素材调用机制,部分素材不打包到apk
- 客户端数据配置缓存服务端同步机制(保证在紧急情况下无效发版本更新数据配置表)
- 游戏内查看apk版本号
二、egret游戏 接入安卓遇到问题
1、用 hitTestPoint 会导致闪退,报错如下:
Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x78 in tid 3596 (GLThread 5070), pid 3517 (wer_def.android)
2、JsonObject 低版本似乎不支持,改用第三方 Gson
3:app隐藏(finish)的时候 不会马上释放资源,单例类还会在后台运行,哪怕再次启动app,也还会存在,所以要考虑单例变量的重新赋值
4、安装apk安装不了,提示:Android 6.0 更新包与已安装应用的签名不一致 (应该是之前版本没有卸载干净)
解决办法:强制使用命令卸载:adb uninstall xxx
常用的命令有:
adb devices # 确认连接到设备
adb uninstall xxx # 卸载
adb shell pm list packages # 查看包名_非必须
5、2个app不要用相同的证书签名,否则在接入微信登录sdk,如果同时安装了2个app,那只有1个能正常调取微信登录
6、AndroidManifest.xml 属性冲突;参考:https://blog.youkuaiyun.com/cpcpcp123/article/details/84882373
7、微信登录api在登录取消时,也会触发WXEntryActivity里面onResp方法,要做好兼容提示
8、egret引擎,打包在android里面运行,texture.toDataURL(“image/jpeg”)输出的居然是png数据,电脑浏览器里面正常
三、其它知识点:
1、Aandroid studio 构建 gradle文件 存放到 K:\egert_sdk_files.gradle,不要放到用户文件夹,
设置方法:Aandroid studio ==> file ===> settings ===> Build,Execution,Deployment ===>Gradle ===> Global Gradle settings,修改文件夹为自己要设置的文件夹:
2、手机存储卡问题:https://bbs.youkuaiyun.com/topics/391891314?page=1
3、下载apk的时候:报错:open failed: EACCES (Permission denied)
原因是AndroidManifest.xml里面没有配置权限
参考:https://blog.youkuaiyun.com/fightsyj/article/details/82664217
4、ActivityCompat 里面没有 checkSelfPermission方法,需要使用android-support-v4.jar 最新版本
https://download.youkuaiyun.com/download/omaidoudou/10887315
5、minSdkVersion 区别:
https://blog.youkuaiyun.com/qq_41933149/article/details/89926191