【问题标题】:How to access the database when developing on Android phone? [duplicate]Android手机开发时如何访问数据库? [复制]
【发布时间】:2010-05-11 14:39:14
【问题描述】:

我在手机上进行开发时无法访问数据库。每当我执行

cd /data/data/com.mycompck/databases

然后运行ls 我得到:"opendir failed, Permission denied"

或者每当我输入sqlite3 我得到:"sqlite3: permission denied"

我做错了什么?

是否有一些应用程序可以帮助我获得内容解析器值和/或 SQLite 数据库的人性化视图?

【问题讨论】:

    标签: android sqlite adb


    【解决方案1】:

    从以下线程检查我的答案:Why do I get access denied to data folder when using adb?

    从 API 级别 8 (Android 2.2) 开始,如果您将应用程序构建为可调试的,您可以使用 shell run-as 命令将命令或可执行文件作为 特定用户/应用程序或只是切换到您的UID 应用程序,以便您可以访问其data 目录。

    因此,基本上您需要进行调试构建(每当您从 Android Studio 启动应用程序时都会生成 automatically,除非您请求发布构建)并运行以下命令:

    run-as com.mycompck
    cd /data/data/com.mycompck/databases
    ls
    sqlite3 ./yourdatabase.db
    

    但请注意,sqlite3 二进制文件在许多手机上默认不存在。因此,您可能需要在某个地方下载它(例如,从 http://shortfuse.org/ 的 SuperOneClick 存档),保存在 SD 卡上并使其可执行(虽然这有点棘手),例如:

    run-as com.mycompck
    cd /data/data/com.mycompck/
    cat /sdcard/sqlite3 >./sqlite3
    chmod 744 ./sqlite3
    ./sqlite3 ./databases/yourdatabase.db
    

    【讨论】:

    • 因此您将 sqlite3 复制到应用程序的目录,然后将权限更改为可执行文件。我猜这将意味着 sqlite3 的副本将存在于该目录中,直到应用程序从手机中删除。所以我的问题是:重新安装应用程序是否会删除可执行文件(例如,在 Eclipse 中单击 RUN)?
    • @styfle 当您在 Eclipse 中单击“运行”时,您的应用程序数据库和共享首选项不会被删除,是吗? sqlite3 可执行文件也是如此。只有adb uninstall(没有-k选项)会删除它(或通过设备应用程序管理器手动卸载应用程序)。
    • 我是否需要在 Idea13CE(社区版)中执行任何操作以确保它正在构建调试版本?
    【解决方案2】:

    要回答您问题的第一部分,请查看this answer。基本上,你的手机需要有root权限,并且你需要在root模式下运行adb(使用“adb root”)。

    至于第二部分,我使用SQLite Database Browser 来查看我的 SQLite 数据库(尽管这只是当数据库在我的计算机上时;不知道任何设备上的浏览器)。我不知道有什么方法可以让内容解析器以人性化的方式呈现。

    【讨论】:

    • 为什么我需要 root 访问权限,我想访问我的应用程序数据,因为我是开发人员,我很想访问它。
    • adbd 无法在生产版本中以 root 身份运行
    • 向您的应用添加导出或备份功能,将数据库复制到 SD 卡。
    • @Pentium10:因为它是这样工作的,所以对数据目录的访问被锁定以供非 root 访问。我不制定规则。 :P CommonsWare 是正确的,这是一个不错的解决方法。
    • @Pentium10 自 2010 年以来情况发生了一些变化 :) 请查看下面的 my answer
    【解决方案3】:

    您必须是 root 才能访问任何数据库文件。因此,您可以在手机上获取 root 权限(在 Google 上查找信息)或仅从模拟器调试数据库(始终为您提供 root 访问权限)。

    再见!

    【讨论】:

    • 不幸的是,我无法从模拟器中调试数据库,因为模拟器没有我正在使用的应用程序(议程、蓝牙、Wifi)。
    • 但是你可以将这些应用安装到模拟器上:adb install appname.apk 无论如何,我强烈建议你root你的手机:) google.com.co/search?q=root+android
    【解决方案4】:

    查看和管理你的安卓应用数据库的最好方法是使用这个库https://github.com/sanathp/DatabaseManager_For_Android

    它是一个单一的 java 活动文件,只需将 java 文件添加到您的源文件夹中,您就可以查看应用程序数据库中的表,更新、删除、插入行到您的表中。一切都来自您的应用程序。

    开发完成后,从 src 文件夹中删除 java 文件。

    对我帮助很大。希望对你也有帮助。

    您可以在此处查看 1 分钟演示:http://youtu.be/P5vpaGoBlBY

    【讨论】:

      【解决方案5】:

      我已经对此进行了一些阅读,并且访问您的移动数据库文件似乎很麻烦。

      看看这个。有了这个,你可以在你的应用程序中查看你的数据库。 Database Manager

      对我来说,这很好用。当然,这也取决于你打算做什么。

      希望对你有帮助。

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • 好点。但是,它仍然是管理您的移动数据库的好方法
      猜你喜欢
      • 2013-02-25
      • 2022-01-25
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2011-11-22
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多