我已经在手机上发布了Google Play商店应用的正式版,并在Android Studio中拥有了该应用的更新版本。 我想测试升级过程,但是遇到版本问题,然后是日志记录问题。
要进行“全新”安装,我可以进入手机的设置Backup & reset > Automatic restore
,将其关闭,然后重新安装该应用程序,然后从Play商店安装它。或者,我可以下载正式版APK,并通过adb
命令行进行安装(详细信息如下)。结果是我的设备应该与普通生产用户相同。
与该问题没有直接关系,但要了解我观看升级过程的动机是该应用程序具有SQLite数据库,并且我扩展了SQLiteOpenHelper
,因此调用了onUpgrade()
,并提供了一些数据库架构工作正在完成。
如果我单击按钮以部署该应用程序,然后选择我已连接的设备,则该设备要卸载,然后继续:
安装失败,并显示消息无法完成会话:INSTALL_FAILED_UPDATE_INCOMPATIBLE
很明显,我可以卸载,但是这不会测试升级过程!
我使用Generate Signed APK...
构建了一个“发行” APK,这与生成要上传到Play商店的发行时所使用的过程相同。这可以解决版本控制问题,但会导致日志记录可见性问题。过去和现在使用的发行版配置如下:
“ C:\ Program Files(x86)\ HTC \ HTC Sync Manager \ HTC Sync \ adb” install -r app-release.apk
以上完成的升级没有卸载。我使用的过程是在Android Studio中打开Terminal
,将目录更改为存储生成的APK的目录,然后键入上述命令。
adb命令行触发了升级过程,但没有立即开始向Logcat窗口提供调试信息。我可以为所有进程连接到Logcat,但是我无法仅获取进程的调试信息,也无法访问调试工具。
我该如何从运行签名生产版本的设备开始,然后使包含在Android Studio中的更新版本能够运行而无需卸载,并且能够在升级过程中查看调试输出?或者,如何修改已签名的生产版本,使其可以更新新版本并允许调试?
答案 0 :(得分:0)
因为您从Debuggable=false
的APK开始,所以解决方法包括:使用与生产发布过程相同的过程来构建应用程序的更新,并获取包含所有过程的Logcat。尽你所能。
一种选择是将应用的特定版本从您的源代码控制系统中拉出,并使用Debuggable=true
进行构建,然后以生成的APK作为起点,而不是使用Play商店中的APK。
制作两个版本,而不是只制作一个APK发布版本并将其上传到Play商店。一个版本将照常签名并上传。并使用完全相同的源代码制作另一个具有Debuggable=true
的APK。用版本号重命名每个文件。然后,以后,如果您想尝试从任何版本升级到任何版本,都可以这样做,并且仍然具有调试功能。