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

Android Debug Bridge (adb), cihazlarla iletişim kurmanızı sağlayan çok yönlü bir komut satırı aracıdır. adb komutu, uygulamaların yüklenmesi ve hatalarının ayıklanması 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şen içeren bir istemci-sunucu programıdır:

  • Komut gönderen bir istemci. İstemci, geliştirme makinenizde çalışır. adb komutu yayınlayarak komut satırı terminalinden istemci çağırabilirsiniz.
  • Bir cihazda komutları çalıştıran arka plan programı (adbd). Arka plan programı her cihazda bir arka plan işlemi olarak çalışır.
  • İstemci ile arka plan programı arasındaki iletişimi yöneten bir sunucu. Sunucu, geliştirme makinenizde bir arka plan işlemi olarak çalışır.

adb, Android SDK Platform Araçları paketine dahildir. Bu paketi, android_sdk/platform-tools/ adresinden yükleyen SDK Yöneticisi ile indirin. Bağımsız Android SDK Platform Araçları paketini isterseniz buradan indirin.

Sık karşılaşılan sorunları gidermek amacıyla Bağlantı Asistanı'nın nasıl kullanılacağı dahil olmak üzere, adb üzerinden kullanılmak üzere cihaz bağlama hakkında bilgi edinmek için Donanım cihazında uygulama çalıştırma konusuna bakın.

Adb nasıl çalışır?

Bir adb istemcisi başlattığınızda, istemci önce halihazırda çalışan bir adb sunucu işlemi olup olmadığını kontrol eder. Başka bir dosya 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 ila 5585 aralığı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, konsol bağlantıları için çift numaralı bir bağlantı noktası ve adb bağlantıları için tek numaralı bir bağlantı noktası olmak üzere bir çift sıralı bağlantı noktası kullanı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 öğesine bağlanan emülatör, konsolunun 5554 numaralı bağlantı noktasında dinleme yaptığı emülatörle aynıdır.

Sunucu tüm cihazlara bağlantı kurduktan sonra bu cihazlara erişmek için adb komutlarını kullanabilirsiniz. Sunucu, cihazlarla olan 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ıklamasını etkinleştirme

Adb'yi USB üzerinden bağlı bir cihazla kullanmak için cihazın sistem ayarlarında Geliştirici seçenekleri 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 öğesini yürüterek cihazınızın bağlı olduğunu doğrulayabilirsiniz. Bağlandıysanız cihaz adını "cihaz" olarak listelenmiş halde 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ı kabul edip etmeyeceğinizi 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 üzerinden hata ayıklama ve diğer adb komutlarının yürütülememesini sağladığı için kullanıcı cihazlarını korur.

USB üzerinden cihaza 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ğ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 edinmek için Wear OS uygulamasında hata ayıklama rehberine bakabilirsiniz.

Android 11 (API düzeyi 30) ve üstü destek, Android Debug Bridge (adb) kullanarak uygulamanızı iş istasyonunuzdan kablosuz olarak dağıtma ve hata ayıklama desteği sağlar. Örneğin, hata ayıklaması yapılabilir 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 ilgilenmeniz gerekmez.

Kablosuz hata ayıklama özelliğini kullanmaya başlamadan önce aşağıdakileri yapın:

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

  • Cihazınızın telefon için Android 11 (API düzeyi 30) veya sonraki bir sürümünü, TV ve Wear OS için Android 13 (API düzeyi 33) veya sonraki bir sürümünü ç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'yi kullanıyorsanız Android Studio'nun en son sürümünün yüklü olduğundan emin olun. Buradan indirebilirsiniz.

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

Kablosuz hata ayıklamayı 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ır menüsünden Cihazları Kablosuz Ağ Kullanarak Eşle'yi seçin.

    Yapılandırmaları çalıştır 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ğ pop-up penceresinden eşlenen cihazları ekran görüntüsü
    2. Şekil. Cihazları QR kodu veya eşleme kodu kullanarak 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:

    Kablosuz hata ayıklama sistemleri ayarını gösteren piksel 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ı 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'ından alınan QR kodunu tarayın.

    2. Cihazınızı bir eşleme koduyla eşlemek için Cihazları kablosuz ağ üzerinden eşle pop-up penceresinden Eşleme koduyla cihaz 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 Cihazları kablosuz ağ üzerinden eşle 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ü
      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ünde iş istasyonunuzun adına dokunun ve Unut'u seçin.

  5. Kablosuz hata ayıklama özelliğini hızlı bir şekilde açıp kapatmak isterseniz Geliştirici Seçenekleri > Hızlı ayarlar geliştirici kutuları'nda bulunan Kablosuz hata ayıklama için Hızlı ayarlar geliştirici bloklarını kullanabilirsiniz.

    Google Pixel telefondan Hızlı Ayarlar geliştirici bloklarının ekran görüntüsü
    5. Şekil. Hızlı ayarlar geliştirici kutuları ayarı, kablosuz hata ayıklama özelliğini 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ı uygulayın:

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

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

  3. İş istasyonunuzda bir terminal penceresi açın ve android_sdk/platform-tools hedefine 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 eşleme kodunu aşağıda gösterildiği gibi girin.

    Komut satırındaki eşlemenin 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ğ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 etme

İş 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 edin

Aşağıda, kablosuz hata ayıklama ile ilgili bilinen mevcut sorunların (adb veya Android Studio ile) bir listesi ve bunların nasıl çözüleceği açıklanmıştı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. Kabloyla veya başka bir (kurumsal olmayan) kablosuz ağ ile bağlanmayı deneyin. TCP/ip üzerinden adb connect ip:port kullanarak kablosuz bağlantı (ilk USB bağlantısının ardından) diğer bir seçenektir. Şirkete ait olmayan bir ağa başvurmak gibi bir seçenek de olabilir.

  • Kablosuz ağ üzerinden adb bazen otomatik olarak kapanıyor: Bu durum, cihaz kablosuz ağları değiştiriyorsa veya ağ bağlantısını keserse meydana gelebilir. Sorunu çözmek için ağa yeniden bağlanın.

  • Cihaz başarıyla eşlendikten sonra bağlanmıyor: adb, eşlenen cihazları keşfetmek ve bunlara otomatik olarak bağlanmak için mDNS'yi kullanıyor. Ağınız veya cihaz yapılandırmanız mDNS'yi desteklemiyorsa ya da bu özelliği devre dışı bırakmışsa adb connect ip:port özelliğini kullanarak cihaza manuel olarak bağlanmanız gerekir.

İlk USB bağlantısından sonra cihaza kablosuz olarak bağlanın (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. Fiziksel USB üzerinden *başlangıç* bağlantıyı da gerektireceğini göz önünde bulundurun.

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 edinmek 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 ürününü kablosuz bağlantı üzerinden de kullanabilirsiniz. Android 10 (API düzeyi 29) veya daha eski 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ını ortak bir kablosuz ağa bağlayın.
  2. Not: Tüm erişim noktalarının uygun olmadığını unutmayın. Güvenlik duvarı adb özelliğini desteklemek için doğru şekilde yapılandırılmış bir erişim noktası kullanmanız gerekebilir.

  3. Cihazı bir USB kablosuyla ana bilgisayara bağlayın.
  4. Hedef cihazı, 5555 numaralı bağlantı noktasından bir 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 adresini kullanarak 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 adlı ağa bağlı.

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

  • Barındırıcınızın hâlâ 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.

Cihazlar için sorgu

adb komutlarını yayınlamadan önce, adb sunucusuna hangi cihaz örneklerinin bağlı olduğunu bilmek faydalıdır. devices komutunu kullanarak ekli cihazların listesini oluşturun:

  adb devices -l
  

Bunun üzerine adb, her cihaz için şu durum bilgilerini yazdırır:

  • Seri numarası: adb, cihazı bağlantı noktası numarasına göre 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ıdır. Cihaz, sistem hâlâ önyükleme sırasında adb uygulamasına bağlandığından, bu durumun Android sisteminin tamamen başlatıldığı ve çalışır durumda olduğu anlamına gelmediğine dikkat edin. Bu durum, başlatıldıktan sonra cihazın normal çalışma durumudur.
    • no device: Bağlı bir cihaz yok.
  • Açıklama: -l seçeneğini eklerseniz devices komutu cihazın ne olduğunu söyler. Bu bilgiler, bağlı birden çok cihazınız olduğunda bunları birbirinden ayırt edebilmeniz için yararlıdır.

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

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

Emülatör listede yok

adb devices komutu, emülatörler masaüstünüzde görünür olsa bile çalışan emülatörlerin adb devices çıkışında görünmemesine neden olan bir köşeden bağımsız komut sırasına sahiptir. 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ğerine sahip -port veya -ports seçeneğiyle kullanırsınız.
  • Seçtiğiniz tek numaralı bağlantı noktası meşgul olmadığı için bağlantı noktası bağlantısı belirtilen bağlantı noktası numarasından yapılabilir. Bağlantı noktası meşgulse emülatör 2. maddedeki gereksinimleri 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 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, aşağıdaki örneklerde açıklandığı gibi, emulator komutunu kullanmadan önce her zaman başlatmaktı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ırada girin. AVD adı için sisteminizden geçerli bir AVD adı sağlayın. AVD adlarının listesini almak için emulator -list-avds yazın. emulator komutu android_sdk/tools dizinindedir.

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices

List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

2. Örnek: İlk olarak adb sunucusu başlatıldığı için aşağıdaki komut sırasında adb devices, cihazların listesini gösterir.

Emülatörü adb devices çıktısında görmek için adb sunucusunu durdurun ve emulator komutunu kullandıktan sonra ve adb devices komutunu kullanmadan önce aşağıdaki gibi yeniden 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 verdiğinizde 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ı öğrendikten sonra adb komutlarıyla -s seçeneğini kullanarak seri numarasını belirtin.
    1. Çok sayıda adb komutu yayınlayacaksanız $ANDROID_SERIAL ortam değişkenini, seri numarasını içerecek şekilde ayarlayabilirsiniz.
    2. Hem -s hem de $ANDROID_SERIAL kullanıyorsanız -s, $ANDROID_SERIAL değerini geçersiz kılar.

Aşağıdaki örnekte, ekli cihazların listesi alınmış ve bu cihaza helloWorld.apk 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 fazla cihaz mevcutken bir hedef cihaz belirtmeden bir komut yayınlarsanız adb "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ı takılıysa komutları donanım cihazına 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üklerken install komutuyla -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 uygulamasını kullanın. Bu, uygulamanız için belirli bir cihaza ait tüm APK'ları Play Console'dan indirip bunları bir emülatöre veya fiziksel cihaza yüklemek istediğinizde yararlı olur.

Bir emülatör/cihaz örneğine yükleyebileceğiniz bir APK dosyasını nasıl oluşturacağınız hakkında daha fazla bilgi için Uygulamanızı oluşturma ve çalıştırma bölümüne 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 paketleme ve yüklenme işlemlerini Android Studio sizin yerinize 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 ayarlanır:

adb forward tcp:6100 tcp:7100

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

adb forward tcp:6100 local:logd

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

Cihaza/cihazdan dosya kopyalama

Dosyaları bir cihaza/cihazdan kopyalamak için pull ve push komutlarını kullanın. Bir APK dosyasını yalnızca belirli bir konuma kopyalayan install komutundan farklı olarak, 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 (uzaktan kumanda) hedef dosyalara/dizine giden yollarla değiştirin. Örneğin:

adb push myfile.txt /sdcard/myfile.txt

Adb sunucusunu durdurma

Bazı durumlarda, sorunu çözmek için adb sunucu işlemini sonlandırmanız ve ardından yeniden başlatmanız gerekebilir. Örneğin, adb bir komuta yanıt vermezse 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ını yayınlama

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

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

Çalışan yalnızca bir emülatör varsa veya yalnızca tek 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önlendirilmesi gereken hedef cihazı belirtmek için -d, -e ya da -s seçeneğini kullanmanız gerekir.

Desteklenen tüm adb komutlarının ayrıntılı listesini görmek için aşağıdaki komutu kullanabilirsiniz:

adb --help

Kabuk komutları yayınlama

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

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

Bir cihazda etkileşimli kabuk başlatmak için shell komutunu ş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, bilindik Unix komut satırı araçlarının çoğunu sağlar. Kullanılabilir araçların listesi için aşağıdaki komutu kullanın:

adb shell ls /system/bin

--help bağımsız değişkeni aracılığıyla komutların çoğu için yardım alabilirsiniz. Kabuk komutlarının çoğu toybox tarafından sağlanır. Tüm oyuncak kutusu komutları için geçerli olan genel yardımı toybox --help üzerinden alabilirsiniz.

Android Platform Araçları 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 çözmüştür ve adb install Let\'sGo.apk gibi kabuk meta karakterleri içeren komutların güvenli bir şekilde çalıştırılabilmesini sağlamaktadır. Bu değişiklik, kabuk meta karakterleri içeren tüm komutların yorumlanmasının da değiştiği anlamına gelir.

Örneğin, tek tırnak işaretleri (') yerel kabuk tarafından yutulduğunda ve cihaz adb shell setprop key value algıladığı için adb shell setprop key 'value' artık bir hatadır. Komutun çalışmasını sağlamak amacıyla, yerel kabuk için bir kez ve uzak kabuk için bir kez olmak üzere ssh(1) için olduğu gibi iki kez alıntı yapın. Örneğin, adb shell setprop key 'value' .

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

Arama etkinliği yöneticisi

Bir adb kabuğunda, etkinlik başlatma, işlemi zorla durdurma, amaç 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 komutlar yayınlayabilirsiniz.

Kabuk içindeyken am söz dizimi şöyledir:

am command

Ayrıca, uzak kabuk girmeden doğrudan adb üzerinden bir etkinlik yöneticisi komutu yayınlayabilirsiniz. Ö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 intent tarafından belirtilen bir Activity başlatın.

Amaç bağımsız değişkenlerinin spesifikasyonu bölümüne bakın.

Şu seçenekleri kullanabilirsiniz:

  • -D: Hata ayıklamayı etkinleştir.
  • -W: Başlatma işleminin tamamlanmasını bekleyin.
  • --start-profiler file: Profil oluşturucuyu başlatın ve sonuçları şuraya gönderin: file.
  • -P file: --start-profiler gibi ancak uygulama boşta kaldığında profil oluşturma işlemi durur.
  • -R count: Etkinlik başlatma işlemini count kez tekrarlayın. Her tekrardan önce en önemli etkinlik bitmiş olur.
  • -S: Etkinliğe başlamadan önce hedef uygulamayı zorla durdurun.
  • --opengl-trace: OpenGL işlevlerinin izlenmesini etkinleştir.
  • --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.
startservice [options] intent intent tarafından belirtilen Service işlemini başlatın.

Amaç bağımsız değişkenlerinin spesifikasyonu bölümüne bakın.

Şu seçenekleri kullanabilirsiniz:

  • --user user_id | current: Hangi kullanıcı olarak çalıştırılacağını belirtin. Belirtilmemişse geçerli kullanıcı olarak çalıştırın.
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 güvenli olan ve kullanıcı deneyimini etkilemeyen 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 Arka plandaki tüm işlemleri durdurun.
broadcast [options] intent Yayın amacı gönderin.

Amaç bağımsız değişkenlerinin spesifikasyonu bölümüne bakın.

Şu seçenekleri kullanabilirsiniz:

  • [--user user_id | all | current]: E-postanın hangi kullanıcıya gönderileceğini belirtin. Belirtilmemişse tüm kullanıcılara gönderin.
instrument [options] component Instrumentation örneğiyle izlemeyi başlatın. Genellikle hedef component, test_package/runner_class biçimindedir.

Şu seçenekleri kullanabilirsiniz:

  • -r: Ham sonuçları yazdırın (aksi halde report_key_streamresult kodunu çözün.) Performans ölçümleri için ham çıktı üretmek için [-e perf true] ile birlikte kullanın.
  • -e name value: name bağımsız değişkenini value olarak ayarlayın. Test yürütücüler için yaygın bir biçim -e testrunner_flag value[,value...]'dir.
  • -p file: Profil oluşturma verilerini file ürününe yazın.
  • -w: Geri dönmeden önce araçların tamamlanmasını bekleyin. Test kullanıcıları için gereklidir.
  • --no-window-animation: Çalışırken pencere animasyonlarını devre dışı bırakır.
  • --user user_id | current: Hangi kullanıcı araçlarının çalışacağını belirtin. Belirtilmezse geçerli kullanıcıda çalıştırın.
profile start process file Profil oluşturucuyu process cihazında başlatın, sonuçları file adlı cihaza yazın.
profile stop process process adlı cihazda profil oluşturucuyu durdurun.
dumpheap [options] process file process yığınını aktarın, file hedefine yazın.

Şu seçenekleri kullanabilirsiniz:

  • --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 package uygulamasını hata ayıklamaya ayarlayın.

Şu seçenekleri kullanabilirsiniz:

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

Şu seçenekleri kullanabilirsiniz:

  • --gdb: Kilitlenme/ANR sırasında belirtilen bağlantı noktasında gdbserv işlemini başlatın.
screen-compat {on | off} package package öğesinin ekran uyumluluğu modunu kontrol edin.
display-size [reset | widthxheight] Cihaz görüntü boyutunu geçersiz kıl. 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 etmeye yardımcı olur. Aynı şekilde, büyük ekranlı bir cihaz kullanarak da uygulamanızı farklı ekran boyutlarında test edebilirsiniz.

Örnek:
am display-size 1280x800

display-density dpi Cihaz görüntü yoğunluğunu geçersiz kıl. Bu komut, düşük yoğunluklu bir ekran kullanarak yüksek yoğunluklu ekran ortamını taklit ederek uygulamanızı farklı ekran yoğunluklarında test etmeye yardımcı olur. Aynı şekilde düşük yoğunluklu bir ekran ortamı da taklit edilir.

Örnek:
am display-density 480

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

Amaç bağımsız değişkenlerinin spesifikasyonu bölümüne bakın.

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

Amaç bağımsız değişkenlerinin spesifikasyonu bölümüne bakın.

Amaç bağımsız değişkenlerinin spesifikasyonu

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

Paket yöneticisini (pm) ara

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

Kabuk içindeyken pm söz dizimi şöyledir:

pm command

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

adb shell pm uninstall com.example.MyApp

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

Komut Açıklama
list packages [options] filter İsteğe bağlı olarak yalnızca paket adı filter içindeki metni içeren tüm paketleri yazdırın.

Seçenekler:

  • -f: İlişkili dosyayı gösterir.
  • -d: Yalnızca devre dışı bırakılan paketleri gösterecek şekilde filtreleyin.
  • -e: Yalnızca etkin paketleri gösterecek şekilde filtreleyin.
  • -s: Yalnızca sistem paketlerini gösterecek şekilde filtreleyin.
  • -3: Yalnızca üçüncü taraf paketlerini gösterecek şekilde filtreleyin.
  • -i: Paketler için yükleyiciyi görün.
  • -u: Yüklemesi kaldırılan paketleri dahil et.
  • --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 ve isteğe bağlı olarak yalnızca group politikasındakileri yazdırın.

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 paketine ilişkin 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'sının yolunu yazdırın.
install [options] path path tarafından belirtilen bir paketi sisteme yükleyin.

Seçenekler:

  • -r: Mevcut bir uygulamayı, verilerini koruyarak yeniden yükleyin.
  • -t: Test APK'larının yüklenmesine izin ver. Gradle, yalnızca uygulamanızı çalıştırdığınızda, hata ayıkladığınızda ya da Android Studio Build > Build APK komutunu kullandığınızda bir test APK'sı oluşturur. APK, geliştirici önizleme SDK'sı kullanılarak oluşturulmuşsa test APK'sı yüklüyorsanız install komutuyla birlikte -t seçeneğini eklemeniz gerekir.
  • -i installer_package_name: Yükleyici paket adını belirtin.
  • --install-location location: Aşağıdaki değerlerden birini kullanarak yükleme konumunu ayarlayın:
    • 0: Varsayılan yükleme konumunu kullan.
    • 1: Dahili cihaz depolama alanına yükle.
    • 2: Harici medyaya yükleyin.
  • -f: Paketi dahili sistem belleğine yükler.
  • -d: Sürüm kodu eski sürüme geçirmeye izin ver.
  • -g: Uygulama manifestinde listelenen tüm izinleri verebilirsiniz.
  • --fastdeploy: Yüklü bir paketi, yalnızca APK'nın değişen bölümlerini güncelleyerek hızlı bir şekilde güncelleyin.
  • --incremental: Kalan verileri arka planda aktarırken uygulamayı başlatmaya yetecek kadar APK yükler. Bu özelliği kullanmak için APK'yı imzalamanız, bir APK İmza Şeması v4 dosyası oluşturmanız ve bu dosyayı APK ile aynı dizine yerleştirmeniz gerekir. Bu özellik yalnızca belirli cihazlarda desteklenir. Bu seçenek, adb özelliğinin özelliği kullanmasını veya desteklenmiyorsa başarısız olmasının nedeni hakkında ayrıntılı bilgilerle birlikte başarısız olmasını sağ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 uygulamasının 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 tut.
  • --user user_id: Paketin kaldırılacağı kullanıcıyı belirtir.
  • --versionCode version_code: Yalnızca uygulama verilen sürüm koduna sahipse yüklemeyi kaldırı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 bu 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 uygulamanın iznini iptal etme. Android 6.0 (API düzeyi 23) ve sonraki sürümleri çalıştıran cihazlarda bu 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 sistem belirlesin.
  • 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 yol açabilir.

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 uygulanı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şturup kullanıcının yeni kullanıcı tanımlayıcısını yazdırın.
remove-user user_id Belirtilen user_id öğesine sahip kullanıcıyı kaldırın ve bu kullanıcıyla ilişkilendirilmiş tüm veriler silin
get-max-users Cihaz tarafından desteklenen maksimum sayıda kullanıcı yazdır.
get-app-links [options] [package]

Belirtilen package için alan doğrulama durumunu veya herhangi bir değer belirtilmemişse tüm paketler için durumu 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: doğrulama eski bir yanıttan korundu
  • restored: kullanıcı verilerini geri yükleme işleminden korunmuş doğrulama
  • legacy_failure: Eski bir doğrulayıcı tarafından reddedildi, nedeni bilinmiyor
  • system_configured: cihaz yapılandırması tarafından otomatik olarak onaylanır
  • >= 1024: Cihaz doğrulayıcıya özgü özel hata kodu

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Kullanıcı seçimlerini dahil eder. Yalnızca autoVerify olanları değil, tüm alanları dahil edin.
reset-app-links [options] [package]

Belirtilen paket veya herhangi bir değer belirtilmezse 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ü"

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Kullanıcı seçimlerini dahil eder. Yalnızca autoVerify olanları değil, tüm alanları dahil edin.
verify-app-links [--re-verify] [package]

Belirtilen package veya herhangi bir paket belirtilmezse tüm paketler için doğrulama isteği yayınlayın. Yalnızca paket daha önce yanıt kaydetmediyse gönderir.

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

Bir paket için bir alanın durumunu manuel olarak ayarlayın. Bu özelliğin çalışması için alanın paket tarafından autoVerify olarak beyan edilmesi gerekir. Bu komut, uygulanamayan alanlarla ilgili hataları bildirmez.

  • --package package: ayarlanacak paket veya tüm paketleri ayarlamak için "tümü"
  • state: Alanların ayarlanacağı kod. Geçerli değerler şunlardır:
    • STATE_NO_RESPONSE (0): Hiç yanıt kaydedilmemiş gibi sıfırlanır.
    • STATE_SUCCESS (1): Alanı, 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 adını her zaman onaylı olarak ele alın ve alan doğrulama aracısının bu bilgiyi değiştirmesini önleyin.
    • STATE_DENIED (3): Alan adını her zaman reddedilmiş olarak ele alarak alan doğrulama aracısının değiştirmesini önler.
  • domains: Değiştirilecek alan adlarının boşlukla ayrılmış listesi veya her alanı değiştirmek için "tümü".
set-app-links-user-selection --user user_id [--package package] enabled domains

Bir paket için barındırıcı kullanıcı seçiminin durumunu manuel olarak ayarlayın. Bunun işe yaraması için alanın paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için hata bildirmez.

  • --user user_id: seçimlerini değiştirecek kullanıcı
  • --package package: ayarlanacak paket
  • enabled: Alanın onaylanıp onaylanmayacağı
  • domains: Değiştirilecek alan adlarının boşlukla ayrılmış listesi veya her alanı değiştirmek için "tümü"
set-app-links-user-selection --user user_id [--package package] enabled domains

Bir paket için barındırıcı kullanıcı seçiminin durumunu manuel olarak ayarlayın. Bunun işe yaraması için alanın paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için hata bildirmez.

  • --user user_id: seçimlerini değiştirecek kullanıcı
  • --package package: ayarlanacak paket
  • enabled: Alanın onaylanıp onaylanmayacağı
  • domains: Değiştirilecek alan adlarının boşlukla ayrılmış listesi veya her alanı değiştirmek için "tümü"
set-app-links-allowed --user user_id [--package package] allowed

Bir paketin otomatik olarak doğrulanan bağlantı işleme ayarını açın/kapatın.

  • --user user_id: seçimlerini değiştirecek kullanıcı
  • --package package: Ayarlanacak paket veya tüm paketleri ayarlamak için "tümü"; paket belirtilmezse paketler sıfırlanır
  • allowed: True (doğru) değerine; paketin, otomatik olarak doğrulanan bağlantıları açmasına izin vermek için, devre dışı bırakmak için yanlış değerine sahiptir
get-app-link-owners --user user_id [--package package] domains

Belirli bir kullanıcı için belirli bir alan adının sahiplerini düşük öncelikli olandan yüksek öncelikliye doğru yazdırın.

  • --user user_id: sorgulanacak kullanıcı
  • --package package: İsteğe bağlı olarak bir paket tarafından belirtilen tüm web alanları için de yazdırabilirsiniz veya tüm paketleri yazdırmak için "tümü"nü yazdırabilirsiniz
  • domains: sorgulanacak alan adlarının boşlukla ayrılmış listesi

Cihaz politikası yöneticisini (dpm) ara

Cihaz yönetimi uygulamalarınızı geliştirip test etmenize yardımcı olması için Cihaz Politikası Yöneticisi (dpm) aracına komut gönderin. Aracı kullanarak etkin yönetici uygulamasını kontrol edin veya cihazdaki bir politikanın durum verilerini değiştirin.

Kabuk içindeyken dpmsöz dizimi şöyle olur:

dpm command

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

adb shell dpm command

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

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

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Hedef kullanıcıyı belirtin. Geçerli kullanıcıyı seçmek için --user current değerini de iletebilirsiniz.
set-profile-owner [options] component component öğesini etkin yönetici, paketi ise mevcut bir kullanıcı için profil sahibi olarak ayarlayın.

Şu seçenekleri kullanabilirsiniz:

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

Şu seçenekleri kullanabilirsiniz:

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

Şu seçenekleri kullanabilirsiniz:

  • --user user_id: Hedef kullanıcıyı belirtin. 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 önceden ayarlanmış dondurma dönemleri kaydını temizleyin. Bu, dondurma sürelerini yöneten uygulamalar geliştirirken cihaz zamanlama 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 zorlayın. Bağlantı veya DNS günlükleri varsa DPC onNetworkLogsAvailable() geri çağırmasını alır. Ağ etkinliği günlük kaydı başlıklı makaleyi inceleyin.

Bu komut hız kısıtlamalı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 sunun. Günlükler varsa DPC onSecurityLogsAvailable() geri çağırmasını alır. Kurumsal cihaz etkinliğini günlüğe kaydetme başlıklı makaleye göz atın.

Bu komut hız kısıtlamalı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ü almayı sağlayan bir kabuk yardımcı programıdır.

Kabuk içindeyken screencap söz dizimi şöyledir:

screencap filename

screencap komutunu komut satırından kullanmak için aşağıdaki komutu girin:

adb shell screencap /sdcard/screen.png

Aşağıda, 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ü oturumu örneği verilmiştir:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

Video kaydet

screenrecord komutu, Android 4.4 (API düzeyi 19) ve sonraki sürümleri çalıştıran cihazların görünümünü kaydetmek için bir kabuk yardımcı programıdır. Yardımcı program, ekran etkinliğini bir MPEG-4 dosyasına kaydeder. Bu dosyayı tanıtım veya eğitim videoları oluşturmak ya da hata ayıklama ve test yapmak için kullanabilirsiniz.

Kabuk içinde aşağıdaki söz dizimini kullanın:

screenrecord [options] filename

screenrecord komutunu komut satırından kullanmak için aşağıdaki komutu girin:

adb shell screenrecord /sdcard/demo.mp4

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

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

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

screenrecord yardımcı programı, cihaz ekranının en boy oranını korurken, istediğiniz desteklenen çözünürlükte ve bit hızında kayıt yapabilir. Yardımcı program, varsayılan olarak yerel ekran çözünürlüğünde ve yönünde, maksimum üç dakika uzunlukta kaydeder.

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

  • Ses, video dosyasıyla birlikte kaydedilmez.
  • Wear OS yüklü cihazlarda video kaydı yapılamaz.
  • Bazı cihazlar yerel ekran çözünürlüklerinde kayıt yapamayabilir. Ekran kaydetmeyle ilgili sorun yaşarsanız daha düşük bir ekran çözünürlüğü kullanmayı deneyin.
  • Kayıt sırasında ekranın döndürülmesi desteklenmez. Kayıt sırasında ekran dönerse kayıt sırasında ekranın bir kısmı kesilir.

Tablo 4. screenrecord seçenek

Seçenekler Açıklama
--help Komut söz dizimini ve seçeneklerini göster
--size widthxheight Video boyutunu ayarlayın: 1280x720. Varsayılan değer, cihazın yerel ekran çözünürlüğüdür (destekleniyorsa), desteklenmiyorsa 1280x720. En iyi sonuçlar için cihazınızın Gelişmiş Video Kodlama (AVC) kodlayıcısı tarafından desteklenen bir boyutu kullanın.
--bit-rate rate Videonun bit hızını, saniye başına megabit cinsinden belirleyin. Varsayılan değer 4 Mb/sn'dir. Video kalitesini iyileştirmek için bit hızını artırabilirsiniz, ancak bunu yaptığınızda daha büyük film dosyaları elde edilir. 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 herhangi bir bilgi görüntülemez.

Uygulamalar için ART profillerini okuma

Android Runtime (ART), Android 7.0 sürümünden (API düzeyi 24) itibaren yüklü uygulamalara ait yürütme profillerini toplar. Bu profiller, uygulama performansını optimize etmek için kullanılır. Sık çalıştırılan yöntemleri ve uygulama başlatma sırasında hangi sınıfların kullanıldığını anlamak için toplanan profilleri inceleyin.

Not: Yürütme profilinin dosya adını alabilmeniz için dosya sistemine kök erişiminiz olması gerekir (örneğin, bir emülatörde).

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

adb shell cmd package dump-profiles package

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

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

Test cihazlarını sıfırla

Uygulamanızı birden fazla test cihazında test ediyorsanız testler arasında cihazınızı sıfırlamak (örneğin, kullanıcı verilerini kaldırmak ve test ortamını sıfırlamak) faydalı olabilir. Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran bir test cihazını aşağıdaki gibi testharness adb kabuk komutunu kullanarak fabrika ayarlarına sıfırlayabilirsiniz:

adb shell cmd testharness enable

testharness kullanılarak cihaz geri yüklenirken, cihaz RSA anahtarını otomatik olarak yedekler. Böylece, geçerli iş istasyonu aracılığıyla kalıcı bir konumda hata ayıklama yapılabilir. 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 kullanarak uygulamanızı test etmeye devam etmeyi daha kolay ve daha güvenli hale getirmek amacıyla aşağıdaki cihaz ayarları da değişir:

  • Cihaz, ilk cihaz kurulum sihirbazlarının görünmemesi için belirli sistem ayarlarını yapar. Diğer bir deyişle 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 bunlara uyum sağlaması gerekiyorsa ActivityManager.isRunningInUserTestHarness() işlevini kullanın.

sqlite

sqlite3, SQLite veritabanlarını incelemek için sqlite komut satırı programını başlatır. Etiket, bir tablonun içeriğini yazdırmak için .dump ve mevcut bir tablonun SQL CREATE ifadesini yazdırmak için .schema gibi komutlar içerir. SQLite komutlarını, aşağıda gösterildiği gibi komut satırından da yürütebilirsiniz:

$ adb -s emulator-5554 shell
$ sqlite3 /data/data/com.example.app/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions

Not: SQLite veritabanına erişebilmeniz için dosya sistemine kök erişiminiz olması gerekir (ör. bir emülatörde).

Daha fazla bilgi için sqlite3 komut satırı dokümanlarına bakın.

adb USB arka uçları

Adb sunucusu, iki arka uç üzerinden USB yığınıyla etkileşim kurabilir. OS'in 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 arka uç seçebilirsiniz. Ayarlanmazsa adb, varsayılan arka ucunu kullanır. Varsayılan davranış işletim sistemine göre değişir. API düzeyi 34'ten itibaren yerel arka uç varsayılan olarak kullanılır. ADB_LIBUSB ayarlanırsa yerel arka ucun mu yoksa libusb öğesinin 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, sunucu ve cihazları otomatik olarak bağlamak için çoklu yayın DNS protokolünü kullanabilir. ADB sunucusu, Bonjour (Apple'ın mdnsResponseer) ve Openscreen olmak üzere iki arka uçla gönderilir.

Bonjour arka ucunun ana makinede çalışması için bir arka plan programı gerekir. macOS 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 açık ve çalışır durumda olduğundan emin olması gerekir. adb mdns check komutu hata döndürürse ADB, Bonjour arka ucunu kullanıyor olabilir ancak Bonjour arka plan programı çalışmıyordur.

Openscreen arka ucunun makine üzerinde çalışması için bir arka plan programı gerektirmez. macOS'te Openscreen arka ucu desteği ADB v35'ten başlar. Windows ve Linux, ADB v34 sürümünden itibaren desteklenir.

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 ayrıntılı bilgi için ADB manuel sayfasına bakın.