解决adb shell报错问题和no such file or directory问题,select * from book无数据问题

跟着郭霖大神的《第一行代码Android》学到第六章数据存储全方案——详解持久化技术的6.4SQLite数据库存储时,将ADB的路径存在path中,在cmd中输入adb shell,没有正常启动adb而是报了如下的错误:

adb server is out of date.  killing...  
ADB server didn't ACK  
* failed to start daemon *

error:


遂进行搜索得:

https://blog.csdn.net/heb_feng/article/details/12612133

https://blog.csdn.net/jack_pengpeng/article/details/48895197

参考这两个前辈的解决方案后,以为是adb端口5037被占用的问题,但打开了任务管理器之后,发现三个adb.exe都来自C:\Users\whitedragon\AppData\Local\Android\sdk\platform-tools文件夹,是由Genymotion启动的,而不是网上说的腾讯/豌豆荚之类的程序。 杀掉进程以后,adb.exe仍然无限自启,解决不了问题。

使用cd 的方法进入C:\Users\whitedragon\AppData\Local\Android\sdk\platform-tools,adb.shell成功

尝试使用cd方法打开目录:"cd /data/data/com.example.databasetest/databases",提示no such file or directory


搜索无果,一步步排查

参考:https://blog.csdn.net/guolin_blog/article/details/38461239

cd /data/data可以打开

cd /data/data/com.example.databasetest无法打开

输入ls查看data/data下的文件列表:



发现几个与example相关的app都命名为com.example.whitedragon.XXX(注:whitedragon为我的windows账户名)
于是打开到 /data/data/com.example. whitedragon.databasetest/databases
输入ls查看databases下的表名
再根据书上的sqlite3,.table,.schema等方法即可完成数据表的查看。

看起来,通过迂回了一大圈,问题解决了。

但是既然adb能以这种方式正常运行,那一定是配置环境变量出了问题。
为了避免每次查看都需要从印象笔记把路径粘贴上去的麻烦,我继续寻找答案。

查了下环境变量和Path的定义,突发奇想: 是不是Path对输入框中地址的填写顺序有要求,如果将adb路径添加到句末,就会造成先前配置java环境中的adb先行启动?

于是,我把adb路径改到了最左边,C:;之后,配置java的句子之前,再启动cmd,直接输入adb shell,正常启动,问题解决了。。。


我对环境变量的理解可能还有问题,但问题解决了就不想再去费心思了,欢迎指正!




sqlite> select * from book

      ...>

补充一句,如果在之后用select * from book查询数据表过程中出现了问题,即如上图所示的代码,请按此方式解决:

1.确定表名是“book”还是“Book”

2.在句子末尾加分号。。。

成功运行 结果如下:


参考链接:https://www.zhihu.com/question/46737546?from=profile_question_card