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

Android Debug Bridge (adb), bir cihazla iletişim kurmanıza olanak tanıyan çok yönlü bir komut satırı aracıdır. adb komutu, uygulama yükleme ve hata ayıklama gibi çeşitli cihaz işlemlerini kolaylaştırır. adb, cihazda çeşitli komutlar çalıştırmak için kullanabileceğiniz bir Unix kabuğuna erişim sağlar. Üç bileşenden oluşan bir istemci-sunucu programıdır:

  • Komut gönderen bir istemci. İstemci, geliştirme makinenizde çalışır. adb komutunu vererek bir istemciyi komut satırı terminalinden çağırabilirsiniz.
  • Cihazda komutları çalıştıran bir arka plan programı (adbd). 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 Tools paketine dahildir. Bu paketi SDK Yöneticisi ile indirin. Bu paket, android_sdk/platform-tools/ konumuna yüklenir. Bağımsız Android SDK Platform Tools paketini istiyorsanız buradan indirebilirsiniz.

adb üzerinden kullanılmak üzere cihaz bağlama (bağlantı yardımcısını kullanarak yaygın sorunları giderme dahil) hakkında bilgi edinmek için Uygulamaları donanım cihazda çalıştırma başlıklı makaleyi inceleyin.

adb'nin işleyiş şekli

Bir adb istemcisini başlattığınızda istemci önce halihazırda çalışan bir adb sunucu işlemi olup olmadığını kontrol eder. Yoksa sunucu işlemi başlatılır. Sunucu başlatıldığı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. Bu araç, ilk 16 emülatörün kullandığı aralık olan 5555-5585 aralığındaki tek numaralı bağlantı noktalarını tarayarak emülatörleri bulur. Sunucu, adb daemon (adbd) bulduğu yerde bu bağlantı noktasıyla bağlantı kurar.

Her emülatör, sıralı bağlantı noktalarından oluşan bir çift kullanır. Konsol bağlantıları için çift numaralı bir bağlantı noktası, adb bağlantıları için ise tek numaralı bir bağlantı noktası kullanılır. Örneğin:

Emülatör 1, konsol: 5554
Emülatör 1, adb: 5555
Emülatör 2, konsol: 5556
Emülatör 2, adb: 5557
vb.

Gösterildiği gibi, 5555 numaralı bağlantı noktasında adb'ya bağlı olan emülatör, konsolu 5554 numaralı bağlantı noktasında dinleyen emülatörle aynıdır.

Sunucu tüm cihazlarla bağlantı kurduktan sonra adb komutlarını kullanarak bu cihazlara erişebilirsiniz. Sunucu, cihazlara bağlantıları yönettiği ve birden fazla adb istemciden gelen komutları işlediği için herhangi bir cihazı herhangi bir istemciden veya komut dosyasından kontrol edebilirsiniz.

Cihazınızda ADB hata ayıklama işlevini etkinleştirme

USB üzerinden bağlı bir cihazla adb'yi kullanmak için cihazın 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 gizlenir. Görünür hale getirmek için Geliştirici seçenekleri'ni etkinleştirin.

Artık cihazınızı USB ile bağlayabilirsiniz. adb devices komutunu android_sdk/platform-tools/ dizininden çalıştırarak cihazınızın bağlı olduğunu doğrulayabilirsiniz. Bağlıysa cihaz adını "cihaz" olarak listelenmiş şekilde 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 izin veren bir RSA anahtarının kabul edilip edilmeyeceğini soran bir iletişim kutusu gösterir. Bu güvenlik mekanizması, cihazın kilidini açıp iletişim kutusunu onaylamadığınız sürece USB hata ayıklama ve diğer adb komutlarının yürütülememesini sağlayarak kullanıcı cihazlarını korur.

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

Kablosuz ağ üzerinden bir cihaza bağlanma

Not: Aşağıdaki talimatlar, Android 11 (API düzeyi 30) çalıştıran Wear cihazlar için geçerli değildir. Daha fazla bilgi için Wear OS uygulamasında hata ayıklama rehberine bakın.

Android 11 (API düzeyi 30) ve sonraki sürümlerde, Android Debug Bridge (adb) kullanarak iş istasyonunuzdan uygulamanızı kablosuz olarak dağıtıp hata ayıklayabilirsiniz. Örneğin, hata ayıklanabilir uygulamanızı cihazınızı USB üzerinden fiziksel olarak bağlamanıza gerek kalmadan birden fazla uzak cihaza dağıtabilirsiniz. Bu sayede, sürücü yükleme gibi yaygın USB bağlantı sorunlarıyla uğraşma ihtiyacı ortadan kalkar.

Kablosuz hata ayıklamayı kullanmaya başlamadan önce şunları yapın:

  • İş istasyonunuzun ve cihazınızın aynı kablosuz ağa bağlı olduğundan emin olun.

  • Cihazınızda telefon için Android 11 (API düzeyi 30) veya sonraki bir sürümün, TV ve WearOS için ise Android 13 (API düzeyi 33) veya sonraki bir sürümün yüklü olduğundan emin olun. Daha fazla bilgi için Android sürümünüzü kontrol etme ve güncelleme başlıklı makaleyi inceleyin.

  • IDE kullanıyorsanız Android Studio'nun en yeni sürümünün yüklü olduğundan emin olun. Uygulamayı buradan indirebilirsiniz.

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

Kablosuz hata ayıklamayı kullanmak için cihazınızı 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 Pair Devices Using Wi-Fi'ı (Cihazları Kablosuz Bağlantı Kullanarak Eşle) seçin.

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

    Şekil 2'de gösterildiği gibi Cihazları kablosuz ağ üzerinden eşleyin penceresi açılır.

    Kablosuz ağ üzerinden cihaz eşleme pop-up penceresinin ekran görüntüsü
    Şekil 2. Cihazları QR kodu veya eşleme kodu kullanarak eşlemek için açılan 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ü.
    3.Şekil 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şleyin pop-up'ından alınan QR kodunu tarayın.

    2. Cihazınızı eşleme koduyla eşlemek için Cihazı eşleme koduyla eşle'yi seçin. Cihazları kablosuz ağ üzerinden eşle pop-up'ında. Cihazınızda Eşleme kodu kullanarak eşle'yi seçin ve verilen altı basamaklı kodu not edin. Cihazınız Kablosuz ağ üzerinden cihaz eşleyin 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ı haneli kod girişine örnek.
  4. Cihazınız eşlendikten sonra uygulamanızı cihazınıza dağıtmayı deneyebilirsiniz.

    Farklı bir cihazı eşlemek veya iş istasyonunuzdaki mevcut cihazı unutmak için cihazınızda Kablosuz hata ayıklama'ya gidin. Eşlenmiş cihazlar bölümünde iş istasyonunuzun adına dokunun ve 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ünde bulunan 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ü.
    5.şekil Hızlı ayarlar geliştirici kutuları ayarı, kablosuz hata ayıklamayı hızlı bir şekilde açıp kapatmanıza olanak tanır.

Komut satırını kullanarak Wi-Fi bağlantısı

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

  1. Daha önce açıklandığı gibi 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 dizinine 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ö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ğıda gösterildiği gibi eşleme kodunu girin.

    Komut satırında eşlemenin ekran görüntüsü.
    6.şekil 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şıladığını kontrol edin.

Bilinen diğer sorunları kontrol etme

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

  • Kablosuz ağa bağlanılamıyor: Şirket 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 (şirket dışı) kablosuz ağa bağlanmayı deneyin. Bir başka seçenek de, şirket dışı bir ağa başvurma imkanınız varsa ilk USB bağlantısından sonra adb connect ip:port üzerinden tcp/ip kullanarak kablosuz bağlantı kurmaktır.

  • adb bazen kablosuz bağlantı üzerinden otomatik olarak kapanıyor: Bu durum, cihaz kablosuz ağlar arasında geçiş yaptığında veya ağ bağlantısı kesildiğinde meydana gelebilir. Sorunu çözmek için ağa yeniden bağlanın.

  • Cihaz, başarılı eşlemenin ardından bağlanmıyor: adb, eşlenen cihazları bulmak ve bunlara otomatik olarak bağlanmak için mDNS'yi kullanır. Ağınız veya cihaz yapılandırmanız mDNS'yi desteklemiyorsa ya da mDNS devre dışı bırakılmışsa 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 (Android 10 ve önceki sürümlerdeki tek seçenek)

Not: Bu iş akışı Android 11 (ve sonraki sürümler) için de geçerlidir. Ancak bu iş akışında fiziksel USB üzerinden *ilk* bağlantı da kurulması gerekir.

Not: Aşağıdaki talimatlar, Android 10 (API düzeyi 29) veya daha eski bir sürümü çalıştıran Wear cihazlar için geçerli değildir. Daha fazla bilgi için Wear OS uygulamasında hata ayıklama hakkındaki kılavuza bakın.

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

  1. Android cihazınızı ve adbana bilgisayarı ortak bir kablosuz ağa bağlayın.
  2. Not: Tüm erişim noktalarının uygun olmadığını unutmayın. adb'yı desteklemek için güvenlik duvarı düzgün ş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ında 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. Cihaza IP adresini kullanarak bağlanın:
    adb connect device_ip_address:5555
    
  8. Ana bilgisayarınızın hedef cihaza bağlı olduğunu doğrulayın:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Cihazınız artık adb ağına bağlı.

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

  • Sunucunuzun 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 baştan başlayın.

Cihaz sorgulama

adb komutlarını 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 bilgilerini yazdırır:

  • Seri numarası: adb, cihazı bağlantı noktası numarasına göre benzersiz şekilde tanımlayan 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. Bu durumun, Android sisteminin tamamen başlatıldığı ve çalıştığı anlamına gelmediğini unutmayın. Çünkü cihaz, sistem başlatılırken adb'ya bağlanır. Bu, başlatma işleminden sonra 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 söyler. Bu bilgi, birden fazla cihaz bağlıyken cihazları birbirinden ayırt edebilmeniz için yararlıdır.

Aşağıdaki örnekte devices komutu ve çıkışı gösterilmektedir. Üç cihaz çalışıyor. Listedeki ilk iki satır emülatör, üçüncü satır ise bilgisayara bağlı bir donanım cihazıdır.

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

Emülatör listede yok

adb devices komutunda, çalışan emülatörlerin masaüstünüzde görünmesine rağmen adb devices çıkışında gösterilmemesine neden olan bir uç durum komut sırası var. Bu durum, aşağıdaki koşulların tümü geçerli olduğunda ortaya çıkar:

  • adb sunucusu çalışmıyor.
  • emulator komutunu -port veya -ports seçeneğiyle birlikte 5554 ile 5584 arasında tek numaralı bir bağlantı noktası değeriyle kullanırsınız.
  • Seçtiğiniz tek numaralı bağlantı noktası meşgul değilse bağlantı, belirtilen bağlantı noktası numarası üzerinden kurulabilir. Meşgulse emülatör, 2. adımda belirtilen koşulları karşılayan başka bir bağlantı noktasına geçer.
  • Emülatörü başlattıktan sonra adb sunucusunu başlatırsınız.

Bu durumdan kaçınmanın 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 ise 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ını girin. AVD adlarının listesini almak için emulator -list-avds yazın. emulator komutu, android_sdk/tools dizininde bulunur.

$ 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örüntüler.

Emülatörü adb devices çıkışında görmek için adb sunucusunu durdurun ve ardından emulator komutunu kullandıktan sonra ve adb devices komutunu kullanmadan önce aşağıdaki şekilde 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ı 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 verecekseniz bunun yerine $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'yi geçersiz kılar.

Aşağıdaki örnekte, bağlı cihazların listesi alınır ve ardından cihazlardan birinin seri numarası, ilgili cihaza helloWorld.apk yüklemek için 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 kullanılabilirken hedef cihazı belirtmeden komut verirseniz adb "adb: more than one device/emulator" (adb: birden fazla cihaz/emülatör) hatasını gösterir.

Birden fazla cihazınız varsa ancak bunlardan 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

adb komutuyla bir emülatöre veya bağlı cihaza APK yüklemek için install kullanabilirsiniz:

adb install path_to_apk

Bir test APK'sı yüklerken install komutuyla birlikte -t seçeneğini kullanmanız gerekir. Daha fazla bilgi için -t sayfasına bakın.

Birden fazla APK yüklemek için install-multiple kullanın. Bu, Play Console'dan uygulamanız için belirli bir cihaza yönelik tüm APK'ları indirip bunları bir emülatöre veya fiziksel cihaza yüklemek istediğinizde kullanışlıdır.

Bir emülatör/cihaz örneğine yükleyebileceğiniz bir APK dosyası oluşturma hakkında daha fazla bilgi için Uygulamanızı oluşturma ve çalıştırma başlıklı makaleyi inceleyin.

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, Android Studio uygulamanın paketlenmesini ve yüklenmesini sizin için gerçekleştirir.

Bağlantı noktası yönlendirmeyi kur

Belirli bir ana makine bağlantı noktasındaki istekleri bir 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 ayarlanır:

adb forward tcp:6100 tcp:7100

Aşağıdaki örnekte, ana makine bağlantı noktası 6100'ün local:logd'ye yönlendirilmesi ayarlanmaktadır:

adb forward tcp:6100 local:logd

Bu, cihazdaki belirli bir bağlantı noktasına ne gönderildiğini belirlemeye çalışıyorsanız yararlı olabilir. Alınan tüm veriler, sistem günlüğü tutma arka plan programına yazılır ve cihaz günlüklerinde gösterilir.

Dosyaları bir cihaza ve cihazdan kopyalama

Dosyaları bir cihaza ve cihazdan kopyalamak için pull ve push komutlarını kullanın. Yalnızca bir APK dosyasını belirli bir konuma kopyalayan install komutunun aksine, pull ve push komutları, rastgele dizinleri ve dosyaları bir 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/dizinin yollarıyla değiştirin. Örneğin:

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 vermediğinde bu durum söz konusu olabilir.

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ı yayınlama

Geliştirme makinenizdeki bir komut satırından veya aşağıdaki komutları kullanarak bir komut dosyası üzerinden adb komutları verin:

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

shell komutunu kullanarak adb üzerinden cihaz komutları verebilir veya etkileşimli bir kabuk başlatabilirsiniz. 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 ş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.

Android, normal Unix komut satırı araçlarının çoğunu sağlar. Kullanılabilir araçların listesi için aşağıdaki komutu kullanın:

adb shell ls /system/bin

Komutların çoğu için --help bağımsız değişkeni aracılığıyla yardım alabilirsiniz. Kabuk komutlarının çoğu toybox tarafından sağlanır. Tüm toybox komutları için geçerli olan genel yardım bilgilerine 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 kabuk metakarakterleri (ör. adb install Let\'sGo.apk) içeren komutların güvenli bir şekilde yürütülmesini sağladı. Bu değişiklik, kabuk metakarakterleri içeren komutların yorumlanmasının da değiştiği anlamına gelir.

Örneğin, tırnak işaretleri yerel kabuk tarafından yutulduğu ve cihaz adb shell setprop key two words gördüğü için adb shell setprop key 'two words' artık bir hatadır. Komutun çalışması için ssh(1) ile yaptığınız gibi iki kez alıntı yapın (bir kez yerel kabuk için, bir kez de uzak kabuk için). Örneğin, adb shell setprop key "'two words'" çalışır. Bunun nedeni, yerel kabuğun dış tırnak düzeyini alması ve cihazın yine de iç tırnak düzeyini (setprop key 'two words') görmesidir. Kaçış karakteri kullanmak da bir seçenektir ancak genellikle iki kez tırnak işareti kullanmak daha kolaydır.

Sistem günlüğünü izlemek için yararlı olan Logcat komut satırı aracını da inceleyin.

Arama etkinliği yöneticisi

Bir adb kabukta, etkinlik yöneticisi (am) aracıyla komutlar vererek çeşitli sistem işlemleri (ör. etkinlik başlatma, işlemi zorla durdurma, amaç yayınlama, cihaz ekran özelliklerini değiştirme) gerçekleştirebilirsiniz.

Kabukta am söz dizimi şu şekildedir:

am command

Ayrıca, adb uzak kabuğa girmeden doğrudan etkinlik yöneticisi komutu da verebilirsiniz. Örneğin:

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

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

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

Specification for intent arguments (Niyet bağımsız değişkenleri spesifikasyonu) başlıklı makaleyi inceleyin.

Şu seçenekleri kullanabilirsiniz:

  • -D: Hata ayıklamayı etkinleştirin.
  • -W: Lansmanın tamamlanmasını bekleyin.
  • --start-profiler file: Profil aracı başlatılır ve sonuçlar file adresine gönderilir.
  • -P file: --start-profiler gibi, ancak uygulama boşta kaldığında profil oluşturma durur.
  • -R count: Etkinlik başlatma işlemini count kez tekrarlayı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 çalıştırılacağını belirtin. Belirtilmezse mevcut kullanıcı olarak çalıştırılır.
startservice [options] intent Service tarafından belirtilen intent başlatın.

Specification for intent arguments (Niyet bağımsız değişkenleri spesifikasyonu) başlıklı makaleyi inceleyin.

Şu seçenekleri kullanabilirsiniz:

  • --user user_id | current: Hangi kullanıcının çalıştırılacağını belirtin. Belirtilmezse geçerli 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 sonlandırılması güvenli olan ve kullanıcı deneyimini etkilemeyecek işlemleri sonlandırır.

Şu seçenekleri kullanabilirsiniz:

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

Specification for intent arguments (Niyet bağımsız değişkenleri spesifikasyonu) başlıklı makaleyi inceleyin.

Şu seçenekleri kullanabilirsiniz:

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

Şu seçenekleri kullanabilirsiniz:

  • -r: Ham sonuçları yazdırın (aksi takdirde kod çözülür report_key_streamresult). 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 biçim -e testrunner_flag value[,value...] şeklindedir.
  • -p file: Profil oluşturma verilerini file konumuna yazın.
  • -w: Geri 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ümantasyonunun çalıştırılacağını belirtin. Belirtilmezse geçerli kullanıcıda çalıştırılır.
profile start process file process üzerinde profil oluşturma aracını başlatın, sonuçları file konumuna yazın.
profile stop process process üzerinde profiler'ı durdurun.
dumpheap [options] process file process yığınını boşaltın, file adresine yazın.

Şu seçenekleri kullanabilirsiniz:

  • --user [user_id | current]: İş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]: Grafikler belleğinden bit eşlemleri boşaltır (API düzeyi 35 ve üzeri). İsteğe bağlı olarak, döküm yapılacak biçimi belirtin (varsayılan olarak PNG).
  • -n: Yönetilen bellek yığını yerine yerel bellek yığını dökümü oluşturun.
dumpbitmaps [options] [-p process] process (API düzeyi 36 ve üzeri) bit eşlem bilgilerini boşaltın.

Şu seçenekleri kullanabilirsiniz:

  • -d|--dump [format]: Belirtilen format'deki bitmap içeriklerini boşaltır. format, png, jpg veya webp olabilir. Hiçbiri belirtilmemişse varsayılan olarak png kullanılır. Bit eşlemlerle bir zip dosyası dumpbitmaps-<time>.zip oluşturulur.
  • -p process: process konumundan bit eşlemleri boşaltır. Birden fazla -p process belirtilebilir.
process belirtilmezse tüm işlemlerden bit eşlemler dökülür.
set-debug-app [options] package Hata ayıklanacak uygulamayı package olarak ayarlayın.

Şu seçenekleri kullanabilirsiniz:

  • -w: Uygulama başladığında hata ayıklayıcının beklemesini sağlar.
  • --persistent: Bu değeri koruyun.
clear-debug-app set-debug-app ile hata ayıklama için daha önce ayarlanan paketi temizleyin.
monitor [options] Kilitlenmeleri veya ANR'leri izlemeye başlayın.

Şu seçenekleri kullanabilirsiniz:

  • --gdb: Çökme/ANR sırasında belirtilen bağlantı noktasında gdbserv başlatılır.
screen-compat {on | off} package package cihazının ekran uyumluluğu modunu kontrol edin.
display-size [reset | widthxheight] Cihazın ekran boyutunu geçersiz kılın. Bu komut, büyük ekranlı bir cihaz kullanarak küçük ekran çözünürlüğünü taklit ederek uygulamanızı farklı ekran boyutlarında test etmenize yardımcı olur ve bunun tersi de geçerlidir.

Örnek:
am display-size 1280x800

display-density dpi Cihazın görüntü yoğunluğunu geçersiz kılın. Bu komut, düşük yoğunluklu bir ekran kullanarak yüksek yoğunluklu ekran ortamını taklit ederek ve bunun tersini yaparak uygulamanızı farklı ekran yoğunluklarında test etmek için kullanışlıdır.

Örnek:
am display-density 480

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

Specification for intent arguments (Niyet bağımsız değişkenleri spesifikasyonu) başlıklı makaleyi inceleyin.

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

Specification for intent arguments (Niyet bağımsız değişkenleri spesifikasyonu) başlıklı makaleyi inceleyin.

Niyet bağımsız değişkenlerinin özellikleri

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

Paket yöneticisini çağırın (pm)

Bir adb kabuğunda, cihazda yüklü uygulama paketlerinde işlem ve sorgu yapmak için paket yöneticisi (pm) aracıyla komutlar verebilirsiniz.

Kabukta pm söz dizimi şu şekildedir:

pm command

Ayrıca, uzak kabuk girmeden doğrudan adb üzerinden bir paket yöneticisi komutu da verebilirsiniz. Örneğin:

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 yazdırın. İsteğe bağlı olarak yalnızca paket adında filter içindeki metni içeren paketleri yazdırabilirsiniz.

Seçenekler:

  • -f: İlişkilendirilmiş dosyaya bakın.
  • -d: Yalnızca devre dışı bırakılmış paketleri göstermek için 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östermek için filtreleyin.
  • -i: Paketlerin yükleyicisini görü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 yazdırın. İsteğe bağlı olarak yalnızca group içindeki izinleri yazdırabilirsiniz.

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 uygulama için test paketlerini listeler.
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 APK'sının yolunu yazdırın.
install [options] path path tarafından belirtilen bir paketi sisteme yükler.

Seçenekler:

  • -r: Mevcut bir uygulamayı verilerini koruyarak yeniden yükleyin.
  • -t: Test APK'larının yüklenmesine izin verin. Gradle, yalnızca uygulamanızı çalıştırdığınız veya hata ayıklama işlemini gerçekleştirdiğinizde ya da Android Studio'nun Build > Build APK 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.
  • --user user_id: Paketin yükleneceği kullanıcıyı belirtin. Varsayılan olarak, paket cihazda bulunan tüm kullanıcılar için yüklenir.
  • --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ükleyin.
  • -f: Paketi dahili sistem belleğine yükleyin.
  • -d: Sürüm kodu düşürmeye izin verin.
  • -g: Uygulama manifestinde listelenen tüm izinleri verin.
  • --fastdeploy: Yüklü bir paketi, yalnızca değişen APK bölümlerini güncelleyerek hızlıca güncelleyin.
  • --incremental: Kalan veriler arka planda aktarılırken uygulamayı başlatmak için yeterli miktarda APK yükler. 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ğin kullanılmasını zorunlu kılar. Özellik desteklenmiyorsa 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 kullanıcısının bu özelliği kullanmasını engelliyor.

uninstall [options] package Paketi sistemden kaldırır.

Seçenekler:

  • -k: Paket kaldırıldıktan sonra veri ve önbellek dizinlerini tutar.
  • --user user_id: Paketin kaldırıldığı kullanıcıyı belirtir. Varsayılan olarak, paket cihazdaki tüm kullanıcılar için kaldırılır.
  • --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 (ör. "paket/sınıf") etkinleştirin.
disable package_or_component Belirtilen paketi veya bileşeni devre dışı bırakır ("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 verme. Android 6.0 (API seviyesi 23) ve sonraki sürümlerin yüklü olduğu cihazlarda izin, uygulama manifestinde belirtilen herhangi bir izin olabilir. Android 5.1 (API düzeyi 22) ve önceki sürümlerini çalıştıran cihazlarda, uygulama tarafından tanımlanan isteğe bağlı bir izin olmalıdır.
revoke package_name permission Uygulamalardan izinleri iptal etme. Android 6.0 (API seviyesi 23) ve sonraki sürümlerin yüklü olduğu cihazlarda, izin, uygulama manifestinde belirtilen herhangi bir izin olabilir. Android 5.1 (API düzeyi 22) ve önceki sürümlerini ç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: Sistem, en iyi konuma karar verir.
  • 1: Dahili: Dahili cihaz depolama alanına yükleyin.
  • 2: Harici: Harici medyaya yükleyin.

Not: Bu yalnızca hata ayıklama amaçlıdır. Bunu kullanmak, 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 konuma sistem karar versin
  • 1 [internal]: Dahili cihaz depolama alanına yükleme
  • 2 [external]: Harici medyaya yükleme
set-permission-enforced permission [true | false] Belirtilen iznin zorunlu kılınıp kılınmayacağını belirtin.
trim-caches desired_free_space Belirtilen boş alana ulaşmak için önbellek dosyalarını kırpın.
create-user user_name Belirtilen user_name ile yeni bir kullanıcı oluşturun, kullanıcının yeni kullanıcı tanımlayıcısını yazdırın.
remove-user user_id Belirtilen user_id ile kullanıcıyı kaldırma ve bu kullanıcıyla ilişkili tüm verileri silme
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 hiçbiri belirtilmemişse tüm paketler için alan adı doğrulama durumunu yazdırın. Eyalet kodları aşağıdaki şekilde tanımlanır:

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

Şu seçenekleri kullanabilirsiniz:

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

Belirtilen paket veya belirtilmemişse tüm paketler için alan doğrulama durumunu sıfırlar.

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

Şu seçenekleri kullanabilirsiniz:

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

Belirtilen package için veya belirtilmemişse tüm paketler için doğrulama isteği yayınlayın. Yalnızca paket daha önce yanıt kaydetmediyse gönderilir.

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

Bir paketin alan durumunu manuel olarak ayarlayın. Bu özelliğin ç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 "all"
  • state: Alanların ayarlanacağı kod. Geçerli değerler:
    • STATE_NO_RESPONSE (0): Hiç yanıt kaydedilmemiş gibi sıfırlayın.
    • STATE_SUCCESS (1): Alanı, alan doğrulama aracısı tarafından başarıyla doğrulanmış olarak değerlendirin. Alan doğrulama aracısının bu ayarı geçersiz kılabileceğini unutmayın.
    • STATE_APPROVED (2): Alanı her zaman onaylanmış olarak kabul eder ve alan doğrulama aracısının alanı değiştirmesini engeller.
    • STATE_DENIED (3): Alanı her zaman reddedilmiş olarak değerlendirir ve alan doğrulama aracısının alanı değiştirmesini engeller.
  • domains: Değiştirilecek alanların boşlukla ayrılmış listesi veya her alanı değiştirmek için "all".
set-app-links-user-selection --user user_id [--package package] enabled domains

Bir paket için ana makine kullanıcı seçiminin durumunu manuel olarak ayarlayın. Bu özelliğin çalışması için alan adı paket tarafından bildirilmelidir. Bu komut, uygulanamayan alanlar için hata bildirmez.

  • --user user_id: Seçimleri değiştirilecek kullanıcı
  • --package package: ayarlanacak paket
  • enabled: Alanın onaylanıp onaylanmayacağı
  • domains: Değiştirilecek alanların boşlukla ayrılmış listesi veya her alanı değiştirmek için "all"
set-app-links-allowed --user user_id [--package package] allowed

Bir paket için otomatik olarak doğrulanmış bağlantı işleme ayarını açın veya kapatın.

  • --user user_id: Seçimleri değiştirilecek kullanıcı
  • --package package: Ayarlanacak paket veya tüm paketleri ayarlamak için "all"; paket belirtilmezse paketler sıfırlanır
  • allowed: Paketin otomatik olarak doğrulanmış 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 alanın sahiplerini, belirli bir kullanıcı için 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, bir paket tarafından beyan edilen tüm web alanları için de yazdırmak üzere "all" (tümü) seçeneğini belirleyin.
  • domains: sorgulanacak alanların boşlukla ayrılmış listesi

Cihaz politikası yöneticisini arama (dpm)

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

Kabukta dpmsöz dizimi:

dpm command

Ayrıca, adb üzerinden doğrudan bir cihaz politikası yöneticisi komutu da verebilirsiniz. Uzak kabuk girmenize gerek yoktur:

adb shell dpm command

Tablo 3. Kullanılabilir Cihaz Politikası Yöneticisi komutları

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

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Hedef kullanıcıyı belirtin. Ayrıca, geçerli kullanıcıyı seçmek için --user current değerini de iletebilirsiniz.
set-profile-owner [options] component Mevcut bir kullanıcı için component adlı ürünü etkin yönetici ve paketini profil sahibi olarak ayarlayın.

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Hedef kullanıcıyı belirtin. Ayrıca, geçerli kullanıcıyı seçmek için --user current tuşunu da kullanabilirsiniz.
  • --name name: Kullanıcılar tarafından okunabilen kuruluş adını belirtin.
set-device-owner [options] component component'yı etkin yönetici, paketini ise cihaz sahibi olarak ayarlayın.

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Hedef kullanıcıyı belirtin. Ayrıca, geçerli 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.
remove-active-admin [options] component Etkin bir yöneticiyi devre dışı bırakın. Uygulama, manifest dosyasında android:testOnly bildirmelidir. Bu komut, cihaz ve profil sahiplerini de kaldırır.

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Hedef kullanıcıyı belirtin. Ayrıca, geçerli kullanıcıyı seçmek için --user current değerini de iletebilirsiniz.
clear-freeze-period-record Cihazın, sistem OTA güncellemeleri için daha önce ayarlanan dondurma dönemleriyle ilgili kaydını temizleyin. Bu, dondurma dönemlerini yöneten uygulamalar geliştirirken cihaz planlama kısıtlamalarını önlemek için kullanışlıdır. Sistem güncellemelerini yönetme başlıklı makaleyi inceleyin.

Android 9.0 (API düzeyi 28) ve sonraki sürümlerin yüklü olduğu cihazlarda desteklenir.

force-network-logs Sistemi, mevcut ağ günlüklerini bir DPC tarafından alınmaya hazır hale getirmeye zorlayın. Bağlantı veya DNS günlükleri varsa DPC, onNetworkLogsAvailable() geri aramasını alır. Ağ etkinliği günlük kaydı bölümünü inceleyin.

Bu komutun hızı sınırlandırılmıştır. Android 9.0 (API düzeyi 28) ve sonraki sürümlerin yüklü olduğu cihazlarda desteklenir.

force-security-logs Sistemi, mevcut güvenlik günlüklerini DPC'ye sunmaya zorlayın. Günlükler varsa DPC, onSecurityLogsAvailable() geri aramasını alır. Kurumsal cihaz etkinliğini günlüğe kaydetme başlıklı makaleyi inceleyin.

Bu komutun hızı sınırlandırılmıştır. Android 9.0 (API düzeyi 28) ve sonraki sürümlerin yüklü olduğu cihazlarda desteklenir.

Ekran görüntüsü alma

screencap komutu, cihaz ekranının ekran görüntüsünü almak için kullanılan bir kabuk yardımcı programıdır.

Kabukta screencap söz dizimi şu şekildedir:

screencap filename

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

adb shell screencap /sdcard/screen.png

Ekran görüntüsünü yakalamak için adb kabuğunun, dosyayı cihazdan indirmek için ise pull komutunun kullanıldığı örnek 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

Alternatif olarak, dosya adını atlarsanız screencap, resmi standart çıkışa yazar. PNG biçimini belirtme -p seçeneğiyle birlikte kullanıldığında cihaz ekran görüntüsünü doğrudan yerel makinenizdeki bir dosyaya aktarabilirsiniz.

Ekran görüntüsü alıp tek bir komutla yerel olarak kaydetme örneğini aşağıda bulabilirsiniz:

# use 'exec-out' instead of 'shell' to get raw data
$ adb exec-out screencap -p > screen.png

Video kaydetme

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. Bu yardımcı program, ekran etkinliğini MPEG-4 dosyasına kaydeder. Bu dosyayı tanıtım veya eğitim videoları oluşturmak ya da hata ayıklama ve test için kullanabilirsiniz.

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

screenrecord [options] filename

screenrecord komut satırından kullanmak için aşağıdakileri girin:

adb shell screenrecord /sdcard/demo.mp4

Control+C tuşlarına basarak ekran kaydını durdurun. Aksi takdirde, kayıt üç dakika sonra veya --time-limit tarafından belirlenen süre sınırında otomatik olarak durdurulur.

Cihazınızın ekranını kaydetmeye başlamak için screenrecord komutunu çalıştırarak videoyu kaydedin. Ardından, videoyu cihazdan ana bilgisayara indirmek için pull komutunu çalıştırın. Aşağıda örnek bir kayıt oturumu verilmiştir:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

screenrecord yardımcı programı, cihaz ekranının en boy oranını koruyarak istediğiniz desteklenen çözünürlük ve bit hızında kayıt yapabilir. Yardımcı program, varsayılan olarak yerel ekran çözünürlüğünde ve yönünde kayıt yapar. Kayıt süresi en fazla üç dakikadır.

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

  • Ses, video dosyasıyla birlikte kaydedilmez.
  • Video kaydı, Wear OS çalıştıran cihazlarda kullanılamaz.
  • Bazı cihazlar, kendi ekran çözünürlüklerinde kayıt yapamayabilir. Ekran kaydıyla 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önerse kayıtta ekranın bir kısmı kesilir.

Tablo 4. screenrecord seçenekleri

Seçenekler Açıklama
--help Komut söz dizimini ve seçeneklerini görüntüleme
--size widthxheight Video boyutunu ayarlayın: 1280x720. Varsayılan değer, cihazın yerel ekran çözünürlüğüdür (destekleniyorsa). Desteklenmiyorsa 1280x720'dir. En iyi sonuçlar için cihazınızın Advanced Video Coding (AVC) kodlayıcısı tarafından desteklenen bir boyut kullanın.
--bit-rate rate Videonun video bit hızını saniye başına megabit cinsinden ayarlayın. Varsayılan değer 20 Mb/sn'dir. Video kalitesini artırmak için bit hızını yükseltebilirsiniz ancak bu durumda film dosyaları daha büyük olur. Aşağıdaki örnekte kayıt bit hızı 6 Mbps 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 Çı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, 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 Çalışma Zamanı (ART), uygulama performansını optimize etmek için kullanılan yüklü uygulamaların yürütme profillerini toplar. Hangi yöntemlerin sık 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 profili dosya adını yalnızca dosya sistemine kök erişiminiz varsa (ör. bir emülatörde) alabilirsiniz.

Profil bilgilerinin metin biçimini oluşturmak için aşağıdaki komutu kullanın:

adb shell cmd package dump-profiles package

Üretilen 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) faydalı olabilir. Android 10 (API düzeyi 29) veya sonraki sürümlerin yüklü olduğu bir test cihazını fabrika ayarlarına sıfırlamak için testharness adb kabuk komutunu aşağıdaki gibi kullanabilirsiniz:

adb shell cmd testharness enable

Cihazı testharness kullanarak geri yüklerken cihaz, mevcut iş istasyonu üzerinden hata ayıklamaya olanak tanıyan RSA anahtarını kalıcı bir konuma otomatik olarak yedekler. Yani cihaz sıfırlandıktan sonra iş istasyonu, yeni bir anahtarı manuel olarak kaydetmeden cihazda hata ayıklamaya ve cihaza adb komutları vermeye devam edebilir.

Ayrıca, uygulamanızı test etmeye devam etmenizi kolaylaştırmak ve güvenliğini artırmak için testharness kullanılarak cihaz geri yüklendiğinde aşağıdaki cihaz ayarları da değiştirilir:

  • 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ılaması ve bu ayarlara uyum sağlaması gerekiyorsa ActivityManager.isRunningInUserTestHarness() kullanın.

sqlite

sqlite3, SQLite veritabanlarını incelemek için sqlite komut satırı programını başlatır. Tablo 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ı 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ı belgelerine bakın.

adb USB arka uçları

adb sunucusu, USB yığınıyla iki arka uç üzerinden etkileşim kurabilir. İşletim sisteminin (Windows, Linux veya macOS) yerel arka ucunu 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 sistemine göre değişir. ADB v34'ten itibaren, yerel arka uçun varsayılan olarak kullanıldığı Windows hariç tüm işletim sistemlerinde varsayılan olarak liubusb arka ucu kullanılır. ADB_LIBUSB ayarlanırsa yerel arka ucun mu yoksa libusb'nin mi kullanılacağını belirler. adb ortam değişkenleri hakkında daha fazla bilgi için adb kılavuz sayfasına bakın.

adb mDNS backends

ADB, sunucu ile 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 uçla birlikte gelir.

Bonjour arka ucunun, ana makinede bir daemon'un çalışması gerekir. macOS'te 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üyorsa ADB'nin Bonjour arka ucunu kullandığı ancak Bonjour daemon'unun çalışmadığı anlaşılır.

Openscreen arka ucunun makinede bir arka plan programının çalışması gerekmez. macOS'te Openscreen arka ucu için destek, ADB v35'ten itibaren sunulmaktadır. ADB v34'ten itibaren Windows ve Linux 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 kılavuz sayfasına bakın.

adb Burst Mode (ADB 36.0.0'dan itibaren)

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

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

  • ADB_DELAYED_ACK ortam değişkenini 1 olarak ayarlayın.
  • Android Studio'da File (veya macOS'te Android Studio) > Settings > Build, Execution, Deployment > Debugger'a giderek hata ayıklayıcı ayarlarını açın ve ADB Server Burst Mode'u Enabled (Etkin) olarak ayarlayın.