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ı yükleme ve uygulamalarda 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 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 komutuyla komut satırı terminalinden istemci çağırabilirsiniz.
  • Bir cihazda komut çalıştıran 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 Araçları paketine dahildir. Bu paketi SDK Yöneticisi ile indirin ve android_sdk/platform-tools/ adresinden yükleyin. Bağımsız Android SDK Platform Araçları paketini istiyorsanız buradan indirebilirsiniz.

Sık karşılaşılan sorunları gidermek için Bağlantı Asistanı'nın nasıl kullanılacağı da dahil olmak üzere adb üzerinden kullanılmak üzere bir cihazı bağlama hakkında bilgi edinmek için Uygulamaları bir donanım cihazında çalıştırma konusuna göz atın.

Adb'nin işleyiş şekli

Bir adb istemcisi başlattığınızda, istemci önce halihazırda çalışan bir adb sunucu işlemi olup olmadığını kontrol eder. Etiket yoksa sunucu işlemini başlatı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 5.555 ile 5.585 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ı oluşturur.

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, konsolu 5554 numaralı bağlantı noktasında dinleme yapan emülatörle aynıdır.

Sunucu tüm cihazlarla bağlantı kurduktan sonra, bu cihazlara erişmek için adb komutlarını kullanabilirsiniz. Sunucu 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 sistem ayarlarındaki Geliştirici seçenekleri altında USB hata ayıklaması'nı 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 yürüterek cihazınızın bağlı olduğunu doğrulayabilirsiniz. Bağlandığında cihaz adının "cihaz" olarak listelendiğini görürsünüz.

Not: Android 4.2.2 (API düzeyi 17) veya sonraki sürümleri çalıştıran bir cihazı bağladığınızda sistem, bu bilgisayar üzerinden hata ayıklamaya olanak tanıyan bir RSA anahtarının kabul edilip edilmeyeceğini soran bir iletişim kutusu gösterir. Bu güvenlik mekanizması, 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 bir 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'i (API düzeyi 30) çalıştıran Wear cihazlar için geçerli değildir. Daha fazla bilgi için Wear OS uygulamasında hata ayıklama kılavuzuna bakın.

Android 11 (API düzeyi 30) ve sonraki sürümler, Android Debug Bridge (adb) kullanarak uygulamanızı iş istasyonunuzdan kablosuz olarak dağıtma ve hata ayıklama desteği sağlar. Örneğin, cihazınızı USB ile fiziksel olarak bağlamanıza gerek kalmadan hata ayıklaması yapılabilecek uygulamanızı birden fazla uzak cihaza dağıtabilirsiniz. Bu sayede, sürücü kurulumu gibi yaygın USB bağlantısı 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 telefonda Android 11 (API düzeyi 30) veya sonraki bir sürümü, TV ve Wear OS için Android 13 (API düzeyi 33) veya sonraki bir sürümü ç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ırma 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şleyin penceresi açılır.

    Cihazları kablosuz ağ pop-up penceresi üzerinden eşleme işleminin ekran görüntüsü
    2. Şekil. QR kodu veya eşleme kodu kullanarak cihazları eşlemeye yarayan 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 telefonda 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 menüsünden Cihazı eşleme koduyla eşle'yi seçin. Cihazınızda Eşleme kodunu kullanarak eşle'yi seçin ve sağlanan altı haneli kodu not edin. Cihazınız Kablosuz ağ üzerinden cihaz eşleme penceresinde göründüğünde Eşle'yi seçip cihazınızda gösterilen altı haneli kodu girebilirsiniz.

      PIN kodu girişi örneğ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 mevcut cihazı unutmak için cihazınızda Kablosuz hata ayıklama bölümüne gidin. Eşlenen cihazlar altında 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ı bölümünde 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 kapatmanızı 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ığı şekilde etkinleştirin.

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

  4. Cihazı eşleme koduyla eşle'yi seçerek IP adresinizi, bağlantı noktası numaranızı ve eşleme kodunuzu bulun. Cihazda gö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ılı bir şekilde eşlendiğini belirten bir mesaj gösterilir.

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

Cihazınıza kablosuz olarak bağlanma konusunda sorun yaşıyorsanız sorunu çözmek için aşağıdaki sorun giderme adımlarını deneyin.

İş istasyonunuzun ve cihazınızın ön koşulları karşılayıp karşılamadığını kontrol etme

İş istasyonunun ve cihazın, bu bölümün başında listelenen ön koşulları karşılayıp karşılamadığını kontrol edin.

Bilinen diğer sorunları kontrol edin

Aşağıda, kablosuz hata ayıklamayla (adb veya Android Studio ile) ilgili bilinen güncel sorunlar ve bunların nasıl çözüleceği yer almaktadı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 (şirket dışı) 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) başka bir seçenektir. Şirket dışı bir ağa bağlanma seçeneği sunulur.

  • Kablosuz üzerinden adb bazen otomatik olarak kapanır: Cihaz, kablosuz ağları değiştirirse veya ağla bağlantıyı keserse bu durum meydana gelebilir. Bu sorunu çözmek için ağa yeniden bağlanın.

  • Cihaz, eşlemeden sonra başarıyla bağlanmıyor: adb, eşlenen cihazları keşfedip bunlara otomatik olarak bağlanmak için mDNS'den yararlanıyor. Ağınız veya cihaz yapılandırmanız mDNS'i desteklemiyorsa ya da devre dışı bırakmışsa cihaza adb connect ip:port aracılığıyla manuel olarak bağlanmanız gerekir.

İlk USB bağlantısından sonra cihaza kablosuz olarak bağlanma (yalnızca Android 10 ve önceki sürümlerde kullanılabilir)

Not: Bu iş akışı Android 11 (ve sonraki sürümler) için de geçerlidir. Dikkat edilmesi gereken nokta, fiziksel USB üzerinden *ilk* bağlantıyı da içermesidir.

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 hakkındaki kılavuza bakın.

adb, cihazla genellikle USB üzerinden iletişim kurar, ancak adb cihazını kablosuz bağlantı üzerinden de kullanabilirsiniz. Android 10 (API düzeyi 29) veya daha düşük 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ığına dikkat edin. Güvenlik duvarı adb özelliğini destekleyecek şekilde düzgün 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, bir Nexus cihazda IP adresini Ayarlar > Tablet hakkında (veya Telefon hakkında) > Durum > IP adresi bölümünde bulabilirsiniz.
  7. Cihaza IP adresinden bağlanın:
    adb connect device_ip_address:5555
    
  8. Ana bilgisayarınızın hedef cihaza bağlı olduğunu onaylayın:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

Cihazınız şu anda adb adlı dağıtımcıya bağlı.

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

  • Ana makinenizin hâlâ Android cihazınızla aynı kablosuz ağa bağlı olduğundan emin olun.
  • adb connect adımını tekrar çalıştırarak yeniden bağlanın.
  • Bu yöntem işe yaramazsa adb ana makinenizi sıfırlayın:
    adb kill-server
    

    Sonra, baştan başlayın.

Cihazları sorgula

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

  adb devices -l
  

Buna yanıt olarak, 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ı. Bu durum, Android sisteminin tamamen başlatıldığı ve çalışır durumda olduğu anlamına gelmez. Çünkü cihaz, sistem hâlâ önyüklenirken adb ağına bağlanır. Başlatıldıktan sonra bu, bir 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, 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 sonucunda görünmemesine neden olan bir köşe harfli komut sırasına sahiptir. Bu durum, aşağıdaki koşulların tümü geçerli olduğunda gerçekleşir:

  • adb sunucusu çalışmıyor.
  • emulator komutunu 5554 ile 5584 arasında tek numaralı bağlantı noktası değeri ile -port veya -ports seçeneğiyle kullanırsınız.
  • Seçtiğiniz tek numaralı bağlantı noktası meşgul olmadığından 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 en fazla 16 emülatör çalıştırmasıdır. Diğer bir yol da aşağıdaki örneklerde açıklandığı gibi, emulator komutunu kullanmadan önce her zaman adb sunucusunu 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 ortalama görüntüleme süresi adı sağlayın. Ortalama görüntüleme 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 durdurup emulator komutunu kullandıktan sonra ve adb devices komutunu kullanmadan önce aşağıdaki şekilde 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ı uygulayın:

  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 verecekseniz $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 değerini geçersiz kılar.

Aşağıdaki örnekte, ekli cihazların listesi alınmıştır. Ardından, helloWorld.apk bu cihaza yüklemek için cihazlardan birinin seri numarası kullanılmıştır:

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device
0.0.0.0:6520  device

# To install on emulator-5555
$ adb -s emulator-5555 install helloWorld.apk
# To install on 0.0.0.0:6520
$ adb -s 0.0.0.0:6520 install helloWorld.apk

Not: Birden fazla cihaz olduğunda hedef cihaz belirtmeden bir komut yayınlarsanız adb "adb: birden fazla cihaz/emülatör" hatası 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 donanım cihazına komut göndermek için -d seçeneğini kullanın.

Uygulama yükleme

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

adb install path_to_apk

Test APK'sı yü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 uygulamasını kullanın. Bu özellik, uygulamanız için belirli bir cihaza ait tüm APK'ları Play Console'dan indirip bir emülatöre veya fiziksel cihaza yüklemek isterseniz faydalı 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 konusuna bakın.

Not: Android Studio'yu 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 paketleme ve yükleme işlemlerini sizin için gerçekleştirir.

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 7100 numaralı cihaz bağlantı noktasına yönlendirilmesi ayarlanır:

adb forward tcp:6100 tcp:7100

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

Bir 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 komutunun aksine pull ve push komutları, rastgele dizinleri ve dosyaları cihazdaki herhangi bir konuma kopyalamanızı sağlar.

Cihazdan 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) hedef dosyaların/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 göndererek 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 bir cihaz bağlıysa varsayılan olarak adb komutu 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.

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

adb --help

Kabuk komutlarını yayınlama

adb üzerinden cihaz komutları yayınlamak veya etkileşimli bir kabuk başlatmak için shell komutunu kullanabilirsiniz. Tek bir komut yayınlamak için shell komutunu aşağıdaki gibi 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 kabuktan çıkmak için Control+D tuşuna basın veya exit yazın.

Android, olağan 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 üzerinden 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 yürütülebilmesini sağlar. Bu değişiklik, kabuk meta karakterlerini 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ğundan ve cihaz adb shell setprop key value değerini gördüğü için adb shell setprop key 'value' artık bir hatadır. Komutun çalışması için bir kez yerel kabuk ve bir kez uzak kabuk için olmak üzere iki kez alıntı yapın (ssh(1) ile yaptığınız gibi). Örneğin, adb shell setprop key 'value' .

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

Arama etkinliği yöneticisi

adb kabuğunda etkinlik başlatma, işlemi zorla durdurma, niyet 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.

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

Seçenekler şunlardır:

  • -D: Hata ayıklamayı etkinleştir.
  • -W: Başlatmanın tamamlanmasını bekleyin.
  • --start-profiler file: Profil düzenleyiciyi başlatın ve sonuçları file adresine gönderin.
  • -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 biter.
  • -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ın.
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.

Seçenekler şunlardır:

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

Seçenekler şunlardır:

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

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

Seçenekler şunlardır:

  • [--user user_id | all | current]: Gönderi gönderilecek kullanıcıyı belirtin. Belirtilmemişse tüm kullanıcılara gönderin.
instrument [options] component Bir Instrumentation örneğiyle izlemeyi başlatın. Tipik olarak hedef component, test_package/runner_class biçimindedir.

Seçenekler şunlardır:

  • -r: Ham sonuçları yazdırın (aksi halde report_key_streamresult kodunun kodunu çözün). Performans ölçümleri için ham çıktılar oluşturmak amacıyla [-e perf true] ile kullanın.
  • -e name value: name bağımsız değişkenini value olarak ayarlayın. Test koşucuları için yaygın bir biçim -e testrunner_flag value[,value...] şeklindedir.
  • -p file: Profil oluşturma verilerini file öğesine yazın.
  • -w: Dönmeden önce araçların tamamlanmasını bekleyin. Test koşucuları 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 process cihazında profil oluşturucuyu başlatın, sonuçları file cihazına yazın.
profile stop process process adlı cihazda profil düzenleyiciyi durdurun.
dumpheap [options] process file process yığınını boşaltın, file hedefine yazın.

Seçenekler şunlardır:

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

Seçenekler şunlardır:

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

Seçenekler şunlardır:

  • --gdb: Kilitlenme/ANR durumunda belirtilen bağlantı noktasında gdbserv işlemini başlatın.
screen-compat {on | off} package package ekran uyumluluğu modunu kontrol edin.
display-size [reset | widthxheight] Cihazın görüntü 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 (veya tam tersi).

Ö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 kullanan yüksek yoğunluklu bir ekran ortamını taklit ederek uygulamanızı farklı ekran yoğunluklarında test etmenize yardımcı olur (veya tam tersi).

Ö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 aşağıdaki seçenekleri kullanarak amacı 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.

Kabuktayken pm söz dizimi şöyledir:

pm command

Ayrıca, uzak kabuk girmeden doğrudan adb üzerinden bir paket yöneticisi komutu da 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 paketleri gösterecek şekilde filtreleyin.
  • -i: Paketleri görmek için yükleyiciye bakın.
  • -u: Kaldırılmış 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 (isteğe bağlı olarak yalnızca group içindekileri) yazdırın.

Seçenekler:

  • -g: Gruba göre düzenleyin.
  • -f: Tüm bilgileri yazdırır.
  • -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ı listeler.
  • target_package: Yalnızca bu uygulama için test paketlerini listeler.
list features Sistemin tüm özelliklerini yazdır.
list libraries Geçerli cihaz tarafından desteklenen tüm kitaplıkları yazdırın.
list users Sistemdeki tüm kullanıcıları yazdırın.
path package Belirtilen package öğesinin APK'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 veya hatalarını ayıkladığınızda ya da Android Studio Derleme > APK oluştur komutunu kullandığınızda bir test APK'sı oluşturur. APK, geliştirici önizleme SDK'sı kullanılarak oluş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ı belirtir.
  • --install-location location: Yükleme konumunu, aşağıdaki değerlerden birini kullanarak ayarlayın:
    • 0: Varsayılan yükleme konumunu kullan.
    • 1: Dahili cihaz depolama alanına yükle.
    • 2: Harici medyaya yükle.
  • -f: Paketi dahili sistem belleğine yükler.
  • -d: Sürüm kodu eski sürüme geçirmeye izin verir.
  • -g: Uygulama manifestinde listelenen tüm izinleri verebilirsiniz.
  • --fastdeploy: Yüklü bir paketi, yalnızca değişen parçaları güncelleyerek hızlı bir şekilde güncelleyin.
  • --incremental: Uygulamayı başlatmak için yeterli miktarda APK yüklerken, kalan verileri arka planda oynatır. Bu özelliği kullanmak için APK'yı imzalamanız, bir APK Signature Scheme 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 adlı sağlayıcıyı özelliği kullanmaya zorlar veya desteklenmiyorsa başarısız olmasını sağlar ve neden başarısız olduğuyla ilgili ayrıntılı bilgi verir. 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 uygulamada belirtilen sürüm kodu varsa kaldırılır.
clear package Bir paketle ilişkili 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 ibare yalnızca hata ayıklama için hazırlanmıştır. Bunun kullanılması 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 belirler
  • 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 Verilen 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şturarak kullanıcının yeni kullanıcı tanımlayıcısını yazdırın.
remove-user user_id Belirtilen user_id sahibi olan kullanıcıyı kaldırıp kullanıcıyla ilişkilendirilen tüm veriler silinir
get-max-users Cihaz tarafından desteklenen maksimum sayıda kullanıcı yazdır.
get-app-links [options] [package]

Belirtilen package veya herhangi bir değer belirtilmezse tüm paketler için alan 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: zorunlu onaylı, genellikle kabuk aracılığıyla
  • denied: zorla reddedildi, genellikle kabuk aracılığıyla
  • migrated: eski bir yanıttan korunmuş doğrulama
  • 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 onaylandı
  • >= 1024: Cihaz doğrulayıcıya özel özel hata kodu

Seçenekler şunlardır:

  • --user user_id: Kullanıcı seçimlerini dahil eder. Yalnızca AutoVerify alanlarını 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ü"

Seçenekler şunlardır:

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

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

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

  • --package package: ayarlanacak paket veya tüm paketleri ayarlamak için "tümü"
  • state: Alanların ayarlanacağı kod. Geçerli değerler aşağıda belirtilmiştir:
    • 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 onaylanmış olarak değerlendirir ve alan doğrulama aracısının değiştirmesini önler.
    • STATE_DENIED (3): Alan adını her zaman reddedilmiş olarak kabul ederek 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 ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlayın. Bunun çalışması için alanın paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için hata bildirmez.

  • --user user_id: Kullanıcı, şunun için seçimlerini değiştirecek:
  • --package package: belirlenecek 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 ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlayın. Bunun çalışması için alanın paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için hata bildirmez.

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

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

Belirli bir kullanıcı için belirli bir alanın sahiplerini düşükten yüksek öncelikliye doğru sırayla yazdırın.

  • --user user_id: sorgulanacak kullanıcı
  • --package package: Ayrıca isteğe bağlı olarak bir paket tarafından tanımlanan tüm web alanları için veya tüm paketleri yazdırmak için "tümü" ile 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 cihazdaki etkin yönetici uygulamasını kontrol edin veya bir politikanın durum verilerini değiştirin.

Kabuk içindeyken dpmsöz dizimi:

dpm command

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

adb shell dpm command

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

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

Seçenekler şunlardır:

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

Seçenekler şunlardır:

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

Seçenekler şunlardır:

  • --user user_id: Hedef kullanıcıyı belirtin. Mevcut kullanıcıyı seçmek için --user current 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ırakma. Uygulama, manifest dosyasında android:testOnly beyanını beyan etmelidir. Bu komut, cihaz ve profil sahiplerini de kaldırır.

Seçenekler şunlardır:

  • --user user_id: Hedef kullanıcıyı belirtin. Mevcut kullanıcıyı seçmek için --user current 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 özellik, donma sürelerini yöneten uygulamalar geliştirirken cihaz planlama kısıtlamalarından kaçınmak için faydalıdır. Sistem güncellemelerini yönetme başlıklı makaleye 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 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 sınırlamasına sahiptir. Android 9.0 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda desteklenir.

force-security-logs Sistemi, mevcut güvenlik günlüklerini DPC'nin kullanımına sunmaya zorlayın. Kullanılabilir günlükler varsa DPC onSecurityLogsAvailable() geri çağırmasını alır. Kurumsal cihaz etkinliğini günlüğe kaydetme bölümüne bakın.

Bu komut hız sınırlamasına sahiptir. Android 9.0 (API düzeyi 28) ve sonraki sürümleri çalıştıran cihazlarda desteklenir.

Ekran görüntüsü al

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

Kabuktayken screencap söz dizimi şöyledir:

screencap filename

Komut satırından screencap komutunu 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ığı örnek bir ekran görüntüsü oturumu verilmiştir:

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

Video kaydet

screenrecord komutu, Android 4.4 (API düzeyi 19) ve sonraki sürümleri çalıştıran cihazların görüntüsü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.

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

screenrecord [options] filename

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

adb shell screenrecord /sdcard/demo.mp4

Control+C (macOS'te Command+C) tuşlarına basarak ekran kaydını durdurun. Aksi takdirde, kayıt üç dakikada 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. Örnek bir kayıt oturumu aşağıda 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 herhangi bir çö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 kayıt yapar ve en fazla üç dakika uzunluğunda olur.

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

  • Ses, video dosyasıyla birlikte kaydedilmez.
  • Wear OS çalıştıran 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çenekleri

Seçenekler Açıklama
--help Komut söz dizimini ve seçeneklerini göster
--size widthxheight Video boyutunu ayarlayın: 1280x720. Varsayılan değer, cihazın yerel ekran çözünürlüğü (destekleniyorsa) ve desteklenmiyorsa 1280x720'dir. En iyi sonuçlar için cihazınızın Gelişmiş Video Kodlaması (AVC) kodlayıcısı tarafından desteklenen bir boyut kullanın.
--bit-rate rate Videonun bit hızını, saniyedeki 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 film dosyalarının boyutu büyük olur. 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 Günlük bilgilerini komut satırı ekranında 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 Çalışma Zamanı (ART), Android 7.0'dan (API düzeyi 24) itibaren yüklü uygulamalar için yürütme profillerini toplar. Bu profiller, uygulama performansını optimize etmek için kullanılır. Hangi yöntemlerin sık sık yürütüldüğünü 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 profili dosya adını alabilmeniz için, örneğin bir emülatörde, dosya sistemine kök erişiminiz olması gerekir.

Profil bilgilerinden 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 (ör. kullanıcı verilerini kaldırmak ve test ortamını sıfırlamak) yararlı olabilir. Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran bir test cihazını aşağıdaki gibi testharness adb kabuk komutunu kullanarak fabrika ayarlarına sıfırlayabilirsiniz:

adb shell cmd testharness enable

testharness kullanılarak cihaz geri yüklenirken cihaz, geçerli iş istasyonu aracılığıyla kalıcı bir konumda hata ayıklamaya olanak tanıyan RSA anahtarını otomatik olarak yedekler. Diğer bir deyişle, 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, uygulamanızı test etmeye devam etmeyi daha kolay ve daha güvenli hale getirmek amacıyla, bir cihazı geri yüklemek için testharness kullanımı aşağıdaki cihaz ayarlarını da değiştirir:

  • Cihaz, ilk cihaz kurulum sihirbazlarının görünmemesi için belirli sistem ayarlarını yapar. Yani cihaz, uygulamanızı hızlı bir şekilde yükleyebileceği, hata ayıklaması ve test edebileceği 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 uyması gerekiyorsa ActivityManager.isRunningInUserTestHarness() işlevini kullanın.

sqlite

sqlite3, SQLite veritabanlarını incelemek için sqlite komut satırı programını başlatır. Bu işlev, 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. Ayrıca, aşağıda gösterildiği gibi, komut satırından SQLite komutlarını da çalıştırabilirsiniz:

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

Not: SQLite veritabanına yalnızca dosya sistemine kök erişiminiz varsa (ör. bir emülatörde) erişebilirsiniz.

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