【问题标题】:How can I access my Sqlite database after changing package name in Android?在 Android 中更改包名称后如何访问我的 Sqlite 数据库?
【发布时间】:2011-05-18 15:36:20
【问题描述】:

为了发布我的 Android 应用程序,我必须从我在开发期间使用的 com.example.project 更改包名称。 虽然,在我更改包名称后,我无法再访问 sqlite 数据库。我尝试通过 .adb 访问它,它适用于旧包名,但不适用于新包名。

我如何访问数据库以便将其放在新包下?我有一份未更改的旧项目文件的副本。

非常感谢! AK

【问题讨论】:

  • 您是从代码创建数据库吗?或者你已经有了 sqlite 文件?
  • 我在项目中有过,我唯一做的就是改了包名。当我从命令提示符访问它时,它位于其旧包名下。有没有办法移动它,或者复制它?

标签: android sqlite package rename


【解决方案1】:

这是在模拟器还是手机上?如果您正在手机上开发并建立了您想要的数据库:

  • 如果手机已root - 使用文件资源管理器(或DDMS 视图文件资源管理器)并从/data/data/com.example.prackage/databases 获取并将其放入新的包文件夹中。

  • 1234563然后在新包中创建反向代码,将文件从 SDCard 复制到新包 DB 文件夹。
  • 如果在模拟器上 - 使用 DDMS 视图文件资源管理器从数据库文件夹中获取文件。

此链接可能有助于备份和恢复:

Backup / Restore Sqlite to SDCard

更新

一种方法,使用 DDMS 文件资源管理器

  1. 导航到 data/data/com.old.package/databases
  2. 选择数据库文件
  3. 点击带有箭头的软盘(文件资源管理器的右上角)
  4. 将文件保存在您知道的位置。
  5. 导航到 data/data/com.new.package/databases
  6. 点击带有箭头的手机。
  7. 找到您刚刚保存的文件。

这应该将数据库复制到新包中,以便您可以像以前一样使用它。

以上是从命令提示符使用 adb 将数据库文件从旧包复制到新包的 GUI,类似于:

adb pull /data/data/com.example.package/databases C:\tempdb

那应该复制旧数据库,然后:

adb push C:\tempdb /data/data/com.example.package/databases

【讨论】:

  • 它在模拟器上。我在 Eclipse 中使用了文件资源管理器,可以在路径 /data/data/com.example.package/databases 下看到数据库文件。我在您发布的链接中读到“您可以在 SQLiteDatabase 对象上使用 getPath() 来找出它所在的位置,AFAIK(尚未尝试过)”。那么我应该在旧项目文件中使用 getPath 吗?我很困惑,文件查看器没有简单的“复制”功能吗?
  • 因为我还有原来的项目,也许只是在那里更改包名以便能够发布它更容易?我试图在项目的副本中重命名包,但它不起作用。有人知道更改包名称时要考虑什么吗?
  • 当你在文件资源管理器中看到DB文件时,有一张带有红色小箭头的手机图片和一张带有箭头的软盘——将文件保存到计算机other 将允许您将文件推送到模拟器上。如果将 DB 文件从旧包路径复制到 HDD,则将 DB 文件从 HDD 复制到新包。
猜你喜欢
  • 2023-03-26
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多