本帖最后由 106563120 于 2017-1-18 17:57 编辑
问题复现方法:
1、打开游戏,打开任意一个sdk界面,如登录、账户管理、充值等
2、使用手机home键最小化游戏到后台
3、在手机的应用程序菜单launcher界面找到游戏图标,点击打开
期望结果:
之前打开的sdk界面仍保持在最上层
实际结果:
之前打开的sdk界面没有保持在最上层,已消失,出现的是游戏界面
问题解决方案: 在AndroidManfest配置了android:launchMode="singleTask"的activity配置,均修改为android:launchMode="standard"即可。
注:如果unity3d引擎修改后无效,请将这一行试试:<meta-data android:name="unityplayer.UnityActivity" android:value="false" />,原“true改为false”
以上方法修改后无效,建议反编译APK查看下是否修改成功,如修改不生效,请参考下面air的解决方案修改
==========================分割线==========================
如果你的游戏属于flash air开发,请参考以下方案:
在 SDK 界面显示时按 Home 后再从 launcher 启动后 SDK 界面被切掉的解决办法:
原因:AIR 项目导出的 apk 包里主 Activity 的 launchMode 固定为 singlTask,会造成重新进入时所有其它 Activity 都会被切掉。
解决办法:
(1)导出 apk 后,用 apktool (需从网上下载)将 apk 包解开,命令为: apktool d xxx.apk xxx_dir
(2)打开 xxx_dir 下的 AndroidManifest.xml 文件,将 AppEntry 这个 Activity 的 launchMode 值修改为 standard ,并保存;
同时应留意每个声明的 Activity 的 android:configChanges 属性,确保该属性包含了 screenSize ;
(3)用 apktool 重新打 apk 包,命令为:apktool b xxx_dir xxx_new.apk ;
(4)对新 apk 包进行签名
(i) 如果没有签名文件,则需生成签名文件,用 JDK 中的 keytool 工具生成,命令为:keytool -v -genkey -keystore cert.keystore -alias cert.keystore -keyalg RSA -validity 200000
(ii) 对 apk 签名,用 JDK 中的 jarsigner 工具,命令为:jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore cert.keystore -sigfile cert -signedjar xxx_new_signed.apk xxx_new.apk cert.keystore
如果签名时报错,试一试去掉 -sigalg MD5withRSA 参数。
可以直接使用 .p12 证书进行签名,命令为:jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore xxx.p12 -storetype pkcs12 -sigfile cert -signedjar xxx_new_signed.apk xxx_new.apk 1
(iii) 对 apk 进行对齐优化,用 Android SDK 的 zipalign 工具,命令为: zipalign -f -v 4 xxx_new_signed.apk xxx_new_aligned.apk
至此,新得到的 xxx_new_aligned.apk 解决了重新进入后 SDK 界面会被切掉的问题,可以进行发布。上述过程可以写成一个批处理命令快速执行。
|