Android Debug Bridge (adb
), bir cihazla iletişim kurmanızı sağlayan çok yönlü bir komut satırı aracıdır. adb
komutu, uygulama yükleme ve hata ayıklama gibi çeşitli cihaz işlemlerini kolaylaştırır. adb
, bir cihazda çeşitli komutlar çalıştırmak için kullanabileceğiniz bir Unix kabuğuna erişim sağlar. Üç bileşen içeren bir istemci-sunucu programıdır:
- Komut gönderen bir istemci. İstemci, geliştirme makinenizde çalışır.
adb
komutunu göndererek komut satırı terminalinden istemci çağırabilirsiniz. - Arka plan programı (adbd), cihazda komut çalıştırır. Arka plan programı her cihazda arka plan işlemi olarak çalışır.
- İstemci ile daemon arasındaki iletişimi yöneten bir sunucu. Sunucu, geliştirme makinenizde arka plan işlemi olarak çalışır.
adb
, Android SDK Platform Tools paketine dahildir. Bu paketi android_sdk/platform-tools/
konumuna yükleyen SDK Yöneticisi ile indirin. Bağımsız Android SDK Platform Araçları paketini istiyorsanız buradan indirebilirsiniz.
Yaygın sorunları gidermek için Bağlantı Asistanı'nın nasıl kullanılacağı da dahil olmak üzere bir cihazı adb
üzerinden kullanmak üzere bağlama hakkında bilgi edinmek için Donanım cihazında uygulama çalıştırma başlıklı makaleyi inceleyin.
adb'nin işleyiş şekli
Bir adb
istemcisini başlattığınızda istemci önce zaten çalışmakta olan bir adb
sunucu işlemi olup olmadığını kontrol eder. Aksi takdirde sunucu işlemini başlatır.
Sunucu başladığında yerel TCP 5037 bağlantı noktasına bağlanır ve adb
istemcilerinden gönderilen komutları dinler.
Not: Tüm adb
istemcileri, adb
sunucusuyla iletişim kurmak için 5037 numaralı bağlantı noktasını kullanır.
Ardından sunucu, çalışan tüm cihazlarla bağlantı kurar.
İlk 16 emülatör tarafından kullanılan aralık olan 5555 ile 5585 arasındaki tek numaralı bağlantı noktalarını tarayarak emülatörleri bulur. Sunucu bir adb
daemon (adbd) bulduğunda, söz konusu bağlantı noktasına bir bağlantı kurar.
Her emülatör, sıralı bir çift bağlantı noktası kullanır: Konsola bağlantıları için çift haneli bir bağlantı noktası ve adb
bağlantıları için tek haneli bir bağlantı noktası. Örnek:
Emülatör 1, console: 5554
Emülatör 1, adb
: 5555
Emülatör 2, console: 5556
Emülatör 2, adb
: 5557
vb.
Gösterildiği gibi, 5555 numaralı bağlantı noktasında adb
öğesine bağlanan emülatör, konsolunu 5554 numaralı bağlantı noktasında dinleyen emülatörle aynıdır.
Sunucu tüm cihazlarla bağlantı kurduktan sonra bu cihazlara erişmek için adb
komutlarını kullanabilirsiniz. Sunucu, cihazlara olan bağlantıları yönetir ve birden fazla adb
istemciden gelen komutları işler. Bu nedenle, herhangi bir cihazı herhangi bir istemciden veya komut dosyasından kontrol edebilirsiniz.
Cihazınızda adb hata ayıklama özelliğini etkinleştirin
adb'yi USB üzerinden bağlı bir cihazda kullanmak için cihaz sistem ayarlarındaki Geliştirici seçenekleri bölümünde USB üzerinden hata ayıklama'yı etkinleştirmeniz gerekir. Android 4.2 (API düzeyi 17) ve sonraki sürümlerde Geliştirici seçenekleri ekranı varsayılan olarak gizlidir. Bu seçeneği görünür hale getirmek için Geliştirici seçeneklerini etkinleştirin.
Artık cihazınızı USB ile bağlayabilirsiniz. android_sdk/platform-tools/
dizininden adb devices
komutunu çalıştırarak cihazınızın bağlı olduğunu doğrulayabilirsiniz. Bağlıysa cihaz adını "cihaz" olarak görürsünüz.
Not: Android 4.2.2 (API düzeyi 17) veya sonraki bir sürümü çalıştıran bir cihaz bağladığınızda sistem, bu bilgisayar üzerinden hata ayıklama yapılmasına olanak tanıyan bir RSA anahtarının kabul edilip edilmeyeceğini soran bir iletişim kutusu gösterir. Bu güvenlik mekanizması, siz cihazın kilidini açıp iletişim kutusunu onaylamadığınız sürece USB üzerinden hata ayıklamanın ve diğer adb komutlarının yürütülememesini sağladığı için kullanıcı cihazlarını korur.
Bir cihaza USB üzerinden bağlanma hakkında daha fazla bilgi için Uygulamaları donanım cihazında çalıştırma konusunu okuyun.
Kablosuz ağ üzerinden bir cihaza bağlanın
Not: Aşağıdaki talimatlar, Android 11 (API düzeyi 30) çalıştıran Wear cihazları için geçerli değildir. Daha fazla bilgi için Wear OS uygulamasında hata ayıklama rehberine bakın.
Android 11 (API düzeyi 30) ve sonraki sürümler, Android Debug Bridge (adb) kullanarak uygulamanızı iş istasyonunuzdan kablosuz olarak dağıtmayı ve uygulamanızda hata ayıklamayı destekler. Örneğin, cihazınızı USB üzerinden fiziksel olarak bağlamanıza gerek kalmadan hata ayıklaması yapılabilir uygulamanızı birden fazla uzak cihaza dağıtabilirsiniz. Bu sayede sürücü yükleme gibi yaygın USB bağlantısı sorunlarını çözmeniz gerekmez.
Kablosuz hata ayıklama özelliğini kullanmaya başlamadan önce aşağıdakileri yapın:
-
İş istasyonunuzun ve cihazınızın aynı kablosuz ağa bağlı olduğundan emin olun.
-
Cihazınızda telefon için Android 11 (API düzeyi 30) veya sonraki bir sürümün, TV ve WearOS için ise Android 13 (API düzeyi 33) veya sonraki bir sürümün yüklü olduğundan emin olun. Daha fazla bilgi için Android sürümünüzü kontrol etme ve güncelleme başlıklı makaleyi inceleyin.
-
IDE (Entegre Geliştirme Ortamı) kullanıyorsanız Android Studio'nun en son sürümünün yüklü olduğundan emin olun. Buradan indirebilirsiniz.
-
İş istasyonunuzda SDK Platform Araçları'nı en son sürüme güncelleyin.
Kablosuz hata ayıklama özelliğini kullanmak için cihazınızı bir QR kodu veya eşleme kodu kullanarak iş istasyonunuzla eşlemeniz gerekir. İş istasyonunuz ve cihazınız aynı kablosuz ağa bağlı olmalıdır. Cihazınıza bağlanmak için aşağıdaki adımları uygulayın:
-
Cihazınızda geliştirici seçeneklerini etkinleştirin.
-
Android Studio'yu açın ve çalıştırma yapılandırmaları menüsünden Kablosuz
Şekil 2'de gösterildiği gibi Kablosuz ağ üzerinden cihaz eşleme penceresi açılır.
-
Cihazınızda Kablosuz hata ayıklama'ya dokunun ve cihazınızı eşleyin:
-
Cihazınızı QR koduyla eşlemek için Cihazı QR koduyla eşle'yi seçin ve Şekil 2'de gösterilen Cihazları kablosuz ağ üzerinden eşle pop-up'ından alınan QR kodunu tarayın.
-
Cihazınızı eşleme koduyla eşlemek için Kablosuz ağ üzerinden cihaz eşle pop-up'ında Eşleme kodu ile cihaz eşle'yi seçin. Cihazınızda Eşleme kodunu kullanarak eşle'yi seçin ve gösterilen altı basamaklı kodu not edin. Cihazınız Kablosuz ağ üzerinden cihaz eşleme penceresinde göründüğünde Eşle'yi seçip cihazınızda gösterilen altı haneli kodu girebilirsiniz.
-
-
Cihazınız eşlendikten sonra uygulamanızı cihazınıza dağıtmayı deneyebilirsiniz.
Farklı bir cihazı eşlemek veya iş istasyonunuzdaki geçerli cihazı unutmak için cihazınızda Kablosuz hata ayıklama bölümüne gidin. Eşlenen cihazlar bölümünde iş istasyonunuzun adına dokunup Unut'u seçin.
-
Kablosuz hata ayıklamayı hızlıca açıp kapatmak istiyorsanız Geliştirici Seçenekleri > Hızlı ayarlar geliştirici kutuları bölümündeki Kablosuz hata ayıklama için Hızlı ayarlar geliştirici kutularını kullanabilirsiniz.
Komut satırı kullanarak kablosuz bağlantı
Alternatif olarak, Android Studio olmadan komut satırı kullanarak cihazınıza bağlanmak için aşağıdaki adımları uygulayın:
-
Daha önce açıklandığı şekilde cihazınızda geliştirici seçeneklerini etkinleştirin.
-
Daha önce açıklandığı gibi cihazınızda Kablosuz hata ayıklama'yı etkinleştirin.
-
İş istasyonunuzda bir terminal penceresi açın ve
android_sdk/platform-tools
'ye gidin. -
Cihazı eşleme kodu ile eşle'yi seçerek IP adresinizi, bağlantı noktası numaranızı ve eşleme kodunuzu bulun. Cihazda gösterilen IP adresini, bağlantı noktası numarasını ve eşleme kodunu not edin.
-
İş istasyonunuzun terminalinde
adb pair ipaddr:port
komutunu çalıştırın. Yukarıdaki IP adresini ve bağlantı noktası numarasını kullanın. -
İstendiğinde aşağıdaki gibi eşleme kodunu girin.
Kablosuz bağlantı sorunlarını çözme
Cihazınıza kablosuz olarak bağlanırken sorun yaşıyorsanız sorunu çözmek için aşağıdaki sorun giderme adımlarını deneyin.
İş istasyonunuzun ve cihazınızın ön koşulları karşılayıp karşılamadığını kontrol edin
İş istasyonunun ve cihazın bu bölümün başında listelenen ön koşulları karşılayıp karşılamadığını kontrol edin.
Bilinen diğer sorunları kontrol etme
Aşağıda, kablosuz hata ayıklamayla (adb veya Android Studio ile) ilgili bilinen sorunların listesi ve bunların nasıl çözüleceği verilmiştir:
-
Kablosuz ağ bağlanmıyor: Kurumsal kablosuz ağlar gibi güvenli kablosuz ağlar, p2p bağlantılarını engelleyebilir ve kablosuz ağ üzerinden bağlanmanıza izin vermeyebilir. Kabloyla veya başka bir (kurumsal olmayan) kablosuz ağa bağlanmayı deneyin. Şirket dışı bir ağa başvurma seçeneğiniz varsa tcp/ip üzerinden
adb connect ip:port
kullanan kablosuz bağlantı (ilk USB bağlantısından sonra) da bir seçenektir. -
Kablosuz bağlantı üzerinden
adb
bazen otomatik olarak kapanır: Bu durum, cihaz kablosuz ağ değiştirirse veya ağ bağlantısı kesilirse ortaya çıkabilir. Sorunu çözmek için ağa yeniden bağlanın. -
Cihaz, eşleme başarılı olduktan sonra bağlanmıyor:
adb
, eşlenen cihazları bulup otomatik olarak bağlanmak için mDNS'den yararlanır. Ağ veya cihaz yapılandırmanız mDNS'yi desteklemiyorsa ya da devre dışı bıraktıysaadb connect ip:port
kullanarak cihaza manuel olarak bağlanmanız gerekir.
İlk USB bağlantısından sonra cihaza kablosuz olarak bağlanma (yalnızca Android 10 ve önceki sürümlerde kullanılabilir)
Not: Bu iş akışı, Android 11 (ve sonraki sürümler) için de geçerlidir. Ancak iş yaparken aynı zamanda fiziksel USB üzerinden *başlangıç* bağlantısı da yapması gerektiğini unutmayın.
Not: Aşağıdaki talimatlar, Android 10 (API düzeyi 29) veya önceki sürümleri çalıştıran Wear cihazlar için geçerli değildir. Daha fazla bilgi için Wear OS uygulamasında hata ayıklama ile ilgili kılavuzu inceleyin.
adb
genellikle USB üzerinden cihazla iletişim kurar, ancak adb
cihazını kablosuz ağ üzerinden de kullanabilirsiniz. Android 10 (API düzeyi 29) veya daha eski sürümlerin yüklü olduğu bir cihazı bağlamak için USB üzerinden aşağıdaki ilk adımları uygulayın:
-
Android cihazınızı ve
adb
ana bilgisayarınızı ortak bir kablosuz ağa bağlayın. - Cihazı bir USB kablosuyla ana bilgisayara bağlayın.
-
Hedef cihazı, 5555 numaralı bağlantı noktasından TCP/IP bağlantısını dinleyecek şekilde ayarlayın:
adb tcpip 5555
- USB kablosunu hedef cihazdan çıkarın.
- Android cihazın IP adresini bulun. Örneğin, Nexus cihazlarda IP adresini Ayarlar > Tablet hakkında (veya Telefon hakkında) > Durum > IP adresi bölümünde bulabilirsiniz.
-
Cihazın IP adresine göre bağlanın:
adb connect device_ip_address:5555
-
Ana bilgisayarınızın hedef cihaza bağlı olduğunu onaylayın:
$ adb devices List of devices attached device_ip_address:5555 device
Not: Tüm erişim noktalarının uygun olmadığına dikkat edin. Güvenlik duvarı adb
'ü desteklemek için doğru şekilde yapılandırılmış bir erişim noktası kullanmanız gerekebilir.
Cihazınız artık adb
'e bağlı.
Cihazınızla adb
bağlantısı kesilirse:
- Ana cihazınızın Android cihazınızla aynı kablosuz ağa bağlı olduğundan emin olun.
-
adb connect
adımını tekrar uygulayarak yeniden bağlanın. -
Bu işe yaramazsa
adb
ana makinenizi sıfırlayın:adb kill-server
Ardından en baştan başlayın.
Cihazlarla ilgili sorgu
adb
komutları vermeden önce adb
sunucusuna hangi cihaz örneklerinin bağlı olduğunu bilmek faydalıdır. devices
komutunu kullanarak bağlı cihazların listesini oluşturun:
adb devices -l
Buna karşılık, adb
her cihaz için şu durum bilgisini yazdırır:
- Seri numarası:
adb
, cihazı bağlantı noktası numarasına göre benzersiz şekilde tanımlamak için bir dize oluşturur. Örnek bir seri numarası:emulator-5554
- Durum: Cihazın bağlantı durumu aşağıdakilerden biri olabilir:
offline
: Cihazadb
'a bağlı değil veya yanıt vermiyor.device
: Cihaz,adb
sunucusuna bağlıdır. Cihaz, sistem henüz başlatılırkenadb
'e bağlandığından bu durumun Android sisteminin tamamen başlatıldığı ve çalıştığı anlamına gelmediğini unutmayın. Önyükleme sonrasında bu, cihazın normal çalışma durumudur.no device
: Bağlı cihaz yok.
- Açıklama:
-l
seçeneğini eklersenizdevices
komutu, cihazın ne olduğunu belirtir. Bu bilgi, bağlı birden fazla cihazınız olduğunda cihazları birbirinden ayırt etmenize yardımcı olur.
Aşağıdaki örnekte devices
komutu ve çıkışı gösterilmektedir. Çalışan üç cihaz var. Listedeki ilk iki satır emülatör, üçüncü satır ise bilgisayara bağlı bir donanım cihazıdır.
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
Emülatör listede yok
adb devices
komutu, emülatörler masaüstünüzde görünür olsa bile çalışan emülatörlerin adb devices
çıkışında gösterilmemesine neden olan bir köşe büyük komut sırası içerir. Bu durum aşağıdaki koşulların tümü doğru olduğunda gerçekleşir:
adb
sunucusu çalışmıyor.emulator
komutunu-port
veya-ports
seçeneğiyle birlikte 5554 ile 5584 arasında tek sayılı bir bağlantı noktası değeriyle kullanırsınız.- Seçtiğiniz tek sayılı bağlantı noktası meşgul olmadığından bağlantı noktası bağlantısı, belirtilen bağlantı noktası numarasında yapılabilir. Bağlantı noktası meşgulse emülatör, 2. adımdaki koşulları karşılayan başka bir bağlantı noktasına geçer.
- Emülatörden sonra
adb
sunucusunu başlatırsınız.
Bu durumu önlemenin bir yolu, emülatörün kendi bağlantı noktalarını seçmesine izin vermek ve aynı anda 16'dan fazla emülatör çalıştırmamaktır. Diğer bir yöntem de aşağıdaki örneklerde açıklandığı gibi, emulator
komutunu kullanmadan önce her zaman adb
sunucusunu başlatmaktır.
1. Örnek: Aşağıdaki komut dizisinde adb devices
komutu adb
sunucusunu başlatır ancak cihaz listesi görünmez.
adb
sunucusunu durdurun ve aşağıdaki komutları gösterilen sırayla girin. AVD adı için sisteminizdeki geçerli bir AVD adı girin. AVD adlarının listesini almak için emulator -list-avds
yazın. emulator
komutu android_sdk/tools
dizinindedir.
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
2. Örnek: Aşağıdaki komut dizisinde, adb
sunucusu önce başlatıldığı için adb devices
cihaz listesini gösterir.
adb devices
çıkışında emülatör görmek için adb
sunucusunu durdurun ve emulator
komutunu kullandıktan sonra, adb devices
komutunu kullanmadan önce aşağıdaki gibi tekrar başlatın:
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
Emülatör komut satırı seçenekleri hakkında daha fazla bilgi için Komut satırı başlangıç seçenekleri başlıklı makaleyi inceleyin.
Belirli bir cihaza komut gönderme
Birden fazla cihaz çalışıyorsa adb
komutunu verirken hedef cihazı belirtmeniz gerekir.
Hedefi belirtmek için aşağıdaki adımları uygulayın:
- Hedefin seri numarasını almak için
devices
komutunu kullanın. - Seri numarasını öğrendikten sonra seri numarasını belirtmek için
adb
komutlarıyla birlikte-s
seçeneğini kullanın.- Çok sayıda
adb
komutu gönderecekseniz$ANDROID_SERIAL
ortam değişkenini seri numarasını içerecek şekilde ayarlayabilirsiniz. - Hem
-s
hem de$ANDROID_SERIAL
kullanırsanız-s
,$ANDROID_SERIAL
'u geçersiz kılar.
- Çok sayıda
Aşağıdaki örnekte, bağlı cihazların listesi alınır ve ardından helloWorld.apk
'ü ilgili cihaza yüklemek için cihazlardan birinin seri numarası kullanılır:
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
Not: Birden fazla cihaz mevcutken hedef cihaz belirtmeden bir komut gönderirseniz adb
"adb: more than one device/emulator" (adb: birden fazla cihaz/emülatör) hatası gösterir.
Birden fazla cihazınız varsa ancak yalnızca biri emülatörse emülatöre komut göndermek için -e
seçeneğini kullanın. Birden fazla cihaz varsa ancak yalnızca bir donanım cihazı bağlıysa donanım cihazına komut göndermek için -d
seçeneğini kullanın.
Uygulama yükleme
Bir APK'yı emülatöre veya bağlı cihaza yüklemek için install
komutunu kullanarak adb
'i kullanabilirsiniz:
adb install path_to_apk
Test APK'sı yüklerken install
komutuyla birlikte -t
seçeneğini kullanmanız gerekir. Daha fazla bilgi için -t
başlıklı makaleyi inceleyin.
Birden fazla APK yüklemek için install-multiple
kullanın. Bu özellik, uygulamanız için belirli bir cihaza ait tüm APK'ları Play Console'dan indirip bir emülatöre ya da fiziksel cihaza yüklemek istediğinizde kullanışlıdır.
Bir emülatöre/cihaz örneğine yükleyebileceğiniz APK dosyası oluşturma hakkında daha fazla bilgi için Uygulamanızı derleme ve çalıştırma başlıklı makaleyi inceleyin.
Not: Android Studio kullanıyorsanız uygulamanızı doğrudan adb
kullanarak emülatöre veya cihaza yüklemeniz gerekmez. Bunun yerine, Android Studio uygulamanın paketlenmesi ve yüklenmesini sizin adınıza yapar.
Bağlantı noktası yönlendirmeyi kur
Belirli bir ana makine bağlantı noktasındaki istekleri cihazdaki farklı bir bağlantı noktasına yönlendiren rastgele bağlantı noktası yönlendirmeyi ayarlamak için forward
komutunu kullanın.
Aşağıdaki örnekte, 6100 ana makine bağlantı noktasının 7100 cihaz bağlantı noktasına yönlendirmesi ayarlanmaktadır:
adb forward tcp:6100 tcp:7100
Aşağıdaki örnekte, ana makine bağlantı noktası 6100'ün yerel:logd adresine yönlendirilmesi ayarlanmaktadır:
adb forward tcp:6100 local:logd
Bu işlem, cihazdaki belirli bir bağlantı noktasına neyin gönderildiğini belirlemeye çalışıyorsanız faydalı olabilir. Alınan tüm veriler sistem günlük kaydı hizmetine yazılır ve cihaz günlüklerinde gösterilir.
Dosyaları bir cihaza ve cihazdan kopyalama
Bir cihaza ve cihazdan dosya kopyalamak için pull
ve push
komutlarını kullanın. Yalnızca bir APK dosyasını belirli bir konuma kopyalayan install
komutunun aksine pull
ve push
komutları, istediğiniz dizinleri ve dosyaları cihazdaki herhangi bir konuma kopyalamanıza olanak tanır.
Bir dosyayı veya dizini ve alt dizinlerini cihazdan kopyalamak için aşağıdakileri yapın:
adb pull remote local
Bir dosyayı veya dizini ve alt dizinlerini cihaza kopyalamak için aşağıdakileri yapın:
adb push local remote
local
ve remote
değerlerini, geliştirme makinenizdeki (yerel) ve cihazdaki (uzak) hedef dosyaların/dizinlerin yollarıyla değiştirin. Örnek:
adb push myfile.txt /sdcard/myfile.txt
adb sunucusunu durdurma
Bazı durumlarda, sorunu çözmek için adb
sunucu sürecini sonlandırıp yeniden başlatmanız gerekebilir. Örneğin, adb
bir komuta yanıt vermezse bu durum gerçekleşebilir.
adb
sunucusunu durdurmak için adb kill-server
komutunu kullanın.
Ardından, başka bir adb
komutu göndererek sunucuyu yeniden başlatabilirsiniz.
adb komutları verme
Geliştirme makinenizdeki bir komut satırından veya aşağıdakileri kullanarak bir komut dosyasından adb
komutları gönderin:
adb [-d | -e | -s serial_number] command
Yalnızca bir emülatör çalışıyorsa veya yalnızca bir cihaz bağlıysa adb
komutu varsayılan olarak bu cihaza gönderilir. Birden fazla emülatör çalışıyorsa ve/veya birden fazla cihaz bağlıysa komutun yönlendirileceği hedef cihazı belirtmek için -d
, -e
veya -s
seçeneğini kullanmanız gerekir.
Aşağıdaki komutu kullanarak desteklenen tüm adb
komutlarının ayrıntılı listesini görebilirsiniz:
adb --help
Kabuk komutları verme
adb
üzerinden cihaz komutları vermek veya etkileşimli bir kabuk başlatmak için shell
komutunu kullanabilirsiniz. Tek bir komut vermek için shell
komutunu şu şekilde kullanın:
adb [-d |-e | -s serial_number] shell shell_command
Bir cihazda etkileşimli kabuk başlatmak için shell
komutunu aşağıdaki gibi kullanın:
adb [-d | -e | -s serial_number] shell
Etkileşimli kabuktan çıkmak için Control+D
tuşuna basın veya exit
yazın.
Android, yaygın Unix komut satırı araçlarının çoğunu sağlar. Kullanılabilir araçların listesi için aşağıdaki komutu kullanın:
adb shell ls /system/bin
--help
bağımsız değişkeni aracılığıyla çoğu komut için yardım sunulur.
Kabuk komutlarının çoğu toybox tarafından sağlanır.
Tüm oyuncak kutusu komutları için geçerli olan genel yardıma toybox --help
üzerinden ulaşabilirsiniz.
Android Platform Tools 23 ve sonraki sürümlerde adb
, bağımsız değişkenleri ssh(1)
komutuyla aynı şekilde işler. Bu değişiklik, komut ekleme ile ilgili birçok sorunu giderdi ve adb install Let\'sGo.apk
gibi kabuk meta karakterleri içeren komutların güvenli bir şekilde yürütülmesini sağladı. Bu değişiklik, kabuk meta karakterleri içeren tüm komutların yorumlanmasının da değiştiği anlamına gelir.
Örneğin, tırnak işaretleri yerel kabuk tarafından atlandığı ve cihaz adb shell setprop key two words
gördüğü için adb shell setprop key 'two words'
artık hata olarak değerlendirilir. Komutun çalışması için ssh(1)
ile yaptığınız gibi, yerel kabuk için bir kez, uzak kabuk için bir kez olmak üzere iki kez tırnak içine alın. Örneğin, yerel kabuk dış tırnak işareti düzeyini aldığı ve cihaz yine de iç tırnak işareti düzeyini gördüğü için adb shell setprop key "'two words'"
çalışır: setprop key 'two words'
. Çıkış yöntemi de bir seçenektir, ancak iki kez alıntı yapmak genellikle daha kolaydır.
Sistem günlüğünü izlemek için kullanışlı olan Logcat komut satırı aracına da göz atın.
Arama etkinliği yöneticisi
adb
kabuğunda, etkinlik yöneticisi (am
) aracıyla komutlar vererek etkinlik başlatma, bir işlemi zorla durdurma, intent yayınlama, cihaz ekranı özelliklerini değiştirme gibi çeşitli sistem işlemlerini gerçekleştirebilirsiniz.
Kabuktayken am
söz dizimi şu şekildedir:
am command
Ayrıca, uzak kabuğa girmeden doğrudan adb
etkinlik yöneticisi komutu da verebilirsiniz. Örnek:
adb shell am start -a android.intent.action.VIEW
Komut | Açıklama |
---|---|
start [options] intent
|
intent tarafından belirtilen bir Activity başlatın. Intent bağımsız değişkenleri spesifikasyonu'na bakın. Seçenekler şunlardır:
|
startservice [options] intent
|
intent tarafından belirtilen Service 'ü başlatın. Intent bağımsız değişkenleri spesifikasyonu'na bakın. Seçenekler şunlardır:
|
force-stop package
|
package ile ilişkili her şeyi zorla durdurun.
|
kill [options] package
|
package ile ilişkili tüm işlemleri sonlandırın. Bu komut yalnızca öldürülmesi güvenli olan ve kullanıcı deneyimini etkilemeyen işlemleri sona erdirir.
Seçenekler şunlardır:
|
kill-all
|
Tüm arka plan işlemlerini sonlandırın. |
broadcast [options] intent
|
Yayın intent'i gönderin. Amaç bağımsız değişkenleri için spesifikasyon'a bakın. Seçenekler şunlardır:
|
instrument [options] component
|
Instrumentation örneğiyle izlemeye başlayın.
Genellikle component hedefi, test_package/runner_class formudur. Seçenekler şunlardır:
|
profile start process file
|
Profil aracını process 'te başlatın, sonuçları file 'a yazın.
|
profile stop process
|
Profil oluşturucuyu process 'te durdurun.
|
dumpheap [options] process file
|
process yığınını dök, file 'a yaz. Seçenekler şunlardır:
|
set-debug-app [options] package
|
package uygulamasını hata ayıklama moduna ayarlayın. Seçenekler şunlardır:
|
clear-debug-app
|
set-debug-app ile hata ayıklama için daha önce ayarlanan paketi temizleyin.
|
monitor [options]
|
Kilitlenme veya ANR izlemeye başlayın. Seçenekler:
|
screen-compat {on | off} package
|
package cihazının ekran
uyumluluğu modunu kontrol et.
|
display-size [reset | widthxheight]
|
Cihazın görüntü boyutunu geçersiz kılabilirsiniz.
Bu komut, büyük ekranlı bir cihaz kullanarak küçük ekran çözünürlüğünü taklit ederek veya tam tersini yaparak uygulamanızı farklı ekran boyutlarında test etmek için yararlıdır.
Örnek: |
display-density dpi
|
Cihazın görüntü yoğunluğunu geçersiz kılabilirsiniz.
Bu komut, düşük yoğunluklu bir ekran kullanarak yüksek yoğunluklu bir ekran ortamını (veya tam tersi) taklit ederek uygulamanızı farklı ekran yoğunluklarında test etmenize yardımcı olur.
Örnek: |
to-uri intent
|
Belirtilen intent spesifikasyonunu URI olarak yazdırın. |
to-intent-uri intent
|
Belirtilen intent spesifikasyonunu intent: URI'si olarak yazdırın. Intent bağımsız değişkenleri spesifikasyonu bölümüne bakın. |
Amaç bağımsız değişkenleri için spesifikasyon
intent
bağımsız değişkeni alan etkinlik yöneticisi komutları için aşağıdaki seçeneklerle amacı belirtebilirsiniz:
Paket yöneticisini ara (pm
)
adb
kabuğunda, paket yöneticisi (pm
) aracıyla komutlar vererek cihaza yüklenen uygulama paketlerinde işlemler ve sorgular yapabilirsiniz.
Kabuktayken pm
söz dizimi şu şekildedir:
pm command
Ayrıca, uzak kabuğa girmeden doğrudan adb
paket yöneticisi komutu da verebilirsiniz. Örnek:
adb shell pm uninstall com.example.MyApp
Komut | Açıklama |
---|---|
list packages [options] filter
|
Tüm paketleri (isteğe bağlı olarak yalnızca paket adında filter metnini içerenler) yazdırın. Seçenekler:
|
list permission-groups
|
Bilinen tüm izin gruplarını yazdırın. |
list permissions [options] group
|
Bilinen tüm izinleri (isteğe bağlı olarak yalnızca group içindekileri) yazdırın. Seçenekler:
|
list instrumentation [options]
|
Tüm test paketlerini listeleyin. Seçenekler:
|
list features
|
Sistemin tüm özelliklerini yazdırın. |
list libraries
|
Mevcut cihaz tarafından desteklenen tüm kitaplıkları yazdırın. |
list users
|
Sistemdeki tüm kullanıcıları yazdırın. |
path package
|
Belirtilen package öğesinin APK yolunu yazdır.
|
install [options] path
|
path ile belirtilen bir paketi sisteme yükleyin. Seçenekler:
|
uninstall [options] package
|
Bir paketi sistemden kaldırır. Seçenekler:
|
clear package
|
Bir paketle ilişkili tüm verileri silin. |
enable package_or_component
|
Belirtilen paketi veya bileşeni etkinleştirin ("package/class" olarak yazılır). |
disable package_or_component
|
Belirtilen paketi veya bileşeni devre dışı bırakın ("paket/sınıf" olarak yazılır). |
disable-user [options] package_or_component
|
Seçenekler:
|
grant package_name permission
|
Bir uygulamaya izin verin. Android 6.0 (API seviyesi 23) ve sonraki sürümleri çalıştıran cihazlarda izin, uygulama manifest dosyasında tanımlanan herhangi bir izin olabilir. Android 5.1 (API düzeyi 22) ve önceki sürümleri çalıştıran cihazlarda, uygulama tarafından tanımlanan isteğe bağlı bir izin olmalıdır. |
revoke package_name permission
|
Bir uygulamadaki izni iptal etme: Android 6.0 (API düzeyi 23) ve sonraki sürümleri çalıştıran cihazlarda söz konusu izin, uygulama manifest dosyasında beyan edilen herhangi bir izin olabilir. Android 5.1 (API düzeyi 22) ve önceki sürümleri çalıştıran cihazlarda, uygulama tarafından tanımlanan isteğe bağlı bir izin olmalıdır. |
set-install-location location
|
Varsayılan yükleme konumunu değiştirebilirsiniz. Konum değerleri:
Not: Bu işlem yalnızca hata ayıklama amacıyla yapılır. Bu iznin kullanılması, uygulamaların bozulmasına ve istenmeyen diğer davranışlara neden olabilir. |
get-install-location
|
Geçerli yükleme konumunu döndürür. Döndürülen değerler:
|
set-permission-enforced permission [true | false]
|
Verilen iznin zorunlu kılınıp uygulanmayacağını belirtin. |
trim-caches desired_free_space
|
Belirtilen boş alana ulaşmak için önbellek dosyalarını kısaltın. |
create-user user_name
|
Belirtilen user_name ile yeni bir kullanıcı oluşturun ve kullanıcının yeni kullanıcı tanımlayıcısını yazdırın.
|
remove-user user_id
|
Belirtilen user_id ile kullanıcıyı kaldırın ve bu kullanıcıyla ilişkili tüm verileri silin.
|
get-max-users
|
Cihazın desteklediği maksimum kullanıcı sayısını yazdırın. |
get-app-links [options] [package]
|
Belirtilen package için alan doğrulama durumunu veya belirtilmemişse tüm paketler için durumu yazdırır. Eyalet kodları aşağıdaki gibi tanımlanır:
Seçenekler şunlardır:
|
reset-app-links [options] [package]
|
Belirtilen paketin veya belirtilmemişse tüm paketlerin alan doğrulama durumunu sıfırlayın.
Seçenekler şunlardır:
|
verify-app-links [--re-verify] [package]
|
Belirtilen package için veya belirtilmemişse tüm paketler için doğrulama isteği yayınlayın. Yalnızca paket daha önce bir yanıt kaydetmediyse gönderir.
|
set-app-links [--package package] state domains
|
Bir paketin alanını manuel olarak ayarlama Bunun çalışması için alan, paket tarafından autoVerify olarak bildirilmelidir. Bu komut, uygulanamayan alanlar için hata bildirmez.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Paket için ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlayın. Bunun işe yaraması için alanın paket tarafından bildirilmesi gerekir. Bu komut, uygulanamayan alanlar için hata bildirmez.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Bir paket için ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlama. Bunun işe yaraması için alanın paket tarafından bildirilmesi gerekir. Bu komut, uygulanamayan alanlar için bir hata bildirmez.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Bir paket için otomatik olarak doğrulanmış bağlantı işleme ayarını açın/kapatın.
|
get-app-link-owners --user user_id [--package package] domains
|
Belirli bir kullanıcının belirli bir alan adının sahiplerini düşükten yükseğe öncelik sırasına göre yazdırın.
|
Cihaz politikası yöneticisini arayın (dpm
)
Cihaz yönetimi uygulamalarınızı geliştirmenize ve test etmenize yardımcı olması için cihaz politikası yöneticisi (dpm
) aracına komut verin. Etkin yönetici uygulamasını kontrol etmek veya bir politikanın cihazdaki durum verilerini değiştirmek için bu aracı kullanın.
Kabuktayken dpm
söz dizimi:
dpm command
Uzaktan kabuğa girmeden doğrudan adb
cihaz politikası yöneticisi komutu da verebilirsiniz:
adb shell dpm command
Komut | Açıklama |
---|---|
set-active-admin [options] component
|
component dosyasını etkin yönetici olarak ayarlar.
Seçenekler şunlardır:
|
set-profile-owner [options] component
|
component'ü etkin yönetici, paketini ise mevcut bir kullanıcının profil sahibi olarak ayarlayın.
Seçenekler şunlardır:
|
set-device-owner [options] component
|
component'yi etkin yönetici, paketini de cihaz sahibi olarak ayarlayın.
Seçenekler şunlardır:
|
remove-active-admin [options] component
|
Etkin bir yöneticiyi devre dışı bırakma Uygulama, manifest dosyasında android:testOnly bildirmelidir. Bu komut, cihaz ve profil sahiplerini de kaldırır.
Seçenekler:
|
clear-freeze-period-record
|
Cihazın, sistem OTA güncellemeleri için daha önce ayarlanmış dondurma dönemlerine ait kaydını silin. Bu, donma dönemlerini yöneten uygulamalar geliştirirken cihaz planlama kısıtlamalarından kaçınmak için yararlıdır. Sistem güncellemelerini yönetme başlıklı makaleyi inceleyin.
Android 9.0 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda desteklenir. |
force-network-logs
|
Sistemi, mevcut ağ günlüklerini bir DPC tarafından alınmaya hazır hale getirmeye zorla Bağlantı veya DNS günlükleri mevcutsa DPC, onNetworkLogsAvailable() geri çağırmasını alır. Ağ etkinliği günlük kaydı başlıklı makaleyi inceleyin.
Bu komutun hızı sınırlıdır. Android 9.0 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda desteklenir. |
force-security-logs
|
Sistemi, mevcut güvenlik günlüklerini DPC'ye sunmaya zorlama. Kullanılabilir günlükler varsa DPC, onSecurityLogsAvailable() geri çağırma işlevini alır. Kurumsal cihaz etkinliğini günlüğe kaydetme başlıklı makaleyi inceleyin.
Bu komutun hızı sınırlıdır. Android 9.0 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda desteklenir. |
Ekran görüntüsü al
screencap
komutu, cihaz ekranının ekran görüntüsünü almak için kullanılan bir kabuk yardımcı programıdır.
Kabuktayken screencap
söz dizimi şu şekildedir:
screencap filename
Komut satırından screencap
kullanmak için aşağıdakileri girin:
adb shell screencap /sdcard/screen.png
Aşağıda, ekran görüntüsünü almak için adb
kabuğunu ve dosyayı cihazdan indirmek için pull
komutunu kullanan örnek bir ekran görüntüsü oturumu verilmiştir:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Video kaydet
screenrecord
komutu, Android 4.4 (API düzeyi 19) ve sonraki sürümleri çalıştıran cihazların ekranını kaydetmek için kullanılan bir kabuk yardımcı programıdır. Yardımcı program, ekran etkinliğini MPEG-4 dosyasına kaydeder. Tanıtım veya eğitim videoları oluşturmak ya da hata ayıklama ve test yapmak için bu dosyayı kullanabilirsiniz.
Bir kabuk içinde, aşağıdaki söz dizimini kullanın:
screenrecord [options] filename
Komut satırından screenrecord
kullanmak için aşağıdakileri girin:
adb shell screenrecord /sdcard/demo.mp4
Ctrl+C tuşlarına basarak ekran kaydını durdurun. Aksi takdirde kayıt, üç dakika veya --time-limit
tarafından belirlenen zaman sınırında otomatik olarak durur.
Cihazınızın ekranını kaydetmeye başlamak için videoyu kaydetmek üzere screenrecord
komutunu çalıştırın. Ardından, videoyu cihazdan ana bilgisayara indirmek için pull
komutunu çalıştırın. Kayıt oturumuyla ilgili bir örnek:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
screenrecord
yardımcı programı, cihaz ekranının en boy oranını korurken istediğiniz desteklenen çözünürlükte ve bit hızında kayıt yapabilir. Yardımcı program, varsayılan olarak doğal ekran çözünürlüğünde ve oryantasyonunda, maksimum üç dakikalık uzunlukta kayıt yapar.
screenrecord
yardımcı programının sınırlamaları:
- Ses, video dosyasıyla kaydedilmez.
- Video kaydı, Wear OS çalıştıran cihazlarda kullanılamaz.
- Bazı cihazlar, doğal ekran çözünürlüğünde kayıt yapamayabilir. Ekran kaydetmeyle ilgili sorunlarla karşılaşırsanız daha düşük bir ekran çözünürlüğü kullanmayı deneyin.
- Kayıt sırasında ekranın döndürülmesi desteklenmez. Kayıt sırasında ekran dönüyorsa kayda ekranın bir kısmı dahil edilmez.
Seçenekler | Açıklama |
---|---|
--help
|
Komut söz dizimini ve seçeneklerini göster |
--size widthxheight
|
Video boyutunu ayarlayın: 1280x720 . Varsayılan değer, cihazın yerel ekran çözünürlüğüdür (destekleniyorsa), desteklenmiyorsa 1280x720. En iyi sonuçlar için cihazınızın Gelişmiş Video Kodlama (AVC) kodlayıcısı tarafından desteklenen bir boyut kullanın. |
--bit-rate rate |
Videonun bit hızını saniye başına megabit cinsinden ayarlayın. Varsayılan değer 20 Mb/sn'dir.
Video kalitesini iyileştirmek için bit hızını artırabilirsiniz ancak bu işlem, daha büyük film dosyaları oluşturur. Aşağıdaki örnekte kayıt bit hızı 6 Mb/sn olarak ayarlanmıştır:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
Maksimum kayıt süresini saniye cinsinden ayarlayın. Varsayılan ve maksimum değer 180'dir (3 dakika). |
--rotate |
Çıktıyı 90 derece döndürün. Bu özellik deneyseldir. |
--verbose |
Komut satırı ekranında günlük bilgilerini görüntüleyin. Bu seçeneği ayarlamazsanız yardımcı program çalışırken herhangi bir bilgi göstermez. |
Uygulamalar için ART profillerini okuma
Android 7.0 (API düzeyi 24) sürümünden başlayarak Android Runtime (ART), yüklü uygulamaların yürütme profillerini toplar. Bu profiller, uygulama performansını optimize etmek için kullanılır. Hangi yöntemlerin sıklıkla yürütüldüğünü ve uygulamanın başlatılması sırasında hangi sınıfların kullanıldığını anlamak için toplanan profilleri inceleyin.
Not: Yürütme profilinin dosya adını almak için yalnızca dosya sistemine kök erişiminiz varsa (ör. bir emülatörde) mümkündür.
Profil bilgilerinin metin biçimini oluşturmak için aşağıdaki komutu kullanın:
adb shell cmd package dump-profiles package
Oluşturulan dosyayı almak için:
adb pull /data/misc/profman/package.prof.txt
Test cihazlarını sıfırlama
Uygulamanızı birden fazla test cihazında test ediyorsanız testler arasında cihazınızı sıfırlamak (ör. kullanıcı verilerini kaldırmak ve test ortamını sıfırlamak için) yararlı olabilir. Aşağıda gösterildiği gibi testharness
adb
kabuk komutunu kullanarak Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran bir test cihazını fabrika ayarlarına sıfırlayabilirsiniz:
adb shell cmd testharness enable
Cihaz, testharness
uygulamasını kullanarak geri yüklenirken, kalıcı konumdaki geçerli iş istasyonunda hata ayıklamaya olanak tanıyan RSA anahtarını otomatik olarak yedekler. Yani, cihaz sıfırlandıktan sonra iş istasyonu, yeni bir anahtarı manuel olarak kaydetmeden hata ayıklama yapmaya ve cihaza adb
komutları göndermeye devam edebilir.
Ayrıca, bir cihazı geri yüklemek için testharness
kullanmak, uygulamanızı test etmeyi daha kolay ve daha güvenli hale getirmek üzere aşağıdaki cihaz ayarlarını da değiştirir:
- Cihaz, ilk cihaz kurulum sihirbazlarının görünmemesi için belirli sistem ayarlarını yapar. Yani cihaz, uygulamanızı hızlıca yükleyebileceğiniz, hata ayıklayabileceğiniz ve test edebileceğiniz bir duruma girer.
- Ayarlar:
- Kilit ekranını devre dışı bırakır.
- Acil durum uyarılarını devre dışı bırakır.
- Hesaplar için otomatik senkronizasyonu devre dışı bırakır.
- Otomatik sistem güncellemelerini devre dışı bırakır.
- Diğer:
- Önceden yüklenmiş güvenlik uygulamalarını devre dışı bırakır.
Uygulamanızın testharness
komutunun varsayılan ayarlarını algılayıp bunlara uyum sağlaması gerekiyorsa
ActivityManager.isRunningInUserTestHarness()
seçeneğini kullanın.
sqlite
sqlite3
, SQLite veritabanlarını incelemek için sqlite
komut satırı programını başlatır.
Bir tablonun içeriğini yazdırmak için .dump
ve mevcut bir tablonun SQL CREATE
ifadesini yazdırmak için .schema
gibi komutlar içerir.
SQLite komutlarını komut satırından da yürütebilirsiniz.
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
Not: SQLite veritabanına yalnızca dosya sistemine kök erişiminiz varsa (ör. bir emülatörde) erişebilirsiniz.
Daha fazla bilgi için sqlite3
komut satırı belgelerini inceleyin.
adb USB arka uçları
Adb sunucusu, iki arka uç aracılığıyla USB yığınıyla etkileşim kurabilir. OS'nin yerel arka ucunu (Windows, Linux veya macOS) ya da libusb
arka ucunu kullanabilir.
attach
, detach
ve USB hızı algılama gibi bazı özellikler yalnızca libusb
arka uç kullanıldığında kullanılabilir.
ADB_LIBUSB
ortam değişkenini kullanarak bir arka uç seçebilirsiniz.
Ayarlanmazsa adb varsayılan arka ucunu kullanır. Varsayılan davranış, işletim sistemine göre değişir. ADB v34'ten itibaren, liubusb
arka ucu, varsayılan olarak yerel arka ucunun kullanıldığı Windows dışındaki tüm işletim sistemlerinde varsayılan olarak kullanılır. ADB_LIBUSB
ayarlanırsa yerel arka uç veya libusb
'un kullanılıp kullanılmayacağını belirler. adb ortam değişkenleri hakkında daha fazla bilgi için adb manuel sayfasına bakın.
adb mDNS arka uçları
ADB, sunucuyu ve cihazları otomatik olarak bağlamak için çoklu yayın DNS protokolünü kullanabilir. ADB sunucusu, Bonjour (Apple'ın mdnsResponder) ve Openscreen olmak üzere iki arka ucla birlikte gönderilir.
Bonjour arka ucunun, ana makinede çalışan bir daemon'a ihtiyacı vardır.
macOS'te Apple'ın yerleşik daemon'ı her zaman çalışır ancak Windows ve Linux'ta kullanıcının mdnsd
daemon'ının çalışır durumda olduğundan emin olması gerekir.
adb mdns check
komutu hata döndürüyorsa ADB'nin Bonjour arka ucunu kullandığı ancak Bonjour daemon'ının çalışmadığı muhtemeldir.
Openscreen arka ucunun makinede çalışan bir daemon'a ihtiyacı yoktur. macOS'te Openscreen arka ucu desteği, ADB 35 sürümünden itibaren sunulur. Windows ve Linux, ADB 34 sürümü itibarıyla desteklenmektedir.
ADB varsayılan olarak Bonjour arka ucunu kullanır. Bu davranış, ADB_MDNS_OPENSCREEN
ortam değişkeni kullanılarak değiştirilebilir (1
veya 0
olarak ayarlanır). Daha fazla bilgi için ADB manuel sayfasına bakın.