unity调用安卓原生activity,按Home键返回被杀死问题解决

       做过unity与安卓原生交互的同学应该都知道,我们在unity里面调用安卓原生的activity,按Home键返回到桌面,之后重新进入unity场景,安卓原生的activity就会被杀掉。

        其实这个问题做过安卓的人都知道,这个关乎到安卓对于activity的运行机制问题,这些问题这里不想再多说了,网上有太多关于launchMode的解答例如:

http://blog.csdn.net/liuhe688/article/details/6754323/

如果对activity 的四种launchMode:1.standard、2.singleTop、3.singleTask、4.singleInstance不了解 可以先去查查资料。

因为unity默认程序打包出来的Androidmanifest配置android:launchMode="singleTask",一看到这里,做安卓开发的同学基本就知道了,哦原来是这里搞的鬼,所以只要将launchMode="singleTask"改成标准的launchMode="singleInstance"就可以了,因为默认就是标准的所以可以直接把这一行直接去掉。

        但是你以为这样就可以了么,众所周知,安卓的手机何其之多,所以就会出现各种的定制系统,出现各种奇奇怪怪的问题也是再所难免,对于程序员来说,有bug实在是太正常不过了,我们最不怕的就是bug,只要给出相应的机子,重现出相应的bug,对我们来说就不是bug 了,而是一个丢在臭水沟的西瓜皮,烂掉只是时间的问题而已。

        好了说重点,就是在将launchMode改成标准的之后在很多手机会出现这样一种情况安装完应用之后直接点击打开按钮进入游戏之后按HOME键退到桌面,再次点击应用图标进入游戏就会出现重新开始应用(其实这里是是因为重新创建主activity,才会看到重启游戏),在某些安卓发布平台就会因为这个问题而导致审核不通过,然后发给你的日志报错信息只能看到:

```
07-21 14:17:15.714 632-632/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

07-21 14:17:15.714 632-632/? A/DEBUG: Build fingerprint: 'Xiaomi/land/land:6.0.1/MMB29M/V8.2.3.0.MALCNDL:user/release-keys'

07-21 14:17:15.714 632-632/? A/DEBUG: Revision: '0'

07-21 14:17:15.714 632-632/? A/DEBUG: ABI: 'arm'

07-21 14:17:15.714 632-632/? A/DEBUG: pid: 25450, tid: 25721, name: UnityMain  >>> com.sinyee.babybus.shadow <<<

07-21 14:17:15.714 632-632/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdc

07-21 14:17:15.726 632-632/? W/debuggerd: type=1400 audit(0.0:1386133): avc: denied { search } for name="com.sinyee.babybus.shadow" dev="dm-1" ino=138908 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0

07-21 14:17:15.768 632-632/? A/DEBUG:    r0 00000000  r1 00000001  r2 df7d1a30  r3 00000000

07-21 14:17:15.769 632-632/? A/DEBUG:    r4 e140bc20  r5 df7d13e4  r6 df7d13e8  r7 df7d1510

07-21 14:17:15.769 632-632/? A/DEBUG:    r8 efc2a101  r9 df7d1510  sl 00000001  fp df7d138c

07-21 14:17:15.769 632-632/? A/DEBUG:    ip df7d1a90  sp df7d1218  lr e12ff97c  pc e109b154  cpsr a00f0010

07-21 14:17:15.773 632-632/? A/DEBUG: backtrace:

07-21 14:17:15.773 632-632/? A/DEBUG:    #00 pc 00021154  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libmono.so

07-21 14:17:15.773 632-632/? A/DEBUG:    #01 pc 001f2738  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libmono.so (mono_runtime_invoke+136)

07-21 14:17:15.773 632-632/? A/DEBUG:    #02 pc 003e93a0  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libunity.so

07-21 14:17:15.773 632-632/? A/DEBUG:    #03 pc 0034e548  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libunity.so

07-21 14:17:15.773 632-632/? A/DEBUG:    #04 pc 000f78e8  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libunity.so

07-21 14:17:15.773 632-632/? A/DEBUG:    #05 pc 00387998  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libunity.so

07-21 14:17:15.774 632-632/? A/DEBUG:    #06 pc 0038d1e0  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libunity.so

07-21 14:17:15.774 632-632/? A/DEBUG:    #07 pc 004e2c58  /data/app/com.sinyee.babybus.shadow-1/lib/arm/libunity.so

07-21 14:17:15.774 632-632/? A/DEBUG:    #08 pc 01167eeb  /data/app/com.sinyee.babybus.shadow-1/oat/arm/base.odex (offset 0xa1e000)
```

乍一看,啊,是unity原生层报错,这他妈怎么搞,难道去反编译unity的.so来看,不仅麻烦还不一定看的懂。

我的解决方法:

将unity项目打成eclipse工程,就是打包的时候将google Android project勾起来如图001,

图 001

然后,将工程用eclipse或者Android studio打开,我们这边已经有用Android studio写好模板 只要把资源复制过来就可以了。然后我这边在app下创建一个UnityMain.java来作为启动activity。只要在这里面做下判断如果游戏activity存在就不再重新启动了,脚本如下:

```
public class UnityMain extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

     if (App.get().mainActivity != null) { //这里是判断应用的activity是否存在,存在的话直接结束这里,否则启动应用

    finish();

   } else {

   Intent intent = new Intent(this, Main.class); //这里的Mian就是启动unity的类

   startActivity(intent);

   finish();

    }

  }

}
```

好了,这就是我的解决办法,如果有更好的方法也可以分享出来。

本文固定链接:unity调用安卓原生activity,按Home键返回被杀死问题解决

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容