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

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:

  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

    Yapılandırmaları çalıştırma 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.

    Kablosuz ağ üzerinden cihaz 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 dokunun ve 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 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.

  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ı 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. 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:

  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ığına dikkat edin. Güvenlik duvarı adb'ü desteklemek için doğru şekilde yapılandırılmış bir erişim noktası kullanmanız gerekebilir.

  3. Cihazı bir USB kablosuyla ana bilgisayara bağlayın.
  4. Hedef cihazı, 5555 numaralı bağlantı noktasından TCP/IP bağlantısını 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 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: 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ı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 eklerseniz devices 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:

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

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 gibi, ancak profil oluşturma işlemi uygulama boşta kaldığında 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ının olarak çalıştırılacağını belirtin. Belirtilmemişse geçerli kullanıcı olarak çalıştırın.
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 öldürülmesi güvenli olan ve kullanıcı deneyimini etkilemeyen işlemleri sona erdirir.

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

  • [--user user_id | all | current]: Hangi kullanıcıya gönderileceğini belirtin. Belirtilmezse tüm kullanıcılara gönderin.
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ğinden (API düzeyi 35 ve üstü) bit eşlemlerin dökümünü al. İ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 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:

  • --gdb: Çökme/ANR sırasında belirli bir bağlantı noktasında gdbserv'ı başlatın.
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:
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 bir ekran ortamını (veya tam tersi) taklit ederek uygulamanızı farklı ekran yoğunluklarında test etmenize yardımcı olur.

Ö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 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

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: Paketler için yükleyiciye 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 öğesinin APK yolunu yazdır.
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 ver. 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 komutuyla birlikte -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 ver.
  • -g: Uygulama manifestinde listelenen tüm izinleri verin.
  • --fastdeploy: APK'nın yalnızca değişen bölümlerini güncelleyerek yüklü bir paketi hızlı bir şekilde güncelleyin.
  • --incremental: Uygulamayı başlatmaya yetecek kadar APK yüklerken geri kalan verilerin akışı arka planda gerçekleşir. Bu özelliği kullanmak için APK'yı imzalamanız, 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 uygulama belirtilen sürüm koduna sahipse kaldırılı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 ("paket/sınıf" 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 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:
  • 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 Geçerli 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] 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:

  • none: Bu alan için hiçbir şey kaydedilmedi
  • verified: Alan başarıyla doğrulandı
  • approved: Zorunlu onay, genellikle kabuk üzerinden
  • denied: zorla reddedildi, genellikle kabuk aracılığıyla
  • migrated: Eski bir yanıttan korunan doğrulama
  • restored: Kullanıcı verilerini geri yükleme işlemi için korunan doğrulama
  • legacy_failure: eski bir doğrulayıcı tarafından reddedildi, bilinmeyen neden
  • 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 dahil edin. Yalnızca otomatik doğrula olanları değil, tüm alan adlarını 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 bir yanıt kaydetmediyse gönderir.

  • --re-verify: Paket yanıt kaydedmiş olsa bile gönder
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.

  • --package package: ayarlanacak paket veya tüm paketleri ayarlamak için "tümü"
  • state: Alanları ayarlamak için kullanılacak kod. Geçerli değerler şunlardır:
    • 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ısının bunu geçersiz kılabileceğini unutmayın.
    • STATE_APPROVED (2): Alanı her zaman onaylanmış olarak kabul ederek alan doğrulama aracısının alan adını değiştirmesini önler.
    • 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

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.

  • --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 alan adlarının boşlukla ayrılmış listesi veya tüm alan adlarını değiştirmek için "tümü"
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.

  • --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 alan adlarının boşlukla ayrılmış listesi veya tüm alan adlarını değiştirmek için "tümü"
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ü"; hiçbir 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: İsteğe bağlı olarak paket tarafından belirtilen tüm web alanları için yazdırma yapabilir, tüm paketleri yazdırmak için "tümü" seçeneğini belirleyebilirsiniz
  • 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 bir politikanın cihazdaki durum verilerini değiştirmek için bu aracı kullanın.

Kabuktayken dpmsöz dizimi:

dpm command

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

adb shell dpm command

Tablo 3. Kullanılabilen cihaz politika 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 bildirmelidir. Bu komut, cihaz ve profil sahiplerini de kaldırır.

Seçenekler:

  • --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, 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.

Tablo 4. screenrecord seçenekleri

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.