Android Hata Ayıklama Köprüsü (adb)

Android Debug Bridge (adb), bir cihazla iletişim kurmanıza olanak tanıyan ç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.
  • Bir cihazda komutları çalıştıran bir daemon (adbd). 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/ adresine yükleyen SDK Yöneticisi ile indirin. Bağımsız Android SDK Platform Tools paketini 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 nasıl çalışır?

Bir adb istemcisini başlattığınızda istemci, önce zaten çalışan 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 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 5555 ila 5585 aralığındaki tek sayılı 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, konsol: 5554
Emülatör 1, adb: 5555
Emülatör 2, konsol: 5556
Emülatör 2, adb: 5557
vb.

Gösterildiği gibi, 5555 numaralı bağlantı noktasında adb adresine bağlı olan emülatör, konsolu 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ştirme

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 yürüterek 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ı, cihazın kilidini açamadığınız ve iletişim kutusunu onaylamadığınız sürece USB hata ayıklama ve diğer adb komutlarının yürütülememesini sağlayarak kullanıcı cihazlarını korur.

USB üzerinden bir cihaza bağlanma hakkında daha fazla bilgi edinmek için Uygulamaları donanım cihazında çalıştırma başlıklı makaleyi inceleyin.

Kablosuz ağ üzerinden bir cihaza bağlanma

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 kılavuzuna 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, hata ayıklama yapılabilir uygulamanızı USB üzerinden fiziksel olarak bağlamanıza gerek kalmadan 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ıklamayı kullanmaya başlamadan önce şunları 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 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:

  1. Cihazınızda geliştirici seçeneklerini etkinleştirin.

  2. Android Studio'yu açın ve çalıştırma yapılandırmaları menüsünden Kablosuz

    Çalışma yapılandırmaları açılır menüsü
    Şekil 1. Yapılandırmaları çalıştır menüsü.

    Şekil 2'de gösterildiği gibi Kablosuz ağ üzerinden cihaz eşleme penceresi açılır.

    Cihazları kablosuz ağ üzerinden eşleme pop-up penceresinin ekran görüntüsü
    Şekil 2. QR kodu veya eşleme kodunu kullanarak cihazları eşlemek için pop-up pencere.
  3. Cihazınızda Kablosuz hata ayıklama'ya dokunup cihazınızı eşleyin:

    Kablosuz hata ayıklama sistemleri ayarını gösteren bir Pixel telefonun ekran görüntüsü.
    Şekil 3. Google Pixel telefondaki Kablosuz hata ayıklama ayarının ekran görüntüsü.
    1. 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.

    2. 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.

      Örnek PIN kodu girişinin ekran görüntüsü
      Şekil 4. Altı basamaklı kod girişi örneği.
  4. Cihazınız eşlendikten sonra uygulamanızı cihazınıza dağıtmayı deneyebilirsiniz.

    Farklı bir cihazı eşlemek veya iş istasyonunuzdaki mevcut cihazı unutmak için cihazınızda Kablosuz hata ayıklama'ya gidin. Eşlenen cihazlar bölümünde iş istasyonunuzun adına dokunup Unut'u seçin.

  5. 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.

    Google Pixel telefondaki hızlı ayarlar geliştirici kutularının ekran görüntüsü.
    Şekil 5. Hızlı ayarlar geliştirici kutuları ayarı, kablosuz hata ayıklama özelliğini hızlı bir şekilde etkinleştirmenize ve devre dışı bırakmanıza olanak tanır.

Komut satırını 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:

  1. Daha önce açıklandığı şekilde cihazınızda geliştirici seçeneklerini etkinleştirin.

  2. Daha önce açıklandığı gibi cihazınızda Kablosuz hata ayıklama'yı etkinleştirin.

  3. İş istasyonunuzda bir terminal penceresi açın ve android_sdk/platform-tools'ye gidin.

  4. 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.

  5. İş istasyonunuzun terminalinde adb pair ipaddr:port komutunu çalıştırın. Yukarıdaki IP adresini ve bağlantı noktası numarasını kullanın.

  6. İstendiğinde aşağıdaki gibi eşleme kodunu girin.

    Komut satırında eşlemenin ekran görüntüsü.
    Şekil 6. Cihazınızın başarıyla eşlendiğini belirten bir mesaj gösterilir.

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ıysa adb 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. Bununla birlikte, fiziksel USB üzerinden *ilk* bağlantı da gereklidir.

Not: Aşağıdaki talimatlar, Android 10 (API düzeyi 29) veya daha eski 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 cihazla USB üzerinden iletişim kurar ancak adb'ü 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:

  1. Android cihazınızı ve adb ana bilgisayarınızı ortak bir kablosuz ağa bağlayın.
  2. Not: Tüm erişim noktalarının uygun olmadığını unutmayın. Güvenlik duvarı adb'ü desteklemek için doğru şekilde yapılandırılmış bir erişim noktası kullanmanız gerekebilir.

  3. Cihazı USB kablosuyla ana bilgisayara bağlayın.
  4. Hedef cihazı, 5555 numaralı bağlantı noktasında TCP/IP bağlantısı dinleyecek şekilde ayarlayın:
    adb tcpip 5555
    
  5. USB kablosunu hedef cihazdan çıkarın.
  6. 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.
  7. Cihazın IP adresine göre bağlanın:
    adb connect device_ip_address:5555
    
  8. Ana bilgisayarınızın hedef cihaza bağlı olduğunu onaylayın:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Cihazınız adb'e bağlandı.

Cihazınızla adb bağlantısı kesilirse:

  • Barındırma 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 yöntem işe yaramazsa adb ana makinenizi sıfırlayın:
    adb kill-server
    

    Ardından baştan başlayın.

Cihaz sorgulaması

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
  

adb, yanıt olarak her cihaz için şu durum bilgilerini 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: Cihaz adb'a bağlı değil veya yanıt vermiyor.
    • device: Cihaz, adb sunucusuna bağlıdır. Cihaz, sistem henüz başlatılırken adb'e bağlandığından bu durumun Android sisteminin tamamen başlatılıp çalışmaya başladığı anlamına gelmediğini unutmayın. Bu, cihazın önyükleme işleminden sonraki normal çalışma durumudur.
    • no device: Bağlı cihaz yok.
  • Açıklama: -l seçeneğini eklerseniz devices komutu size cihazın ne olduğunu söyler. Bu bilgi, bağlı birden fazla cihazınız olduğunda onları birbirinden ayırt etmenize yardımcı olur.

Aşağıdaki örnekte devices komutu ve çıktısı gösterilmektedir. Üç cihaz çalışıyor. 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 komutunda, masaüstünüzde görünen öykünücülerin adb devices çıkışında görünmemesine neden olan bir özel durum komut dizisi vardır. 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. 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örlerin kendi bağlantı noktalarını seçmesine izin vermek ve aynı anda en fazla 16 emülatör çalıştırmaktı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 gösterilen sırayla aşağıdaki komutları 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:

  1. Hedefin seri numarasını almak için devices komutunu kullanın.
  2. Seri numarasını öğrendikten sonra seri numarasını belirtmek için adb komutlarıyla birlikte -s seçeneğini kullanın.
    1. Çok sayıda adb komutu gönderecekseniz $ANDROID_SERIAL ortam değişkenini seri numarasını içerecek şekilde ayarlayabilirsiniz.
    2. Hem -s hem de $ANDROID_SERIAL kullanırsanız -s, $ANDROID_SERIAL'u geçersiz kılar.

Aşağıdaki örnekte, bağlı cihazların listesi elde edilir 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 simgesini kullanın. Bu özellik, uygulamanız için belirli bir cihaza ait tüm APK'ları Play Console'dan indirip bir emülatöre veya 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, cihazdaki belirli bir bağlantı noktasına ne 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

Dosyaları bir cihaza kopyalamak veya bir cihazdan 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 durumla karşılaşabilirsiniz.

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

Komutların çoğu için --help bağımsız değişkeni aracılığıyla yardım alabilirsiniz. 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 adresinden 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ığından ve cihaz adb shell setprop key two words değerini gördüğünden 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'. Kaçış karakteri kullanmak da bir seçenektir ancak genellikle iki kez tırnak içine almak 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 çeşitli sistem işlemleri (ör. etkinlik başlatma, bir işlemi zorla durdurma, intent yayınlama, cihaz ekranı özelliklerini değiştirme) yapmak için komutlar verebilirsiniz.

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

Tablo 1. Kullanılabilen etkinlik yöneticisi komutları

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:

  • -D: Hata ayıklamayı etkinleştirin.
  • -W: Lansmanın tamamlanmasını bekleyin.
  • --start-profiler file: Profil aracını başlatın ve sonuçları file'a gönderin.
  • -P file: --start-profiler ile aynıdır ancak uygulama boştayken profil oluşturma işlemi durur.
  • -R count: Etkinliği count kez başlatın. Her tekrardan önce, en üstteki etkinlik tamamlanır.
  • -S: Etkinliği başlatmadan önce hedef uygulamayı zorla durdurun.
  • --opengl-trace: OpenGL işlevlerinin izlenmesini etkinleştirin.
  • --user user_id | current: Hangi kullanıcı olarak çalıştırılacağını belirtin. Belirtilmediyse mevcut kullanıcı olarak çalıştırılı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:

  • --user user_id | current: Hangi kullanıcı olarak çalıştırılacağını belirtin. Belirtilmemişse mevcut kullanıcı olarak çalıştırılı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 kapatılması güvenli olan ve kullanıcı deneyimini etkilemeyecek işlemleri kapatır.

Seçenekler şunlardır:

  • --user user_id | all | current: Hangi kullanıcının işlemlerinin sonlandırılacağını belirtin. Belirtilmezse tüm kullanıcıların işlemlerini sonlandırın.
kill-all Tüm arka plan işlemlerini sonlandırın.
broadcast [options] intent Yayın intent'i gönderin.

Intent bağımsız değişkenleri spesifikasyonu'na bakın.

Seçenekler şunlardır:

  • [--user user_id | all | current]: Hangi kullanıcıya gönderileceğini belirtin. Belirtilmezse tüm kullanıcılara gönderilir.
instrument [options] component Instrumentation örneğiyle izlemeye başlayın. Genellikle component hedefi, test_package/runner_class formudur.

Seçenekler şunlardır:

  • -r: Ham sonuçları yazdırın (aksi takdirde report_key_streamresult kodunun çözülmesi gerekir). Performans ölçümleri için ham çıkış oluşturmak üzere [-e perf true] ile birlikte kullanın.
  • -e name value: name bağımsız değişkenini value olarak ayarlayın. Test çalıştırıcıları için yaygın bir form -e testrunner_flag value[,value...]'tür.
  • -p file: Profil oluşturma verilerini file dosyasına yazın.
  • -w: Dönmeden önce enstrümantasyonun tamamlanmasını bekleyin. Test çalıştırıcıları için gereklidir.
  • --no-window-animation: Çalışırken pencere animasyonlarını devre dışı bırakın.
  • --user user_id | current: Hangi kullanıcı enstrümanının çalışacağını belirtin. Belirtilmezse geçerli kullanıcıda çalıştırılı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:

  • --user [user_id | current]: Bir işlem adı sağlarken, dökümü yapılacak işlemin kullanıcısını belirtin. Belirtilmezse mevcut kullanıcı kullanılır.
  • -b [| png | jpg | webp]: Grafik belleğindeki bitmap'leri dökme (API düzeyi 35 ve üzeri). İsteğe bağlı olarak, dökümün biçimini belirtin (varsayılan olarak PNG).
  • -n: Yönetilen yığın yerine yerel yığın dökümü alın.
set-debug-app [options] package package uygulamasını hata ayıklama moduna ayarlayın.

Seçenekler şunlardır:

  • -w: Uygulama başladığında hata ayıklayıcıyı bekleyin.
  • --persistent: Bu değeri korur.
clear-debug-app Hata ayıklama için daha önce ayarlanan paketi set-debug-app ile temizleyin.
monitor [options] Kilitlenme veya ANR izlemeye başlayın.

Seçenekler şunlardır:

  • --gdb: Çökme/ANR sırasında belirli bir bağlantı noktasında gdbserv'ı başlatın.
screen-compat {on | off} package package'nin ekran uyumluluğu modunu kontrol edin.
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:
am display-size 1280x800

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 ekran ortamını taklit ederek ve bunun tam tersini yaparak uygulamanızı farklı ekran yoğunluklarında test etmek için yararlıdır.

Örnek:
am display-density 480

to-uri intent Belirtilen intent spesifikasyonunu URI olarak yazdırın.

Intent bağımsız değişkenleri spesifikasyonu'na bakın.

to-intent-uri intent Belirtilen intent spesifikasyonunu intent: URI'si olarak yazdırın.

Intent bağımsız değişkenleri spesifikasyonu'na bakın.

Intent 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 arayın (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

Tablo 2. Kullanılabilen paket yöneticisi komutları

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:

  • -f: İlişkili dosyayı görüntüleyin.
  • -d: Yalnızca devre dışı paketleri gösterecek şekilde filtreleyin.
  • -e: Yalnızca etkin paketleri gösterecek şekilde filtreleyin.
  • -s: Yalnızca sistem paketlerini gösterecek şekilde filtreleyin.
  • -3: Yalnızca üçüncü taraf paketlerini gösterecek şekilde filtreleyin.
  • -i: Paketlerin yükleyicisine bakın.
  • -u: Kaldırılan paketleri dahil edin.
  • --user user_id: Sorgulanacak kullanıcı alanı.
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:

  • -g: Gruplara göre düzenleyin.
  • -f: Tüm bilgileri yazdırın.
  • -s: Kısa özet.
  • -d: Yalnızca tehlikeli izinleri listeleyin.
  • -u: Yalnızca kullanıcıların göreceği izinleri listeleyin.
list instrumentation [options] Tüm test paketlerini listeleyin.

Seçenekler:

  • -f: Test paketinin APK dosyasını listeleyin.
  • target_package: Yalnızca bu uygulamanın test paketlerini listeleyin.
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'nin APK'sının yolunu yazdırın.
install [options] path path ile belirtilen bir paketi sisteme yükleyin.

Seçenekler:

  • -r: Mevcut bir uygulamayı verilerini koruyarak yeniden yükleyin.
  • -t: Test APK'larının yüklenmesine izin verin. Gradle, yalnızca uygulamanızı çalıştırdığınızda veya uygulamanızda hata ayıklama yaptığınızda ya da Android Studio Derle > APK Derle komutunu kullandığınızda bir test APK'sı oluşturur. APK, geliştirici önizleme SDK'sı kullanılarak oluşturulduysa test APK'sı yüklüyorsanız install komutuna -t seçeneğini eklemeniz gerekir.
  • -i installer_package_name: Yükleyici paket adını belirtin.
  • --install-location location: Aşağıdaki değerlerden birini kullanarak yükleme konumunu ayarlayın:
    • 0: Varsayılan yükleme konumunu kullanın.
    • 1: Dahili cihaz depolama alanına yükleyin.
    • 2: Harici medyaya yükleme.
  • -f: Paketi dahili sistem belleğine yükleyin.
  • -d: Sürüm kodunun eski sürüme geçirilmesine izin verin.
  • -g: Uygulama manifestinde listelenen tüm izinleri verin.
  • --fastdeploy: Yalnızca APK'nın değişen bölümlerini güncelleyerek yüklü bir paketi hızlıca güncelleyin.
  • --incremental: Uygulamayı başlatmak için APK'nın yeterli kısmını yükler ve kalan verileri arka planda aktarır. Bu özelliği kullanmak için APK'yı imzalamanız, bir APK İmza Şeması v4 dosyası oluşturmanız ve bu dosyayı APK ile aynı dizine yerleştirmeniz gerekir. Bu özellik yalnızca belirli cihazlarda desteklenir. Bu seçenek, adb'ü özelliği kullanmaya zorlar veya desteklenmiyorsa neden başarısız olduğuyla ilgili ayrıntılı bilgilerle birlikte başarısız olur. APK'ya erişim izni vermeden önce APK'nın tamamen yüklenmesini beklemek için --wait seçeneğini ekleyin.

    --no-incremental, adb'un bu özelliği kullanmasını engeller.

uninstall [options] package Bir paketi sistemden kaldırır.

Seçenekler:

  • -k: Paket kaldırıldıktan sonra veri ve önbellek dizinlerini saklayın.
  • --user user_id: Paketin kaldırıldığı kullanıcıyı belirtir.
  • --versionCode version_code: Yalnızca uygulamada belirtilen sürüm kodu varsa kaldırır.
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 ("package/class" olarak yazılır).
disable-user [options] package_or_component

Seçenekler:

  • --user user_id: Devre dışı bırakılacak kullanıcı.
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 uygulamanın iznini iptal etme. Android 6.0 (API seviyesi 23) ve sonraki sürümleri çalıştıran cihazlarda, uygulama manifest dosyasında tanımlanan herhangi bir izin iptal edilebilir. 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:
  • 0: Otomatik: En iyi konuma sisteme karar verin.
  • 1: Dahili: Dahili cihaz depolama alanına yüklenir.
  • 2: Harici: Harici medyaya yükleyin.

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 Mevcut yükleme konumunu döndürür. Döndürülen değerler:
  • 0 [auto]: En iyi konuma sisteme karar verdir
  • 1 [internal]: Dahili cihaz depolama alanına yükleme
  • 2 [external]: Harici medyaya yükleme
set-permission-enforced permission [true | false] Belirtilen iznin zorunlu kılınıp kılınmayacağı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, 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 tarafından desteklenen 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 şekilde tanımlanır:

  • none: Bu alan için hiçbir şey kaydedilmedi
  • verified: Alan başarıyla doğrulandı
  • approved: genellikle kabuk üzerinden zorunlu onay
  • denied: genellikle kabuk üzerinden zorla reddedildi
  • migrated: Eski bir yanıttan korunan doğrulama
  • restored: Kullanıcı verilerinin geri yüklenmesinden korunan doğrulama
  • legacy_failure: Eski bir doğrulayıcı tarafından reddedildi, nedeni bilinmiyor
  • system_configured: cihaz yapılandırması tarafından otomatik olarak onaylandı
  • >= 1024: Cihaz doğrulayıcıya özgü özel hata kodu

Seçenekler şunlardır:

  • --user user_id: Kullanıcı seçimlerini içerir. Yalnızca otomatik doğrulama alanlarını değil, tüm alanları dahil edin.
reset-app-links [options] [package]

Belirtilen paketin veya belirtilmemişse tüm paketlerin alan doğrulama durumunu sıfırlayın.

  • package: Sıfırlanacak paket veya tüm paketleri sıfırlamak için "all" (tümü)

Seçenekler şunlardır:

  • --user user_id: Kullanıcı seçimlerini içerir. Yalnızca otomatik doğrulama alanlarını değil, tüm alanları dahil edin.
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 yanıt kaydetmediyse gönderilir.

  • --re-verify: Paket yanıt kaydedmiş olsa bile gönder
set-app-links [--package package] state domains

Bir paket için alanın durumunu manuel olarak ayarlama Bunun çalışması için alanın paket tarafından autoVerify olarak tanımlanması gerekir. Bu komut, uygulanamayan alanlar için hata bildirmez.

  • --package package: Ayarlanacak paket veya tüm paketleri ayarlamak için "all" (tümü)
  • state: Alanları ayarlamak için kullanılacak kod. Geçerli değerler:
    • STATE_NO_RESPONSE (0): Hiçbir yanıt kaydedilmemiş gibi sıfırlanır.
    • STATE_SUCCESS (1): Alanı, alan doğrulama aracısı tarafından başarıyla doğrulanmış Alan doğrulama aracının bu ayarı geçersiz kılabileceğini unutmayın.
    • STATE_APPROVED (2): Alanı her zaman onaylanmış olarak değerlendirir ve alan doğrulama aracısının alanı değiştirmesini engeller.
    • STATE_DENIED (3): Alanı her zaman reddedilmiş olarak değerlendirir ve alan doğrulama aracının bunu değiştirmesini engeller.
  • domains: Değiştirilecek alanların boşlukla ayrılmış listesi veya her alanın değiştirilmesi için "all".
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 hata bildirmez.

  • --user user_id: Seçimlerini değiştirmek istenen kullanıcı
  • --package package: Ayarlanacak paket
  • enabled: alanın onaylanıp onaylanmayacağı
  • domains: Değiştirilecek alanların boşlukla ayrılmış listesi veya her alanı değiştirmek için "all"
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 hata bildirmez.

  • --user user_id: Seçimlerini değiştirmek istenen kullanıcı
  • --package package: Ayarlanacak paket
  • enabled: alanın onaylanıp onaylanmayacağı
  • domains: Değiştirilecek alanların boşlukla ayrılmış listesi veya her alanı değiştirmek için "all"
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.

  • --user user_id: Seçimlerini değiştirmek istenen kullanıcı
  • --package package: Ayarlanacak paket veya tüm paketleri ayarlamak için "tümü". Paket belirtilmezse paketler sıfırlanır.
  • allowed: Paketin otomatik olarak doğrulanmış bağlantıları açmasına izin vermek için doğru, devre dışı bırakmak için yanlış değerini alır.
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.

  • --user user_id: Sorgulanacak kullanıcı
  • --package package: isteğe bağlı olarak bir paket tarafından beyan edilen tüm web alanları için de yazdırın veya tüm paketleri yazdırmak için "all" (tüm) değerini kullanın
  • domains: Sorgulanacak alanların boşlukla ayrılmış listesi

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 cihazdaki bir politikanın durum verilerini değiştirmek için bu aracı kullanın.

Kabuktayken dpmsöz dizimi şu şekildedir:

dpm command

Uzaktan kabuğa girmeden doğrudan adb cihaz politikası yöneticisi komutu da verebilirsiniz:

adb shell dpm command

Tablo 3. Kullanılabilir cihaz politikası yöneticisi komutları

Komut Açıklama
set-active-admin [options] component component dosyasını etkin yönetici olarak ayarlar.

Seçenekler şunlardır:

  • --user user_id: Hedef kullanıcıyı belirtin. Mevcut kullanıcıyı seçmek için --user current parametresini de iletebilirsiniz.
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:

  • --user user_id: Hedef kullanıcıyı belirtin. Mevcut kullanıcıyı seçmek için --user current değerini de iletebilirsiniz.
  • --name name: Kullanıcılar tarafından okunabilen kuruluş adını belirtin.
set-device-owner [options] component component'yi etkin yönetici, paketini de cihaz sahibi olarak ayarlayın.

Seçenekler şunlardır:

  • --user user_id: Hedef kullanıcıyı belirtin. Mevcut kullanıcıyı seçmek için --user current parametresini de iletebilirsiniz.
  • --name name: Kullanıcılar tarafından okunabilen kuruluş adını belirtin.
remove-active-admin [options] component Etkin bir yöneticiyi devre dışı bırakma Uygulama, manifest dosyasında android:testOnly değerini belirtmelidir. Bu komut, cihaz ve profil sahiplerini de kaldırır.

Seçenekler şunlardır:

  • --user user_id: Hedef kullanıcıyı belirtin. Mevcut kullanıcıyı seçmek için --user current parametresini de iletebilirsiniz.
clear-freeze-period-record Cihazın, sistem OTA güncellemeleri için daha önce ayarlanmış dondurma dönemlerine ait kaydını silin. Bu, dondurma dönemlerini yöneten uygulamalar geliştirirken cihaz planlama kısıtlamalarını önlemek 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ınabilecek hale getirmeye zorlayın. Bağlantı veya DNS günlükleri varsa DPC, onNetworkLogsAvailable() geri çağırma işlevini 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

screencap'ü komut satırından 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.

Kabukta aşağıdaki söz dizimini kullanın:

screenrecord [options] filename

screenrecord'ü komut satırından 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 screenrecord komutunu çalıştırarak videoyu kaydedin. Ardından, videoyu cihazdan ana bilgisayara indirmek için pull komutunu çalıştırın. Aşağıda bir kayıt oturumu örneği verilmiştir:

$ 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 kaydı ile ilgili sorun yaşarsanı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.

Tablo 4. screenrecord seçenekleri

Seçenekler Açıklama
--help Komut söz dizimini ve seçeneklerini görüntüleme
--size widthxheight Video boyutunu ayarlayın: 1280x720. Varsayılan değer, cihazın doğal ekran çözünürlüğüdür (destekleniyorsa). Desteklenmiyorsa 1280x720'dir. 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 artırmak için bit hızını artırabilirsiniz ancak bu işlem, film dosyalarının daha büyük olmasına neden olur. 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 profili dosya adını yalnızca dosya sistemine kök erişiminiz varsa (ör. bir emülatörde) alabilirsiniz.

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. Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran bir test cihazını, aşağıdaki gibi testharness adb kabuk komutunu kullanarak fabrika ayarlarına sıfırlayabilirsiniz:

adb shell cmd testharness enable

Cihaz, testharness kullanılarak geri yüklenirken mevcut iş istasyonu üzerinden hata ayıklama yapılmasına olanak tanıyan RSA anahtarını kalıcı bir konumda otomatik olarak yedeklemektedir. 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, uygulamanızı test etmeye devam etmeyi kolaylaştırmak ve daha güvenli hale getirmek için bir cihazı testharness ile geri yüklediğinizde aşağıdaki cihaz ayarları da değiştirilir:

  • 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, USB yığınıyla iki arka uç üzerinden 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.

adb Burst Modu (ADB 36.0.0'dan itibaren)

Patlama Modu, ADB'nin cihaz önceki pakete yanıt vermeden önce bile cihaza paket göndermeye devam etmesini sağlayan deneysel bir özelliktir. Bu, büyük dosyaları aktarırken ADB'nin veri aktarım hızını önemli ölçüde artırır ve hata ayıklama sırasında gecikmeyi azaltır.

Seri Çekim Modu varsayılan olarak devre dışıdır. Özelliği etkinleştirmek için aşağıdakilerden birini yapın:

  • ADB_DELAYED_ACK ortam değişkenini 1 olarak ayarlayın.
  • Android Studio'da Dosya (veya macOS'te Android Studio) > Ayarlar > Derleme, Yürütme, Dağıtım > Hata Ayıklama Aracı'na gidin ve ADB Sunucusu Patlama Modu'nu Etkin olarak ayarlayın.