標籤:android style c class blog code
在android開發中,在使用命令列操作資料庫sqlite時,有時候會遇到sqlite3 not found的問題。這是因為你的手機沒有安裝sqlite3程式。解決辦法如下(兩種辦法結合起來解釋的更清楚!!!):
方法1:
sqlite3 not found的解決辦法(轉)
在Android開發方面,我是小白,起步沒多久。最近用到了sqlite本機快取資料,我希望像mysql一樣通過命令列查看建立的表以及表中的資料,於是用adb shell進入,敲入sqlite3,提示 sqlite3: not found。 網上搜尋了一下,網上的文章倒是不少,但如果直接複製人家的命令的話,發現仍然報錯,於是自己研究了下,總結如下,希望遇到同樣問題的朋友少走彎路:
1. 需要擷取手機的root許可權,方法很多了,我用的是360一鍵Root,有時也用百度一鍵Root
2. 從其他手機拷貝sqlite3檔案到PC,我是從模擬器copy出來的,為方便大家,附件就有,可以直接下載哈
3. 進入手機建立個臨時目錄
開始---cmd---adb shell---mkdir /mnt/sdcard/tmp,然後退出到cmd下
adb push D:/temp/sqlite3 /mnt/sdcard/tmp
4. copy檔案到/system/xbin
adb shell
su (這一步報permission denied的話是Root沒有成功,重新Root吧)
cp /mnt/sdcard/tmp/sqlite3 /system/xbin/sqlite3 (注意:這一步可能報兩種錯,第一種: cp not found,將命令換成cat /mnt/sdcard/tmp/sqlite3 > /system/xbin/sqlite3, 第二種:read-only file system,說明/system是唯讀,此時需要重新mount,改為可讀寫,然後繼續拷貝)
重新mount方法如下:
mount (從螢幕列出來的mount資料中找到/system的mount資訊,空格隔開的,第一列表示裝置名稱,第二列表示目錄,第三列表示檔案系統,第四列表示許可權。網上其他教程在這一步都直接列出了他們的命令,由於裝置名稱和檔案系統不一樣,所以執行不成功)
mount命令為:mount -o remount,rw -t 第三列資訊 第一列資訊 /system
如,注意看圈紅的地方:
mount成功後,再執行上面說的檔案copy的步驟,然後就能copy到 /system/xbin目錄下了
需要改下檔案的許可權,命令: chmod 4755 /system/xbin/sqlite3
最後運行下,sqlite3,發現成功了吧
方法2:
原因: sqlite3 為一個可執行程式,在system/xbin/下面,某些rom 不帶這個東西,導致沒有該工具。
解決方案:拷貝一個sqlite3進去。
步驟:
1) 讓/system檔案夾可讀寫
$ adb shell # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
2)開啟另外一個有sqlite3(/system/xbin/sqlite3)的模擬器或者是手機,把sqlite3匯出,並把它匯入到沒有sqlite3機器的/system/xbin下面。(可以使用DDMS完成這一操作)
$ adb push sqlite3 /system/xbin
3)修改sqlite3的許可權
# chmod 4755 /system/xbin/sqlite3
4)歡迎/system為唯讀檔案
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
5)現在你就可以使用sqlite3命令了
# sqlite3 /data/data/com.mobisync.android/databases/sync.db SQLite version 3.6.22Enter ".help" for instructions sqlite> .tables android_metadata file sync_status