Android 設備,如何root,執行adb shell,查看設備中的數據庫信息等


 

有個測試機里沒有自帶sqlite,記錄了一下安裝過程。以防遺忘

 

 

(一)第一步:root

使用百度一鍵root 等app,一鍵就可root,步驟略

 

(二) 

1、執行

adb shell
su 獲得root權限
ls 查看當前目錄

 

cd data/data
ls

 

選com.tencent.cm為例

cd com.tencent.cm/database
ls

 

 

看到里邊有一些 .db數據庫文件

這時候,執行

sqlite3 tes_db.db

 

如果你的設備中有sqlite3,這句應該會執行成功,接下來就可以 執行select 語句了,

----------------------------------------------------------------下邊就不用看了--------------------------------------------------------------

 

 

 

本文主要說明 一些小米和其他手機中沒有sqlite3的情況,和我一樣,執行會發現  

sqlite3:not found

 

附  Android的每個版本對應的sqlite3 版本:

SQLite 3.8.4.3:
21-5.0-Lollipop
20-Android L Developer Preview
SQLite
3.7.11: 19-4.4-KitKat 18-4.3-Jelly Bean 17-4.2-Jelly Bean 16-4.1-Jelly Bean
SQLite
3.7.4: 15-4.0.3-Ice Cream Sandwich 14-4.0-Ice Cream Sandwich 13-3.2-Honeycomb 12-3.1-Honeycomb 11-3.0-Honeycomb
SQLite
3.6.22: 10-2.3.3-Gingerbread 9-2.3.1-Gingerbread 8-2.2-Froyo
SQLite
3.5.9: 7-2.1-Eclair 4-1.6-Donut 3-1.5-Cupcake
Note: Android SDK level links show where the android.database.sqlite package has changed. Where there is no link (e.g. SDK level
17), indicates no changes to that package.
Note: Here are some anomalies (list by no means exhaustive): SQLite
3.7.13 (instead of 3.7.11): LG Optimus L70 MS323 LGMS323|KOT49I.MS32310b (19-4.4-KitKat) LG Optimus G E975 LG-E975|JZO54K (16-4.1-Jelly Bean) LG G2 D802 LG-D802|JDQ39B (17-4.2-Jelly Bean)
SQLite
3.7.6.3 (instead of 3.6.22): LG Optimus Sol E730/myTouch E739/myTouch Q C800 (10-2.3.3-Gingerbread, GRJ22) LG Optimus Vu F100S/F100L (10-2.3.3-Gingerbread, RK39F) LG Optimus LTE TAG F120K/F120L (10-2.3.3-Gingerbread, GRK39F) LG Optimus LTE L-01D (10-2.3.3-Gingerbread, GRJ90) LG Optimus Net P690b (10-2.3.3-Gingerbread, GINGERBREAD) LG Prada KU5400 (10-2.3.3-Gingerbread, GWK74) LG Prada P940 (10-2.3.3-Gingerbread, GWK74) LG LU6200/SU640 (10-2.3.3-Gingerbread, GRJ90)s
SQLite
3.7.5 (instead of 3.7.4): Samsung Galaxy Note (15-GT-N7000|IML74K.ZSLPF) Samsung Galaxy SII (15-SC-02C|IML74K.OMMP4 and GT-I9100|IML74K.DXLP7) Samsung Galaxy S Duos (15-GT-S7562|IMM76I.S7562XXBMD6) Samsung Galaxy Tab 7.7 (15-GT-P6810|IMM76D.ZSLP8)
SQLite
3.7.0.1 (instead of 3.6.22): LG Esteem MS910 (10-2.3.3-Gingerbread, GSE-_v.05) AndroTab (8-2.2-Froyo, 1.0.7100.0385) GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)
SQLite
3.6.23.1 (instead of 3.5.9): Motorola Backflip MB300 (7-2.1-Eclair, ERD79) Garmin-Asus nüvifone A10/A50/Garminfone (7-2.1-Eclair, ERE27) Note: adb command to get SQLite version only works on emulators and on devices with sqlite3 available: http://stackoverflow.com/a/3645800/444761

 

比較簡單的獲取對應版本的Sqlite的方法:

1、查看你手機的Andorid的版本,比如我的是 4.3

2、在eclipse中打開對應版本(很重要,否則會提示cannot locate 'sqlite3_enable_load_extensions')的模擬器(創建 如果沒有)並且啟動

3、在DDMS窗口的File Explorer面板下展開system > xbin

看到了sqlite3 了么?ok。點擊右上角的軟盤圖標(pull a file from the device) 將其保存到其他位置

4、然后連接你的手機,打開控制台,輸入adb shell。(什么?提示adb命令無效?那去配置環境變量吧)

5、然后查看一下提示符 如果是 # 那就不用管了,如果是 $ ,那么說明你需要獲得root權限進行下面的操作

6、保持手機屏幕沒有鎖屏最好是常亮模式 在提示符下敲入 su 或者 su root,如果手機彈框提示是否允許獲得root權限請選擇 是。點擊后發現 $ 變成 # 了。OK 可以進行下面的操作了

7、將先前保存其他位置的sqlite3 在DDMS面板中通過右上角手機圖標(push a file onto the device) 將文件push到sdcard中,准確的是在/mnt/sdcard

8、然后在命令行敲入 cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3 復制文件(為什么不用mv?我也試過,不過報failed on '/sdcard/test.mp3' - Cross-device link 錯誤)

9、ok,檢查手機/system/xbin下多了一個sqlite3文件,不過還不能執行。

10、繼續敲入 chmod 4755 /system/xbin/sqlite3

好的 大功告成。你可以試試敲入sqlite3試試了。可以看到可以正常使用了。

 

 

-------------------------------------------------------------如果你成功了,不用看下邊-------------------------------------------------------------------------

首先,機器上沒有對應android 4.3的avd,所以參考http://www.cnblogs.com/localhost/archive/2012/04/09/2439558.html的方法

下載了sqlite3文件包,地址為http://files.cnblogs.com/localhost/sqlite3_not_found.rar(事實證明他這個包的版本,我不能用,他這個版本太老了)

下這個:http://pan.baidu.com/share/link?shareid=534077&uk=839950715 

 

報了異常,因為直接push進 /system/xbin目錄中了,沒權限

 

建一個臨時文件夾

 

push進這個臨時文件夾中

 

再將sqlite3從

  /mnt/sdcard/tmp

拷貝到

  /system/xbin 目錄中,不會報錯

cp /mnt/sdcard/tmp/sqlite3 /system/xbin/sqlite3 

注意:這一步可能報兩種錯,

第一種: cp not found,將命令換成cat /mnt/sdcard/tmp/sqlite3 > /system/xbin/sqlite3,

第二種:permission denied,說明/system是只讀的,此時需要重新mount,改為可讀寫,然后繼續拷貝

 

為什么除了sqlite3,還要push進去libncurse.so,因為缺乏依賴庫,報了以下異常

  

我的出現了第二種權限錯誤 ,執行mount操作

mount -o remount,rw /system

 

mount命令的解釋在 http://blog.csdn.net/progbelief/article/details/6032518  

重點解釋這條語句的作用

mount -o remount,rw -t yaffs2 /dev/block/mtdblock6 /system

  簡單來說就是將塊設備“/dev/block/mtdblock6” 掛載到/system目錄上,掛載格式為yaffs2,這里主要的問題是“/dev/block/mtdblock6”是個什么東東。
  mtdblock就是手機 的flash存儲設備,但是這個分塊號則依機型的不同而有所變化,比如:Droid 的/system是掛載在/dev/block/mtdblock4上的,歐版的milestone 在/dev/block/mtdblock7上,港版的在/dev/block/mtdblock6上,HTC 系列的機器 則好像是在/dev/block/mtdblock3上。而現在有的教程 上寫的命令不盡相同,也有這樣寫的

       mount -o remount,rw /dev/block/mtdblock3 /system

這多半上從HTC的論壇 上抄來的吧。
  但是有些人可能會說,我就是用這條命令成功了!(好吧,其實我也是的……汗,真是好險 ),甚至用任何分塊號mtdblock3、mtdblock4、mtdblock11等等都能正常運行!那么這種錯誤命令為什么能成功呢?其實我們的命令參數“-o remount”其實自動 忽略了/dev/block/mtdblock? 這一段參數,只是簡單的把/system重新掛載了一下而已。這條命令的偷懶不知道救回了多少人的愛機啊!

  好吧,說到這里大家應該明白了吧,雖然這條命令即使錯誤也可以成功,但你畢竟試圖將一個錯誤的塊掛載到/system上,悄有不慎肯定變磚。
  所以強烈建議大家在執行此命令時使用

     cat /proc/mtd

來檢查下自己的JJ具體參數,再套用命令,
或者強烈建議新手使用

      mount -o remount,rw /system

這樣的簡化命令來代替上述命令使用!

 

 

 有了上邊的解釋, 獲取你的設備mount信息,執行

mount

 

從屏幕列出來的mount數據中找到/system的mount信息,空格隔開的,第一列表示設備名,第二列表示目錄,第三列表示文件系統,第四列表示權限。網上其他教程在這一步都直接列出了他們的命令,由於設備名和文件系統不一樣,所以執行不成功

mount命令為:mount  -o  remount,rw  -t  第三列信息  第一列信息  /system

 如下圖,注意看圈紅的地方:


mount成功后,再執行上面說的文件copy的步驟,然后就能copy到 /system/xbin目錄下了

需要改下文件的權限,命令:

chmod 4755 /system/xbin/sqlite3

最后運行下,sqlite3,發現成功了吧

 

---------------------------------------------------------------你又成功了,我又沒有----------------------------------------------------------

執行了mount,結果如下(沒有system啊,但是上邊的 mount -o remount,rw /system 執行成功了,所以也無所謂了 ):

 

 

這時候執行sqlite3命令,出現了Illegal instruction錯誤

 

這大概說明,我的sqlite3版本不對,下了個比較新的: http://pan.baidu.com/share/link?shareid=534077&uk=839950715

拷進去,改權限,執行

成功

 

在sqlite的...> 狀態退不出來的時候,一般是進入SQL數據語言模式了,此時輸入個;(分號) 就可以退回到sqlite>狀態

 

.quit 退出 sqlite
.help 查看幫助
.schema 抓出數據庫中所有的表
.tables 抓出數據庫中所有的表和索引(
都可以使用LIKE來匹配)

 

 

附:

sqlite的官網

http://www.sqlite.org/lang.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM