Android build in store 的行为与通过 USB 安装的 apk 不同

Posted

技术标签:

【中文标题】Android build in store 的行为与通过 USB 安装的 apk 不同【英文标题】:Android build in store behaves differently than apk installed via USB 【发布时间】:2014-05-20 09:40:02 【问题描述】:

我遇到了一个非常令人困惑的问题。我已经构建了我的应用程序的最终版本 APK,将其提交到 Play 商店,并安装在我的测试设备上。当我以这种方式安装该应用程序时,它会表现出不同的启动模式行为。

我生成的 APK 是通过 Proguard 和 zipalign 构建的 Gradle 的产物。为了便于解释,假设我的应用程序是仪表板类型的应用程序,其主要活动显示活动 B 的启动按钮。我获取了此版本 APK 并通过 USB 'adb install' 将其安装到我的设备上,所以我正在比较完全相同的 APK有两种不同的安装方法。

USB方法:当用户点击主Activity中的按钮启动Activity B时,Activity B启动并显示在屏幕上。如果用户点击主页按钮(接听电话等)然后返回应用程序,Activity B 仍在显示。这是期望的(和预期的)行为。

Store 方法:从商店下载 APK 并再次安装/启动会显示主 Activity。单击按钮时,将再次启动 Activity B。现在,当用户点击 home 并返回时,后台堆栈显然已被清除,主 Activity 再次显示。

我没有在清单中指定任何特殊的启动模式,因此所有活动都是标准的。安装方法怎么会影响这种东西!?这让我发疯。有谁知道为什么会发生这种情况?

【问题讨论】:

只是猜测,但您是在使用 adb 推送发布版本还是调试版本? 发行版,和我上传到 Play 的版本相同:/ 好的,你确定你不是在一个实例而不是另一个实例中恢复应用程序吗? 除了this,我找不到任何说apk的功能被修改... How can I make an android app stop restarting every time it is opened?的可能重复 【参考方案1】:

我遇到了同样的问题,这对我有用。在 Manifest 的活动元素中显式设置 launchMode。

android:launchMode="singleTop"

“如果 Activity 的实例已经存在于目标任务的顶部,系统会通过调用其 onNewIntent() 方法将 Intent 路由到该实例,而不是创建 Activity 的新实例。”

有关更多选项和说明,请参阅文档: http://developer.android.com/guide/topics/manifest/activity-element.html

【讨论】:

我也面临同样的问题,我应该将此启动模式应用于哪个活动,以及我应该在新意图方法中处理什么

以上是关于Android build in store 的行为与通过 USB 安装的 apk 不同的主要内容,如果未能解决你的问题,请参考以下文章

构建后的 FxCop 10.0,VS2010 中的 [Location not stored in Pdb]

Building and using plug-ins for Android

how to build a android environment in ubuntu 15.10

发布报错:Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store

Could not find com.android.tools.build:gradle:4.2.2. Searched in the following locations: - https:(代

我该如何克服这个问题:ANDROID_SUPPORT_V4_VERSION in phonegap build