如何通过编程更新Android应用程序

3

我开发了一款安卓应用程序。第一次安装时,应用程序可以正常运行。但是当我修改源代码后,我们无法在不将其从手机中删除的情况下安装它。我希望在第二次安装时可以更新应用程序。是否有任何解决方案?

注意:我的应用程序包含数据库,我不想删除,因此希望将新应用程序更新到现有应用程序上。


1
你尝试过只从选项中删除应用程序缓存和数据吗?你持久化哪种数据?你做了哪些更改? - Ostkontentitan
2
你是否试图在发布版本上安装调试版本?如果是这样,那是不行的。你只能用另一个发布版本来更新发布版本或者用另一个调试版本来更新调试版本。 - Squonk
当您第二次安装它时,您会遇到什么错误? - Praful Bhatnagar
感谢您的回复。基本上,我的应用程序包含一个数据库,我不希望在第二次安装时将其删除。请大家帮帮我。注意:我想通过编程实现这一点。 - Deepak
6个回答

1

在Android清单文件中将您的VersionCode更改为后续版本

android:versionCode

android:versionCode - 一个整数值,表示应用程序代码的版本相对于其他版本。该值是一个整数,以便其他应用程序可以通过编程方式评估它,例如检查升级或降级关系。您可以将该值设置为任何整数,但是您应确保每个连续发布的应用程序都使用更大的值。系统不强制执行此行为,但是随着连续发布的增加值是规范的。通常,您会将应用程序的第一个版本发布时将versionCode设置为1,然后随着每个发布而单调地增加该值,无论发布是否构成主要或次要发布。这意味着android:versionCode值不一定与用户可见的应用程序发布版本具有强烈的相似之处(请参见下面的android:versionName)。应用程序和发布服务不应向用户显示此版本值。

请参阅http://developer.android.com/tools/publishing/versioning.html


1
除非使用Google Play更新apk,否则这不是必需的。 - Squonk

1

如果您是通过连接 USB 安装应用程序的话,那么新的应用程序将会安装并且您可以卸载第一个应用程序并安装更新后的应用程序,这样新的应用程序就能够完美运行。


这样做会清除我的数据,而我不想这样。 - Deepak

0
我曾经遇到过类似的问题,尝试安装我的应用程序时也出现了问题。为了解决这个问题,我去了应用程序管理屏幕,并告诉程序停止运行,然后我的更新成功安装了。我认为这与Android处理程序生命周期的方式有关。当您退出程序时,它并不总是停止运行。如果某些东西出现错误,那么Android在更新程序之前可能无法关闭程序。

0

好的,如果你已经编译了第二个版本,你想要替换旧版本... 我不知道你用什么来为安卓编程,但如果你使用Eclipse SDK,这是自动完成的。


0
问题可能是因为您导出应用程序时使用的密钥库。如果您使用默认的Android密钥库导出应用程序,然后在另一台PC上更改应用程序并再次使用该PC上的默认密钥库导出它,并在同一设备上安装它,则Android将看到您有两个相同的应用程序但具有不同的密钥库。这就是为什么您需要先卸载该应用程序,然后再重新安装。

如果您在两台PC上都使用默认的Android密钥库,也没有关系。它们仍然不是相同的密钥库。

一个解决方案是创建一个名为ProjectKeystore的密钥库,然后在项目中创建一个名为keystore的文件夹。将密钥库放入该文件夹中,并可能放置一个带有密钥库用户名和密码的文件。通过这样做,您可以在任何PC上导出应用程序时使用相同的密钥库。


请问您如何创建密钥库? - Deepak
右键单击您的项目-> Android工具-> 导出已签名的应用程序。 在第二个窗口中,您会找到一个单选按钮。 单击创建新密钥库。 输入所有数据,就可以了。 现在,您可以将其放入项目中的文件夹中。 现在,当您导出应用程序时,您使用创建的密钥。 - Tooroop

0

但如果您更改版本代码,则会收到此错误提示。因此,请尝试查找密钥库。 由于不同的应用程序签名,重新安装失败。 ExpenseTracker] 您必须执行完整卸载该应用程序。

警告:这将删除应用程序数据! ExpenseTracker] 请在 shell 中执行 'adb uninstall com.spundhan.expensetracker'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接