Android真機安裝sqlite3


在adb模式下用sqlite3命令查看數據庫sqlite3 dbName提示:

/system/bin/sh: sqlite3: not found

原來android系統沒有自帶sqlite3命令,所以需要我們自己安裝(其實只是將sqlite3文件導入相應目錄)

網上查了下,需要先將sqlite3文件導入到手機/system/xbin/目錄下,然后將libncurses.so庫文件導入/system/lib/目錄

貌似很簡單,但卻浪費了我兩個小時,不過也在這過程中學到了不少新的知識。現在將經歷的過程簡單記載

 

步驟:

1、下載sqlite3文件和libncurses.so庫文件(下載地址:http://download.csdn.net/detail/chenguiyi/8680795)

2、將sqlite3和libncurses.so導入到android系統目錄(重點)

我用的小米手機,雖然有root權限,但是感覺並沒有完全擁有權限。

開始想到的最簡單辦法就是使用 adb push  pc上sqlite文件路徑 /system/xbin ,出現下面提示:

failed to copy 'C:\Users\User\Desktop\download\sqlite\sqlite3' to 
'/system/xbin/sqlite3': Read-only file system

后來google有大牛說要遇到這種情況,要執行adb remount命令,又出現下面提示:

remount failed: Operation not permitted

用adb push這條路是走不通了,只好找其他方法。結果看到有大牛說可以先利用adb push命令將sqlite3文件導入手機sdcard中,然后再用linux下命令cp復制系統文件夾,命令如下:

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

當時感覺像發現了新大陸,心想終於可以解決了,結果提示:

/system/bin/sh: cp: not found

我就納悶了網上好多人說可以用cp命令,怎么我的手機下怎么沒有呢,看了下/system/xbin/,目錄下確實沒有cp文件。原來android命令行沒有cp命令,但是有mv命令,於是執行

mv /mnt/sdcard/sqlite3  /system/xbin/sqlite3
提示:failed on '/mnt/sdcard/sqlite3' - Cross-device link

也就是說mv命令不允許將存儲卡中的文件復制到/system/或/data/分區中,因為兩者被認為是在不同的設備上。只能再google……

后 來發現了cat命令,查一下cat的用法:cat [選項]… [文件]… ,其作用是將[文件]或標准輸入組合輸出到標准輸出。網上大牛:“平常工作時偶爾會用到cat命令去顯示文本文件的內容,然后又想到了重定向 符’>’,所以兩者一結合,就自然則然地想到是否可以通過將cat的文件輸出到指定位置來代替cp的功能?通過嘗試發現確實可以。”

於是嘗試:

cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3
提示:/system/bin/sh: cannot create /system/xbin/sqlite3: Read-only file system

看到這個我覺感覺有希望了,cat確實有copy的功能。之前看到過這提示好解決,先將/system處於掛載狀態,允許讀寫,命令如下:

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

在執行cat命令就OK了,然后將libncurses.so庫文件按上面方法導入到/system/lib/,完整命令如下:

導入到sdcard:
adb push C:\Users\User\Desktop\download\libncurses.so  /mnt/sdcard/libncurses.so
將/system處於掛載狀態,使可讀寫:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
復制到系統文件夾:
cat /mnt/sdcard/libncurses.so > /system/lib/libncurses.so

3、給sqlite賦予權限

將sqlite3文件和libncurses.so庫文件導入到相應目錄后,adb模式下執行sqlite3命令提示:

/system/bin/sh: sqlite3: cannot execute - Permission denied

沒有權限,需要添加,命令如下:

chmod 4755 sqlite3

驗證sqlite3是否有權限:

命令:ll sqlite3 
提示:-rwxr-xr-x root root 36860 2012-08-15 21:45 sqlite3

再執行sqlite3命令,提示如下:

shell@android:/ # sqlite3
sqlite3 SQLite version 3.7.4 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>

OK,大功告成。感謝網上各位大牛的文章指導。

本文出處:http://whutec.sinaapp.com/2012/12/android-install-sqlite3/


免責聲明!

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



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