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 uygulama hatalarını ayıklama gibi çeşitli cihaz işlemlerini kolaylaştırır. adb, cihazda çeşitli komutları çalıştırmak için kullanabileceğiniz bir Unix kabuğuna erişim sağlar. Bu, üç bileşen içeren bir istemci-sunucu programıdır:

  • Komut gönderen bir istemci. İstemci, geliştirme makinenizde çalışır. adb komutu vererek 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 arka plan programı arasındaki iletişimi yöneten bir sunucu. Sunucu, geliştirme makinenizde arka plan işlemi olarak çalışır.

adb, Android SDK Platform Araçları paketinde yer almaktadır. Bu paketi, android_sdk/platform-tools/ adresinden yükleyen SDK Yöneticisi ile indirin. Bağımsız Android SDK Platform Araçları paketini istiyorsanız buradan indirebilirsiniz.

adb üzerinden kullanım için bir cihazı bağlamayla ilgili bilgi (Sık karşılaşılan sorunları gidermek için Bağlantı Asistanı'nın nasıl kullanılacağı da dahil) hakkında bilgi için Donanım cihazında uygulama çalıştırma bölümüne bakın.

Adb'nin işleyiş şekli

Bir adb istemcisini başlattığınızda istemci öncelikle zaten çalışmakta olan bir adb sunucu işlemi olup olmadığını kontrol eder. Yoksa sunucu işlemi başlatılır. Sunucu başladığında, yerel TCP bağlantı noktası 5037'ye 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 arka plan programı (adbd) bulduğunda, bu bağlantı noktasıyla bir bağlantı kurar.

Her emülatör, bir çift sıralı bağlantı noktası kullanır. Bu, konsol bağlantıları için çift numaralı bağlantı noktası, adb bağlantıları için ise tek numaralı bağlantı noktasıdır. Ö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 cihazlara bağlantı kurduğunda, bu cihazlara erişmek için adb komutlarını kullanabilirsiniz. Sunucu, cihazlarla kurulan bağlantıları yönettiği ve birden fazla adb istemcisinden gelen komutları işlediği için herhangi bir cihazı herhangi bir istemciden veya bir komut dosyasından kontrol edebilirsiniz.

Cihazınızda adb hata ayıklama özelliğini etkinleştirin

Adb'yi USB üzerinden bağlı bir cihazla kullanmak için cihazın sistem ayarlarında, Geliştirici seçenekleri'nin altında 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. 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 sürümleri çalıştıran bir cihazı bağladığınızda sistem, bu bilgisayar üzerinden hata ayıklamaya 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ğıtma ve hata ayıklama desteği sunar. Ö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üklemesi gibi sık karşılaşılan USB bağlantı sorunlarıyla ilgilenme ihtiyacı ortadan kalkar.

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ızın, telefon için Android 11 (API düzeyi 30) veya sonraki sürümleri, TV ve WearOS için ise Android 13 (API düzeyi 33) veya sonraki sürümleri çalıştırdığından emin olun. Daha fazla bilgi için Android sürümünüzü kontrol etme ve güncelleme bölümüne bakın.

  • IDE (Entegre Geliştirme Ortamı) kullanıyorsanız Android Studio'nun en son sürümünün yüklü olduğundan emin olun. Uygulamayı buradan indirebilirsiniz.

  • İş istasyonunuzda, SDK Platform Araçları'nı en son sürümüne güncelleyin.

Kablosuz hata ayıklama özelliğini kullanmak için QR kodu veya eşleme kodu kullanarak cihazınızı 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 şu adımları uygulayın:

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

  2. Android Studio'yu açın ve yapılandırmaları çalıştırma menüsünden Kablosuz Ağı Kullanarak Cihazları Eşle'yi seçin.

    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 Cihazları kablosuz ağ üzerinden eşle 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 kodu kullanarak cihazları eşlemek için kullanılan pop-up pencere.
  3. Cihazınızda Kablosuz hata ayıklama'ya dokunun ve cihazınızı eşleyin:

    Piksel telefonun kablosuz hata ayıklama sistemleri ayarını gösteren 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ı bir 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 penceresinden elde edilen QR kodunu tarayın.

    2. Cihazınızı bir eşleme koduyla eşlemek için Cihazları kablosuz ağ üzerinden eşle pop-up'ından Cihazı eşleme koduyla eşle'yi seçin. Cihazınızda, Eşleme kodunu kullanarak eşle'yi seçin ve verilen altı haneli kodu not edin. Cihazınız, Kablosuz ağ üzerinden cihaz eşle penceresinde görününce Eşle'yi seçebilir ve cihazınızda gösterilen altı basamaklı kodu girebilirsiniz.

      Örnek PIN kodu girişinin ekran görüntüsü
      4.Şekil 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ünün altından iş istasyonu adınıza dokunun ve Unut'u seçin.

  5. Kablosuz hata ayıklamayı hızlı bir şekilde açmak ve kapatmak istiyorsanız Kablosuz hata ayıklama için Hızlı ayarlar geliştirici bloklarından yararlanabilirsiniz. Bu öğeleri, Geliştirici Seçenekleri > Hızlı ayarlar geliştirici kutuları bölümünde bulabilirsiniz.

    Google Pixel telefondaki Hızlı Ayarlar geliştirici karolarının ekran görüntüsü.
    5. Şekil. Hızlı ayarlar geliştirici kutuları ayarı, kablosuz hata ayıklamayı hızlı bir şekilde açıp kapatabilmenizi sağlar.

Komut satırı kullanarak kablosuz bağlantı

Alternatif olarak, Android Studio olmadan komut satırını kullanarak cihazınıza bağlanmak için şu adımları izleyin:

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

  2. Cihazınızda Kablosuz hata ayıklama'yı daha önce açıklandığı şekilde etkinleştirin.

  3. İş istasyonunuzda bir terminal penceresi açıp android_sdk/platform-tools adresine gidin.

  4. Cihazı eşleme koduyla eşle'yi seçerek IP adresinizi, bağlantı noktası numaranızı ve eşleme kodunuzu bulun. Cihazda görüntülenen 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 eşleme kodunu aşağıda gösterildiği gibi girin.

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

Kablosuz bağlantı sorunlarını çözme

Cihazınıza kablosuz olarak bağlanma konusunda 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şıladığından emin olun.

Diğer bilinen sorunları kontrol etme

Aşağıda, kablosuz hata ayıklamayla ilgili bilinen mevcut sorunların (adb veya Android Studio ile) bir listesi ve bunların nasıl çözüleceği anlatılmaktadır:

  • 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. Kablo veya başka bir (kurumsal olmayan) kablosuz ağla bağlanmayı deneyin. TCP/ip üzerinden adb connect ip:port kullanarak kablosuz bağlantı (ilk USB bağlantısından sonra) diğer bir seçenektir. Kurumsal olmayan bir ağa başvurmak bir seçenektir.

  • Kablosuz bağlantı üzerinden adb bazen otomatik olarak kapanır: Bu durum, cihazın kablosuz ağlar arasında geçiş yapması veya ağ bağlantısının kesilmesi durumunda gerçekleşebilir. Sorunu çözmek için ağa yeniden bağlanın.

  • Eşleme başarıyla sonrasında cihaz bağlanmıyor: adb, eşlenen cihazları keşfetmek ve bu cihazlara otomatik olarak bağlanmak için mDNS'den yararlanır. Ağınız veya cihaz yapılandırmanız mDNS'yi desteklemiyorsa veya devre dışı bıraktıysa adb connect ip:port kullanarak cihaza manuel olarak bağlanmanız gerekir.

İlk USB bağlantısından sonra bir 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ılavuza bakın.

adb genellikle USB üzerinden cihazla iletişim kurar ancak adb cihazını kablosuz ağ üzerinden de kullanabilirsiniz. Android 10 (API düzeyi 29) veya önceki sürümleri çalıştıran bir cihazı bağlamak için USB üzerinden şu ilk adımları uygulayın:

  1. Android cihazınızı ve adb ana bilgisayarı 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 desteği 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, bir Nexus cihazda IP adresini Ayarlar > Tablet hakkında (veya Telefon hakkında) > Durum > IP adresi bölümünde bulabilirsiniz.
  7. Cihaza IP adresinden 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 şu anda adb ağına bağlandı.

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

  • Ana makinenizin, 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 en baştan başlayın.

Cihazlarla ilgili sorgu

adb komutlarını vermeden önce, adb sunucusuna hangi cihaz örneklerinin bağlı olduğunu bilmek faydalı olacaktır. devices komutunu kullanarak ekli 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ıyla benzersiz bir ş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ğına bağlı değil veya yanıt vermiyor.
    • device: Cihaz adb sunucusuna bağlı. Cihaz, sistem hâlâ önyüklenirken adb sistemine 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 size cihazın ne olduğunu bildirir. Bu bilgiler, bağlı birden fazla cihazınız olduğunda faydalıdır. Böylece bu cihazları birbirinden ayırt edebilirsiniz.

Aşağıdaki örnekte devices komutu ve çıkışı gösterilmektedir. Çalışan üç cihaz var. Listenin ilk iki satırı emülatörler, üçü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 durumda olsa bile çalışan emülatörlerin adb devices çıkışında gösterilmemesine neden olan bir köşe harfi 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, 5554 ile 5584 arasında tek numaralı bağlantı noktası değeri ile -port veya -ports seçeneğiyle birlikte kullanırsınız.
  • Seçtiğiniz tek numaralı bağlantı noktası meşgul değil. Bu nedenle, bağlantı noktası bağlantısı belirtilen bağlantı noktası numarasından yapılabilir. Bağlantı noktası meşgulse emülatör, 2. adımda belirtilen gereksinimleri karşılayan başka bir bağlantı noktasına geçiş yapar.
  • Emülatörü başlattıktan 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 adb sunucusunu her zaman emulator komutunu kullanmadan önce başlatmaktır. Bu işlem aşağıdaki örneklerde açıklanmıştır.

1. Örnek: Aşağıdaki komut sırasında 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 sisteminizden geçerli bir AVD adı sağlayın. Ortalama görüntüleme süresi adlarının listesini görmek 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 sırasında ilk olarak adb sunucusu başlatıldığı için adb devices, cihazların listesini gösterir.

Emülatörü adb devices çıkışında görmek için adb sunucusunu durdurun, ardından emulator komutunu kullandıktan sonra ve 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şlatma seçenekleri bölümüne bakın.

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

  1. Hedefin seri numarasını almak için devices komutunu kullanın.
  2. Seri numarasını aldıktan sonra seri numarasını belirtmek için adb komutlarıyla birlikte -s seçeneğini kullanın.
    1. Çok sayıda adb komutu yayınlayacaksanız $ANDROID_SERIAL ortam değişkenini bunun yerine seri numarasını içerecek şekilde ayarlayabilirsiniz.
    2. Hem -s hem de $ANDROID_SERIAL kullanırsanız -s, $ANDROID_SERIAL değerini geçersiz kılar.

Aşağıdaki örnekte, bağlı cihazların listesi alınmış ve daha sonra helloWorld.apk uygulamasını ilgili cihaza yüklemek için cihazlardan birinin seri numarası kullanılmıştı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 çok cihaz mevcut olduğunda hedef cihaz belirtmeden bir komut yayınlarsanız adb, "adb: birden fazla cihaz/emülatör" hatası görüntüler.

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 olmasına rağmen yalnızca bir donanım cihazı takılıysa donanım cihazına komut göndermek için -d seçeneğini kullanın.

Uygulama yükleme

install komutuyla adb kullanarak bir emülatöre veya bağlı cihaza APK yükleyebilirsiniz:

adb install path_to_apk

Test APK'sı yüklediğinizde install komutuyla birlikte -t seçeneğini kullanmanız gerekir. Daha fazla bilgi için bkz. -t.

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.

Emülatöre/cihaz örneğine yükleyebileceğiniz bir APK dosyası oluşturma hakkında daha fazla bilgi için Uygulamanızı derleme ve çalıştırma konusuna bakın.

Not: Android Studio kullanıyorsanız uygulamanızı emülatöre veya cihaza yüklemek için doğrudan adb kullanmanız gerekmez. Bunun yerine, uygulamanın paketlenmesi ve yüklenmesiyle ilgili işlemleri sizin yerinize Android Studio 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 ana makine bağlantı noktası 6100'ün cihaz bağlantı noktası 7100'e yönlendirilmesi ayarlanmaktadır:

adb forward tcp:6100 tcp:7100

Aşağıdaki örnekte ana makine bağlantı noktası 6100'ün local:logd'a 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üğü arka plan programına yazılır ve cihaz günlüklerinde gösterilir.

Bir cihaza/cihazdan dosya kopyalama

Bir cihaza ve cihazdan dosya kopyalamak için pull ve push komutlarını kullanın. Bir APK dosyasını yalnızca belirli bir konuma kopyalayan install komutunun aksine pull ve push komutları, rastgele 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 parametrelerini, geliştirme makinenizdeki (yerel) ve cihazdaki (uzaktan) hedef dosyaların/dizine giden yollarla değiştirin. Örnek:

adb push myfile.txt /sdcard/myfile.txt

Adb sunucusunu durdurma

Bazı durumlarda, sorunu çözmek için adb sunucusu işlemini 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 vererek sunucuyu yeniden başlatabilirsiniz.

Adb komutlarını yayınlama

Aşağıdakileri kullanarak geliştirme makinenizdeki bir komut satırından veya bir komut dosyasından adb komutlarını yayınlayın:

adb [-d | -e | -s serial_number] command

Yalnızca bir emülatör çalışıyorsa veya yalnızca bir cihaz bağlıysa varsayılan olarak adb komutu o cihaza gönderilir. Birden fazla emülatör çalışıyorsa ve/veya birden fazla cihaz eklenmişse komutun yönlendirilmesi gereken hedef cihazı belirtmek için -d, -e ya da -s seçeneğini kullanmanız gerekir.

Aşağıdaki komutu kullanarak desteklenen tüm adb komutlarının ayrıntılı bir listesini görebilirsiniz:

adb --help

Sorun kabuk komutları

adb aracılığıyla cihaz komutları yayınlamak veya etkileşimli bir kabuk başlatmak için shell komutunu kullanabilirsiniz. Tek bir komut vermek için şu şekilde shell komutunu kullanın:

adb [-d |-e | -s serial_number] shell shell_command

Bir cihazda etkileşimli kabuk başlatmak için shell komutunu şu şekilde kullanın:

adb [-d | -e | -s serial_number] shell

Etkileşimli bir kabuktan çıkmak için Control+D tuşuna basın veya exit yazın.

alışılmış Unix komut satırı araçlarının çoğunu Android 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 yerleştirme ile ilgili birçok sorunu düzeltti ve adb install Let\'sGo.apk gibi kabuk meta karakterleri içeren komutları güvenli bir şekilde yürütmeyi mümkün kıldı. Bu değişiklik, kabuk meta karakterlerini içeren herhangi bir komutun yorumlanmasının da değiştiği anlamına gelir.

Örneğin, tek tırnak işareti (') yerel kabuk tarafından yutulduğu ve cihaz adb shell setprop key value değerini gördüğü için adb shell setprop key 'value' artık bir hatadır. Komutun çalışması için ssh(1) işleminde yaptığınız gibi bir kez yerel kabuk ve bir kez uzak kabuk için olmak üzere iki kez alıntılayın. Örneğin, adb shell setprop key 'value' .

Ayrıca, sistem günlüğünü izlemek için yararlı olan Logcat komut satırı aracı bölümüne de bakın.

Arama etkinliği yöneticisi

adb kabuğunda, etkinlik başlatma, işlemi zorla durdurma, intent yayınlama, cihaz ekran özelliklerini değiştirme gibi çeşitli sistem işlemlerini gerçekleştirmek için etkinlik yöneticisi (am) aracıyla komut gönderebilirsiniz.

Bir kabuk içindeyken am söz dizimi şöyledir:

am command

Ayrıca, uzak kabuğa girmeden doğrudan adb üzerinden bir etkinlik yöneticisi komutu da yayınlayabilirsiniz. Örnek:

adb shell am start -a android.intent.action.VIEW

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

Komut Açıklama
start [options] intent intent tarafından belirtilen bir Activity başlatın.

Amaç bağımsız değişkenleri için spesifikasyon'a bakın.

Seçenekler:

  • -D: Hata ayıklamayı etkinleştir.
  • -W: Lansmanın tamamlanmasını bekleyin.
  • --start-profiler file: Profil düzenleyiciyi başlatın ve sonuçları file sitesine gönderin.
  • -P file: --start-profiler gibi, ancak profil oluşturma işlemi uygulama boşta kaldığında durur.
  • -R count: Etkinlik lansmanını count kez tekrarlayın. Her tekrardan önce en popüler etkinlik biter.
  • -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 öğesini başlatın.

Amaç bağımsız değişkenleri için spesifikasyon'a bakın.

Seçenekler:

  • --user user_id | current: Hangi kullanıcı olarak çalıştırılacağını belirtin. Belirtilmezse geçerli kullanıcı olarak çalıştı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 etkilemeyecek işlemleri sona erdirir.

Seçenekler:

  • --user user_id | all | current: Hangi kullanıcının işlemlerini sonlandıracağınızı 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 amacı gönderin.

Amaç bağımsız değişkenleri için spesifikasyon'a bakın.

Seçenekler:

  • [--user user_id | all | current]: İletinin 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 hedef component, test_package/runner_class formudur.

Seçenekler:

  • -r: Ham sonuçları yazdırın (normalde report_key_streamresult kodunu çözün). Performans ölçümleri için ham çıktı oluşturmak amacıyla [-e perf true] ile birlikte kullanın.
  • -e name value: name bağımsız değişkenini value olarak ayarlayın. Test koşucuları için en yaygın form -e testrunner_flag value[,value...] şeklindedir.
  • -p file: Profil oluşturma verilerini file hesabına yazın.
  • -w: Geri dönmeden önce enstrümantasyonun tamamlanmasını bekleyin. Test kullanıcıları için gereklidir.
  • --no-window-animation: Çalışırken pencere animasyonlarını devre dışı bırak.
  • --user user_id | current: Hangi kullanıcı aracının çalışacağını belirtin. Belirtilmezse geçerli kullanıcıda çalıştır.
profile start process file process üzerinde profil düzenleyiciyi başlat, sonuçları file adresine yaz.
profile stop process process cihazında profil düzenleyiciyi durdurun.
dumpheap [options] process file process yığınının dökümünü al, file adresine yaz.

Seçenekler:

  • --user [user_id | current]: İşlem adı sağlarken döküm alınacak işlemin kullanıcısını belirtin. Belirtilmezse geçerli kullanıcı kullanılır.
  • -n: Yönetilen yığın yerine yerel yığının dökümünü alın.
set-debug-app [options] package Hata ayıklamak için package uygulamasını ayarlayın.

Seçenekler:

  • -w: Uygulama başlatıldığında hata ayıklayıcıyı bekleyin.
  • --persistent: Bu değeri koruyun.
clear-debug-app set-debug-app ile hata ayıklama için önceki paketi temizleyin.
monitor [options] Kilitlenmeler veya ANR'ler için izlemeye başlayın.

Seçenekler:

  • --gdb: Kilitlenme/ANR sırasında belirtilen bağlantı noktasında gdbserv öğesini başlat.
screen-compat {on | off} package package cihazının ekran uyumluluğu modunu kontrol et.
display-size [reset | widthxheight] Cihaz görüntü boyutunu geçersiz kıl. Bu komut, büyük ekranlı bir cihaz kullanırken küçük ekran çözünürlüğünü taklit ederek uygulamanızı farklı ekran boyutlarında test ederken veya tam tersini yaparken faydalıdır.

Örnek:
am display-size 1280x800

display-density dpi Cihazın görüntü yoğunluğunu geçersiz kıl. 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.

Amaç bağımsız değişkenleri için spesifikasyon'a bakın.

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

Amaç bağımsız değişkenleri için spesifikasyon'a bakın.

Amaç bağımsız değişkenleri için spesifikasyon

intent bağımsız değişkeni alan etkinlik yöneticisi komutlarının amacını aşağıdaki seçeneklerle belirtebilirsiniz:

Paket yöneticisini ara (pm)

Bir adb kabuğunda, cihazda yüklü uygulama paketlerinde işlem ve sorgu gerçekleştirmek için paket yöneticisi (pm) aracıyla komut gönderebilirsiniz.

Bir kabuk içindeyken pm söz dizimi şöyledir:

pm command

Ayrıca, uzak kabuğa girmeden doğrudan adb üzerinden bir paket yöneticisi komutu da yayınlayabilirsiniz. Örnek:

adb shell pm uninstall com.example.MyApp

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

Komut Açıklama
list packages [options] filter Tüm paketleri (isteğe bağlı olarak yalnızca paket adları filter içinde metin içerenleri) yazdırın.

Seçenekler:

  • -f: İlişkili dosyayı gösterir.
  • -d: Yalnızca devre dışı bırakılmış paketleri gösterecek şekilde filtreleyin.
  • -e: Yalnızca etkin paketleri gösterecek şekilde filtre uygulayın.
  • -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ılmış paketleri dahil eder.
  • --user user_id: Sorgulanacak kullanıcı alanı.
list permission-groups Bilinen tüm izin gruplarını yazdırma.
list permissions [options] group Bilinen tüm izinleri (isteğe bağlı olarak yalnızca group içindekileri) yazdır.

Seçenekler:

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

Seçenekler:

  • -f: Test paketi için APK dosyasını listeleyin.
  • target_package: Yalnızca bu uygulama için test paketlerini listeler.
list features Sistemin tüm özelliklerini yazdırın.
list libraries Geçerli cihaz tarafından desteklenen tüm kitaplıkları yazdır.
list users Sistemdeki tüm kullanıcıları yazdırın.
path package Belirtilen package öğesinin APK yolunu yazdır.
install [options] path Sisteme path tarafından belirtilen bir paketi yükleyin.

Seçenekler:

  • -r: Mevcut bir uygulamayı, verilerini koruyarak yeniden yükleyin.
  • -t: Test APK'larının yüklenmesine izin ver. Gradle, uygulamanızı yalnızca çalıştırdığınızda veya hata ayıklama yaptığınızda ya da Android Studio Derleme > APK oluştur 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 paketi 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.
    • 1: Dahili cihaz depolama alanına yükleyin.
    • 2: Harici medyaya yükleyin.
  • -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, özelliği kullanmaya veya desteklenmiyorsa adb ürününün neden başarısız olduğuyla ilgili ayrıntılı bilgilerle birlikte başarısız olmasını zorunlu kılar. APK'ya erişim izni vermeden önce APK'nın tamamen yüklenmesini beklemek için --wait seçeneğini ekleyin.

    --no-incremental, adb adlı çocuğun bu özelliği kullanmasını engelliyor.

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

Seçenekler:

  • -k: Paket kaldırıldıktan sonra verileri ve önbellek dizinlerini koruyun.
  • --user user_id: Paketin kaldırılacağı 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şkilendirilmiş tüm verileri silin.
enable package_or_component Belirtilen paketi veya bileşeni ("paket/sınıf" olarak yazılır) etkinleştirin.
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 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.
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ştirin. Konum değerleri:
  • 0: Otomatik: En iyi konumu sistemin belirlemesini sağlar.
  • 1: Dahili: Dahili cihaz depolama alanına yükleyin.
  • 2: Harici: Harici medyaya yükleyin.

Not: Bu seçenek yalnızca hata ayıklama amacıyla hazırlanmıştır. Bunun kullanılması uygulamaların bozulmasına ve diğer istenmeyen 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 konumu sistem belirlesin
  • 1 [internal]: Dahili cihaz depolama alanına yükle
  • 2 [external]: Harici medyaya yükle
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ırpı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 değerine sahip kullanıcıyı kaldırıp 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 veya herhangi bir değer belirtilmemişse tüm paketler için alan doğrulama durumunu yazdırın. 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: zorla onaylandı, genellikle kabuk aracılığıyla
  • denied: zorla reddedildi, genellikle kabuk aracılığıyla
  • migrated: eski bir yanıtla 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:

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

Belirli bir paket veya herhangi bir paket belirtilmemişse tüm paketler için alan doğrulama durumunu sıfırlayın.

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

Seçenekler:

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

Belirtilen package için veya herhangi bir paket belirtilmezse 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 bir yanıt kaydetmiş olsa bile gönder
set-app-links [--package package] state domains

Paket için bir alanın durumunu manuel olarak ayarlayın. Bunun çalışması için alan, paket tarafından autoVerify olarak bildirilmelidir. Bu komut, uygulanamayan alanlar için bir hata bildirmez.

  • --package package: ayarlanacak paket veya tüm paketleri ayarlamak için "tümü"
  • state: Alanları belirleyeceğiniz kod. Geçerli değerler şunlardır:
    • STATE_NO_RESPONSE (0): Hiç yanıt kaydedilmemiş gibi sıfırlanır.
    • STATE_SUCCESS (1): Alan adını, alan doğrulama aracısı tarafından başarıyla doğrulanmış olarak kabul edin. 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 kabul ederek alan doğrulama aracısının alanı değiştirmesini önler.
  • 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

Paket için ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlayın. Bunun çalışması için alan adının paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için bir hata bildirmez.

  • --user user_id: kullanıcı, seçimlerini değiştirecek.
  • --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

Paket için ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlayın. Bunun çalışması için alan adının paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için bir hata bildirmez.

  • --user user_id: kullanıcı, seçimlerini değiştirecek.
  • --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ğrulanan bağlantı işleme ayarını açın/kapatın.

  • --user user_id: kullanıcı, seçimlerini değiştirecek.
  • --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ğrulanan bağlantıları açmasına izin vermek için true, devre dışı bırakmak için false
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 doğru sırayla 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 alan adlarının boşlukla ayrılmış listesi

Cihaz politika yöneticisini ara (dpm)

Cihaz yönetimi uygulamalarınızı geliştirip test etmenize yardımcı olması için cihaz politika yöneticisi (dpm) aracına komut gönderin. Etkin yönetici uygulamasını kontrol etmek veya bir politikanın cihazdaki durum verilerini değiştirmek için bu aracı kullanın.

Kabuk içindeyken dpm söz dizimi şu şekildedir:

dpm command

Ayrıca, uzak kabuk girmeden doğrudan adb üzerinden bir cihaz politika yöneticisi komutu da yayınlayabilirsiniz:

adb shell dpm command

Tablo 3. Kullanılabilen cihaz politika yöneticisi komutları

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

Seçenekler:

  • --user user_id: Hedef kullanıcıyı belirtin. Geçerli kullanıcıyı seçmek için --user current komutunu da iletebilirsiniz.
set-profile-owner [options] component component adresini etkin yönetici olarak ve paketini, mevcut bir kullanıcının profil sahibi olarak ayarlayın.

Seçenekler:

  • --user user_id: Hedef kullanıcıyı belirtin. Geçerli kullanıcıyı seçmek için --user current parametresini de iletebilirsiniz.
  • --name name: Kullanıcıların okuyabileceği kuruluş adını belirtin.
set-device-owner [options] component component öğesini etkin yönetici ve paketi cihaz sahibi olarak ayarlayın.

Seçenekler:

  • --user user_id: Hedef kullanıcıyı belirtin. Geçerli kullanıcıyı seçmek için --user current komutunu da iletebilirsiniz.
  • --name name: Kullanıcıların okuyabileceği kuruluş adını belirtin.
remove-active-admin [options] component Etkin bir yöneticiyi devre dışı bırakın. Uygulamanın manifest dosyasında android:testOnly öğesini beyan etmesi gerekir. Bu komut, cihaz ve profil sahiplerini de kaldırır.

Seçenekler:

  • --user user_id: Hedef kullanıcıyı belirtin. Geçerli kullanıcıyı seçmek için --user current komutunu da iletebilirsiniz.
clear-freeze-period-record Cihazın sistem OTA güncellemeleri için önceden ayarlanmış dondurma dönemlerine ait kaydını temizleyin. 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 sayfasına göz atın.

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 komut hızla 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'nin kullanımına sunmaya zorlayın. Kullanılabilir günlükler varsa DPC, onSecurityLogsAvailable() geri çağırmasını alır. Kurumsal cihaz etkinliğini günlüğe kaydetme başlıklı makaleyi inceleyin.

Bu komut hızla 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.

Bir kabuk içindeyken screencap söz dizimi şöyledir:

screencap filename

Komut satırından screencap kullanmak için aşağıdakileri girin:

adb shell screencap /sdcard/screen.png

Ekran görüntüsünü almak için adb kabuğunun ve dosyayı cihazdan indirmek için pull komutunun kullanıldığı bir ekran görüntüsü oturumunu aşağıda bulabilirsiniz:

$ 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 görüntüsünü kaydetmeye yönelik bir kabuk yardımcı programıdır. Yardımcı program, ekran etkinliğini bir 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

Control+C tuşlarına basarak ekran kaydını durdurun. Aksi takdirde kayıt, üç dakikada veya --time-limit tarafından ayarlanan süre sonunda 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 makineye 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 desteklenen herhangi bir çözünürlükte ve bit hızında kayıt yapabilir. Yardımcı program, varsayılan olarak maksimum üç dakika uzunluğuyla yerel ekran çözünürlüğünde ve yönde kayıt yapar.

screenrecord yardımcı programının sınırlamaları:

  • Video dosyasıyla ses kaydedilmez.
  • Wear OS yüklü cihazlarda video kaydı yapılamaz.
  • Bazı cihazlar yerel ekran çözünürlüklerinde 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 desteklenmiyor. Kayıt sırasında ekran dönerse kayıt sırasında ekranın bir kısmı kesilir.

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 Kodlaması (AVC) kodlayıcısı tarafından desteklenen bir boyutu kullanın.
--bit-rate rate Video için video bit hızını, saniyedeki megabit olarak 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 ayarlanmaktadı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 Çıkışı 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 hiçbir bilgi görüntülemez.

Uygulamalar için ART profillerini okuma

Android 7.0'dan (API düzeyi 24) başlayarak Android Çalışma Zamanı (ART), yüklü uygulamalar için yürütme profillerini toplar. Bu profiller, uygulama performansını optimize etmek için kullanılır. Hangi yöntemlerin sık yürütüldüğünü ve uygulama başlatılırken 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 bilgilerini metin biçiminde oluşturmak için aşağıdaki komutu kullanın:

adb shell cmd package dump-profiles package

Oluşturulan dosyayı almak için şunu kullanın:

adb pull /data/misc/profman/package.prof.txt

Test cihazlarını sıfırlayın

Uygulamanızı birden fazla test cihazında test ediyorsanız testler arasında cihazınızı sıfırlamanız (örneğin, 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 özelliğini 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 manuel olarak yeni bir anahtar kaydetmeden hata ayıklamaya ve cihaza adb komutları vermeye 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 kurulumu sihirbazlarının görünmemesi için belirli sistem ayarlarını yapar. Yani cihaz, uygulamanızı hızlı bir şekilde 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 bu ayarlara uyması gerekiyorsa ActivityManager.isRunningInUserTestHarness() komutunu 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 tablo için SQL CREATE ifadesini yazdırmak için .schema gibi komutlar içerir. Ayrıca, gösterildiği gibi komut satırından SQLite komutlarını 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ı dokümanlarına bakın.

adb USB arka uçları

Adb sunucusu, USB yığınıyla iki arka uç üzerinden etkileşim kurabilir. İşletim sisteminin 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 ucu kullanılırken 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 sistemleri arasında değişiklik gösterir. ADB v34 ile başlayarak liubusb arka ucu, varsayılan olarak yerel arka ucun kullanıldığı Windows hariç tüm işletim sistemlerinde varsayılan olarak kullanılmaktadır. ADB_LIBUSB ayarlanırsa yerel arka ucun mu yoksa libusb mi kullanılacağı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 mdnsReplyer) ve Openscreen adlı iki arka ucuyla birlikte sunulur.

Bonjour arka ucunun ana makinede çalıştırılabilmesi için bir arka plan programı gerekir. Apple'ın yerleşik arka plan programı her zaman çalışır. Ancak Windows ve Linux'ta kullanıcının mdnsd arka plan programının çalışır durumda olduğundan emin olması gerekir. adb mdns check komutu hata döndürürse ADB, Bonjour arka ucunu kullanıyor ancak Bonjour arka plan programı çalıştırılmıyordur.

Openscreen arka ucunun makinede çalıştırılması için bir arka plan programının çalışması gerekmez. macOS'te Openscreen arka ucu desteği ADB v35'ten başlar. 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 ayrıntı için ADB manuel sayfasına bakın.