11 Ocak 2010 Pazartesi

Android’in Veri Tabanlarında Gezinti

adb, Android, database, shell, sqlite3
, Android Veri Tabanlarında Gezinti, android veri tabanı, android veri tabanı nasıl açılır, android veri tabanına nasıl ulaşılır,
Önceki Yazılarda tanıtmış oldugumuz ifixit.com isimli sitede android sistemli nexus'u parçalarına ayırmışlardı şimdiki yazımızda ise donanımsal olarak değilde yazılımsal olarak kaynagınaineceğiz.Android Veri Tabanı bize hertürlü bilgiyi sağlayacaktır.Bazen geliştirdiğimiz uygulamalarda cihaz üzerinde tutulan verilere ihtiyacımız oluyor. Telefon rehberi, arama kayıtları, bookmarklar, müzik arşivi, sistem ayarları gibi bilgiler Android’in SQLite veri tabanında sakladıklarından bazıları. Uygulamayı geliştirirken hem ihtiyacımız olan bilgilerin tutulup tutulmadığını görmek, hem de telefonun iç işleyişini keşfetmek için Android’in kendi tuttuğu veri tabanlarında bir gezinti yapmak isteyebiliriz.

Andoid için uygulama geliştirme ortamımızı hazırladıktan sonra Android SDK’in tools klasöründe bulunan adb aracı bu konuda bize yardımcı olacak. Android Debug Bridge, emulator/cihaz ile bilgisayarımız aramızda bir köprü görevi gören bir uygulama. Komut satırından tools klasörüne giderek adb devices komutu ile bağlanabileceğimiz cihazları listeliyoruz:
 android1
Birden fazla cihaz bağlı olsa idi, yazacağımız tüm komutları adb -s emulator-5554 komut şeklinde hangi cihaz üzerinde çalışacağını belirterek yazmamız gerekecekti. Fakat bizde tek cihaz olduğu için, komutlarımızı kısaca adb komut şeklinde yazmamız yeterli olacak.

Dosya Sisteminde Gezinti

Cihaz üzerinde komut satırına erişmek için adb shell komutunu kullanıyoruz.
Android işletim sistemi Linux kernel’i üzerine kurulu olduğu için, Linux üzerinde alışkın olduğumuz bazı komutları cihaz üzerinde de çalıştırabiliyoruz. Mesela ls komutu ile dizinleri listeleyebilir, cd dizinadı ile istediğimiz dizine geçebilir, cd .. ile bir üst seviyedeki dizine geri dönebiliriz.
android2
Bu şekilde klasörler arasında dolaşarak istediğimiz bilgilerin nerede durduğunu bulmamız gerekiyor. Mesela veri tabanları genellikle /data/data dizinin altında duruyor. Örnek olarak Contacts uygulamasına ait verilere göz atalım. Bu bilgiler /data/data/com.android.providers.contacts/databases dizininde bulunan contacts.db dosyasında bulunuyor. (NOT: SDK 2.0 ve sonraki sürümlerde contacts2.db olarak geçer).
android3

Database’e Erişim 

İncelemek istediğimiz database dosyasını bulduktan sonra, sqlite3 dosyadı komutu ile bu veritabanını inceleyebiliriz. sqlite3 contacts.db diyerek Contacts uygulamasına ait veri tabanını açıyoruz:
android4

sqlite3 içerisindeyken .tables komutu ile o veri tabanında bulunan tabloları listeliyor, .header on diyerek kolon isimlerini görünür kılıyoruz. Daha sonra select * from calls; sorgu cümlesi ile arama kayıtlarına ait tabloda tutulan verileri listeliyoruz.

sqlite3 içerisinde işimize yarayabilecek diğer komutlar şöyle:
.dump tabloismi diyerek tabloyu oluşturmak için gerekli SQL cümlelerini görebilir, .schema tabloismi ile tablonun yapısını öğrenebilir, .help ile de diğer komutları inceleyebilirsiniz. En son .exit diyerek sqlite3′ten çıkarak Android komut satırına geri dönüyoruz.

Cihazdan Dosya Kopyalamak

Komut satırından hoşlanmayanlardansanız, Android’in veri tabanını kendi bilgisayarınıza kopyalayıp, SQLite Database Browser gibi bir araç ile görsel olarak inceleyebilirsiniz. Bunun için adb pull cihazdakidizin localdizin komutunu kullanıyoruz. Mesela Contacts uygulamasına ait veri tabanını bilgisayarımıza kopyalamak için adb pull /data/data/com.android.providers.contacts/databases/contacts.db contacts.db yazarak contacts.db dosyasını tools klasörü altına kopyalamış oluyoruz. (Not: Bu işlemi adb shell içerisinden değil, işletim sisteminin komut satırından yapıyoruz) Daha sonra SQLite Database Browser ile dosyayı açarak içeriğine bakabiliriz:

android5

Hiç yorum yok: