Android 我如何测试一个";“未安装应用程序”;发行';只有更新后才能看到它

Android 我如何测试一个";“未安装应用程序”;发行';只有更新后才能看到它,android,debugging,google-play,apk,adb,Android,Debugging,Google Play,Apk,Adb,几天前,我在Google Play上启动了一个应用程序,然后决定进行更新并将其推出。我在我的设备上加载了原始版本(在主屏幕上也有一个启动图标),当更新可用时,我也使用了该版本,并且在使用启动图标时,我开始看到一条消息: 我将手机连接到电脑上,抓起一个日志,记录我看到这条消息时发生的事情: I/InputDispatcher( 379): Delivering touch to current input target: action: 0x1 I/ActivityManager( 379)

几天前,我在Google Play上启动了一个应用程序,然后决定进行更新并将其推出。我在我的设备上加载了原始版本(在主屏幕上也有一个启动图标),当更新可用时,我也使用了该版本,并且在使用启动图标时,我开始看到一条消息:

我将手机连接到电脑上,抓起一个日志,记录我看到这条消息时发生的事情:

I/InputDispatcher(  379): Delivering touch to current input target: action: 0x1
I/ActivityManager(  379): START {intent.toShortString} from pid 711
D/PowerManagerService(  379): acquireDVFSLockLocked : type : DVFS_MIN_LIMIT  fre
quency : 1026000  uid : 1000  pid : 379  tag : ActivityManager
W/ActivityManager(  379): mDVFSLock.acquire()
W/ActivityManager(  379): Permission denied: checkComponentPermission() owningUi
d=10153
W/ActivityManager(  379): Permission Denial: starting Intent { act=android.inten
t.action.MAIN cat=[ xxx ] flg=0x10000000 pkg=com.gmail.apps.works.ren.tictactoe
cmp=xxxx bnds=[0,338][120,488] } from ProcessRecord{41cba100 711:com.sec.android
.app.twlauncher/10001} (pid=711, uid=10001) not exported from uid 10153
E/Launcher(  711): Launcher does not have the permission to launch Intent { act=
android.intent.action.MAIN cat=[ xxx ] flg=0x10000000 pkg=com.gmail.apps.works.r
en.tictactoe cmp=xxxx bnds=[0,338][120,488] }. Make sure to create a MAIN intent
-filter for the corresponding activity or use the exported attribute for this ac
tivity.
拒绝许可?经过一些研究,我发现我需要在
接收者下或直接在活动下获得
导出
权限,但根据各种答案,我不清楚哪种权限可以解决我的问题

现在,如果我直接从我的计算机上运行/调试,就不会出现任何问题,主屏幕启动器和菜单启动器都能按预期工作。此外,如果卸载应用程序并下载新副本,则不会出现任何问题。
我看到这个问题的唯一时间是在安装了以前的版本(和主屏幕启动器图标)后从Google Play下载更新时


那么,我如何重现这个场景,以便在不将更多(可能)损坏的内容推送到Google Play store的情况下测试不同的修复选项呢?

这就是我遇到的问题,Eclipse的正常调试/测试在这里不起作用,因为它卸载了以前的(不同签名的)版本,而且,就算我想试试,你也不能从Google Play下载同一应用程序的不同旧版本。。我是如何解决这个问题的:

备份,备份,备份
我总是在推送之前保存.apk的副本以及开发环境的快照,所以我有一些以前的副本

我发现,如果手动卸载应用程序,我现在可以通过以下方式安装我的一个旧版本:

$ mv <myapp>.apk.v1 <myapp>.apk
$ adb install <myapp>.apk
在保留旧数据(包括旧的主屏幕启动器图标)的同时重新安装了现有的应用程序

现在我可以重现我的问题了。最后一步是将各种修复程序应用到我的项目中(在Eclipse中),构建并导出(创建一个签名的.apk,就像我在Google Play上启动的一样),然后使用
adb install-r

以及,顺便说一句,添加:

android:exported="true"
我的应用程序的活动为我带来了好处。希望这对其他人有帮助

android:exported="true"