Raf*_*nka 6 database eclipse android adb genymotion
我的ubuntu安装genymotion有问题.主要是我无法调试我的数据库,因为通过eclipse中的DBMS和shell中的adb我无法查看/ data /文件夹的内容.没有显示文件.
我通过cd登录adb到/ sdk/platform-tools并输入./adb shell su.我看到标签不起作用,所以我盲目地输入路径.无论如何我无法拉数据库,也许我做错了命令.
通过DBMS我尝试连接但数据文件夹不显示内容.
在模拟器上一切顺利,但模拟器很慢,我宁愿使用genymotion.
有什么建议如何处理这个问题?
eya*_*zmy 11
我没有你要说的问题,Genymotion上的默认shell用户是root,所以不应该发生.尽管如此,您可以使用run-as命令直接访问您的数据.
简而言之.您应用的数据文件夹受应用用户权限的保护.默认shell用户无权访问应用程序的文件夹.由于该run-as命令,您可以更改shell正在使用的用户.
adb shellrun-as your.package.name此命令将shell用户更改为您的应用程序的用户.因此,您有权阅读和撰写应用程序的数据.您还将被重定向到您应用的数据文件夹:/data/data/you.package.name
完成后,您可以轻松浏览文件.
注意:您的应用必须构建为调试才能使用此命令.它应该显示在DDMS上的设备进程列表中.
然后在本地计算机上运行模拟器
localuser:~localhost $ adb shell
shell @ android:/ $ su
shell @ android:/ #cp/data/data/your.package.name/databases/your_database.db/mnt/shell/emulated/0/Download/your_database. db
shell @ android:/#exit
shell @ android:/ $ exit
localuser:~localhost $ adb pull/mnt/shell/emulated/0/Download/your_database.db ~/your_database.db
它的作用是:
1.连接到模拟器
2.请求超级用户权限
3.将只有超级用户可用的文件复制到公共目录(在这种情况下是下载)
4.将文件从公用文件夹(下载)拖到您的本地机器主目录; 你也可以从eclipse gui执行这一步.
我设法解决了这个问题,所以我发布了我的解决方案,以防有人发现它有帮助。
以前我一直在创建没有谷歌API的虚拟机,每次我想要root手机时超级用户应用程序都会崩溃。
所以我创建了 google play 提供的虚拟机并下载了 SQL 调试器应用程序。我还在我的测试套件中使用此代码,因此我在运行的每个测试结束时将数据库获取到 SD 卡。这样我就不需要超级用户权限。
public static void copyDbToSd(Context context) {
File dbFile = context.getDatabasePath((String) DatabaseHandler.DATABASE_NAME);
InputStream myInput;
try {
myInput = new FileInputStream(dbFile);
OutputStream myOutput = new FileOutputStream(
Environment.getExternalStorageDirectory()
+ java.io.File.separator
+ "database.db");
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
} catch (FileNotFoundException e) {
Log.e(TAG, "Exception: ", e);
} catch (IOException e) {
Log.e(TAG, "Exception: ", e);
}
}
Run Code Online (Sandbox Code Playgroud)
其中 DatabaseHandler.DATABASE_NAME 是我在创建数据库时设置的数据库名称。
| 归档时间: |
|
| 查看次数: |
6562 次 |
| 最近记录: |