Android 调试真机 SQLite 数据库

  最近做东西,先是在模拟器上进行数据库的测试,读写操作,发现没问题了之后开始进行真机的测试。但是,为了在测试的时候能查看数据库的变化,确保程序的值都正确的写入了数据库。就通过adb shell连接手机进行查看。但是发现和模拟器不同,有各种各样的问题,不过总结下来一句话就是---权限不够。

  现将问题总结如下,并给出我的一些解决办法,都是一些笨方法。比较粗暴。

  问题一: sh: sqlite3 command not found.

  adb shell进入程序目录后通过 sqlite3 "databases name",后提示这个,是因为/system/xbin/下没有sqlite3 文件的命令执行文件。解决的方法就是拷贝一个进去。网上关于这方面的东西也很多。但是也有很多人说不好使。原因在于sqlite3也是有很多版本的,个人推荐的方法是先弄清楚自己的真机的Android版本。在AVD中新建一个版本一样的模拟器,然后将模拟器中/system/xbin/sqlite3 拉出来,放进真机中。

  问题二: permission denied

  接着上面的步骤我们发现,文件放进去了,但是文件的属性是读写,没有执行权限。所以解决办法就是给它执行的的权限。简单粗暴一点的方法就是 chmod 777.简单又粗暴。其实在上面或者这里我们都会发现一个问题,当我们以adb shell 去操作真机时,会发现,由于手机的系统都是read only,所以上面和我们接下来的大部分操作都会被拒绝或者提醒权限不够,这时我们需要暂时的把文件系统改为可写的(我对linux并不是很熟悉,这是在网上搜集的解决方法)。

  mount -o remount,rw -t yaffs2  /system/xbin

  问题三: CANNOT LINK EXECUTABLE

  修改完sqlite3文件的可执行权限后,还是执行失败,是因为少了libncurses.so库文件,上网上down下来然后拉进/system/lib下。

  问题四: Error: unable to open database "****": unable to open database file

  做完上面的东西,已经折腾了半天,实在是很无语。本以为快要解决的时候。突然又出现了这个问题。这个问题让我有点摸不着头脑,因为百度了一下发现,这依然是权限问题。但是我不懂的是作为一个数据库文件,有了读写的权限为什么还是不能被sqlite3加载。在我尝试给数据库赋上执行权限时,就能够打开了个人感觉一个文件不需要执行,只需要被另一个程序打开时是不需要执行权限的。还望大家看到后告知我一声。虽然解决了但是依然莫名其妙。

  在解决了上述的问题后就能够通过adb shell 调试真机的数据库了。网上也有一些这方面的帖子,此篇文章只是作为补充说明和个人碰到问题集合。

时间: 2024-10-08 21:12:53

Android 调试真机 SQLite 数据库的相关文章

mac 系统开发android,真机调试解决方式(无数的坑之后吐血总结)

近期学习android开发,安装了ADT开发环境之后,启动模拟器,慢的要死啊,全然不如苹果的好用,没法,自己买个android手机,准备联机调试程序.没想到在这个过程中,遇到了好多的坑,作为一个新人,每一步都过不去,花了将近2个小时,在万能的百度里查了n多次,最终攻克了.在此,做个记录,希望大家不要走我走过的弯路. 1.确保你的android设备真正链接到电脑上了,我在这里遇到过坑,弄了好久,才发现能充电的线,确无法传递数据过去.所以不要以为随便拿一根线,能充电,就能够传递数据了,我就是这么傻傻

Android学习笔记(42):SQLite数据库

(1)SQLite数据库 先简单介绍一下SQLite数据库: 2000年由D.Richard Hipp发布. 是一款轻型.开源嵌入式关系数据库,占用资源非常低.目前用于很多嵌入式产品中,在嵌入式设备中,SQLite可能只需要几百K的内存就够了. 与Mysql.PostgreSQL这两款开源世界著名的数据库管理系统相比,它的处理速度更快. 在Android平台下,除了可以在Android程序中操作SQLite数据库之外,还可以在命令行模式下进行各种数据库的操作,包括表的各种操作,对数据的增加.删除

Android 查看和管理sqlite数据库

在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看.android项目中的sqlite数据库位于/data/data/项目包/databases中. 使用DDMS导出sqlite数据库. 1.首先打开android项目的调试模式,然后找到显示DDMS: 选择DDMS 2.切换到DDMS,显示File Explorer窗口,找到/data/data/ 然后找到程序包的文件夹,打开databases,就能看到sqlite数据库文件了.选择将

Android Studio -- 真机测试

Android Studio -- 真机测试 AS 模拟器 在电脑上配置安卓环境,到最后发现电脑不支持模拟器 AVD 的生成,网上说是 amdCPU 不支持之类,发现要解决问题需要弄许多东西,于是干脆换了方向,直接用实体机算了,刚好有一部不用的手机 新建一个基本项目 工具栏找到 app 选项选择 Edit Configurations 进入会话框,将 Target 改成 USB Device 手机连接上电脑,保证 USB 调试打开 运行项目,有些手机可能得允许权限安装 效果图 测试的时候发现有时

Android的真机开发设置(转)

Android的AVD无比的慢,无语啊,程序编的再好,都无法体验到流畅的感觉,索性,真机测试其............. 方法如下: (1)开机一部Android手机(当让Pad也行) (2)在手机中:设置-->应用程序-->开发-->USB调试 (3)插上USB,装USB 驱动(要自己下载的...) (4)OK 后,在CMD中测试一下,连接是否正常,CMD中命令如下:            adb devices   回车           若显示你的设备名,则证明连接正常. (4)

android studio真机测试页面跳转时自动弹出软件,报错null exception解决方案

写的ASdemo登录页面后将实现页面跳转,可以看到跳转页面后自动弹出软件,查看AS的logcat说明错误原因时java的空指针问题! 解决方案: 查看新的页面(activity)代码是否存在空指针!发现我的一个String 类型的变量存在直接判等操作eg: if ( !name[0].equals("F") ) { ..... },这句话有问题,由于我的name字符串里面的值来自于其他数据库操作获取数据,全局变量只声明未初始化,在参与计算时先判断一下是否为null! 所以先判断if (

Android——使用SQLiteDatabase操作SQLite数据库

除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型. SQLite最大的特点是

Xamarin Android项目真机测试闪退

Xamarin Android项目真机测试闪退 项目在模拟器中运行正常,但在真机上闪退.这是由于项目设置使用共享的Mono运行时.Visual Studio中,在项目属性-Android Options总,不要勾选Use Shared Runtime.Xamarin Studio中,在工程选项-构建-Android Build选项中,不要勾选Use shared Mono runtime.

Android开发之通过Android的API对sqlite数据库的操作以及数据库事务的练习

一.通过Android的API对sqlite数据库的操作 通过已有的ContentValues类,实例一个对象value来调用其中内部的方法来操作sqlite数据库 代码: package com.example.databasedemo; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sql