標籤:
(一)第一步:root
使用百度一鍵root 等app,一鍵就可root,步驟略
(二)
1、執行
adb shellsu 獲得root許可權ls 查看目前的目錄
cd data/datals
選com.tencent.cm為例
cd com.tencent.cm/databasels
看到裡邊有一些 .db資料庫檔案
這時候,執行
sqlite3 tes_db.db
如果你的裝置中有sqlite3,這句應該會執行成功,接下來就可以 執行select 語句了,
----------------------------------------------------------------下邊就不用看了--------------------------------------------------------------
本文主要說明 一些小米和其他手機中沒有sqlite3的情況,和我一樣,執行會發現
sqlite3:not found
附 Android的每個版本對應的sqlite3 版本:
SQLite 3.8.4.3:21-5.0-Lollipop20-Android L Developer Preview
SQLite 3.7.11:19-4.4-KitKat18-4.3-Jelly Bean17-4.2-Jelly Bean16-4.1-Jelly Bean
SQLite 3.7.4:15-4.0.3-Ice Cream Sandwich14-4.0-Ice Cream Sandwich13-3.2-Honeycomb12-3.1-Honeycomb11-3.0-Honeycomb
SQLite 3.6.22:10-2.3.3-Gingerbread9-2.3.1-Gingerbread8-2.2-Froyo
SQLite 3.5.9:7-2.1-Eclair4-1.6-Donut3-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.32、在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/sdcard8、然後在命令列敲入 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
【原】Android 裝置,如何root,執行adb shell,查看裝置中的資料庫資訊等