adb shell am'in pratik kullanımı: şablonlar ve kullanım senaryoları

Kerem Aydın·6 Temmuz 2026·⏱3 dk

adb shell am, konsoldan intent'leri (action, data, component, extras, bayraklar) oluşturarak Activity, Service başlatmanıza ve Broadcast göndermenize olanak tanır; tek ihtiyacınız olan am start, am startservice ve am broadcast sözdizimini bilmektir.

Kısaca — hatırlamanız gerekenler: adb shell am <altkomut> [seçenekler] [INTENT] komut formatı, temel altkomutlar start, startservice, start-foreground-service, broadcast, force-stop ve action, data, component, extras ile bayraklar için seçenek seti.

Hızlı başlangıç: sözdizimi ve temel komutlar

Temel kalıp:

adb shell am <altkomut> [INTENT parametreleri]

Sık kullanılan altkomutlar:

  • start — Activity başlatır.
  • startservice / start-foreground-service — servis başlatır.
  • broadcast — broadcast gönderir.
  • force-stop — uygulamayı zorla durdurur.

Intent için anahtarlar:

  • -n paket/.Activity — belirli bileşen.
  • -a ACTION — action.
  • -d URI — data URI.
  • -c CATEGORY — category.
  • -t MIME_TYPE — veri türü.
  • -f FLAGS — bayraklar (maske, hex).
  • Extras: --es (String), --ei (int), --el (long), --ez (boolean), --ef (float), --esa (String[]).

Activity/Receiver adından emin değilseniz — Android Studio'da manifest dosyasına bakın veya adb shell dumpsys package your.package / dumpsys activity kullanın.

Activity başlatma ve Intent ile çalışma (pratik)

  1. Component ile başlatma (güvenilir):
adb shell am start -n com.example.app/.MainActivity

Tam isimle:

adb shell am start -n com.example.app/com.example.app.ui.MainActivity
  1. Deep link (action + data):
adb shell am start -a android.intent.action.VIEW -d "https://example.com/product/123" com.example.app

Paket belirtilmezse — birden fazla işleyici varsa Android chooser gösterir.

  1. LAUNCHER olarak başlatma:
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.example.app/.MainActivity
  1. Extras gönderme:
adb shell am start -n com.example.app/.ProfileActivity --es "source" "push" --ei "userId" 12345 --ez "featureEnabled" true

Diziler için:

adb shell am start -n com.example.app/.ListActivity --esa "tags" "news,sport,tech"
  1. Yığın bayrakları (bitmask):
adb shell am start -n com.example.app/.MainActivity -f 0x10008000

0x10008000 = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP. Bayraklar tek bir sayı olarak (bitlerin OR işlemiyle) belirtilir.

Bayraklar onaltılık maske olarak belirtilir. İhtiyaç duyulan değeri elde etmek için — bayrak değerlerini birleştirin (OR).

  1. Karmaşık yapıların aktarılması: am Parcelable oluşturmaz — JSON'u string extra olarak gönderin ve uygulamada ayrıştırın:
adb shell am start -n com.example.app/.OrderActivity --es "order_json" '{"id":42,"price":99.9}'

Komut satırında tırnak işaretlerini/özel karakterleri escape edin.

Servisler, broadcast, hata ayıklama senaryoları ve şablonlar

  • Normal servis başlatma:
adb shell am startservice -n com.example.app/.SyncService --es "source" "manual"
  • Foreground servis başlatma:
adb shell am start-foreground-service -n com.example.app/.LocationService
  • Broadcast gönderme:
adb shell am broadcast -a com.example.app.ACTION_SYNC --es "reason" "manual"

Receiver belirterek:

adb shell am broadcast -n com.example.app/.SyncReceiver -a com.example.app.ACTION_SYNC
  • Uygulamayı force-stop etme:
adb shell am force-stop com.example.app

(verileri temizlemek için adb shell pm clear com.example.app kullanın — bu zaten pm komutudur)

Pratik kullanım senaryoları:

  • Deep link testi: bağlantıyı taklit eder ve parametre ayrıştırmasını kontrol edersiniz.
  • UI testleri: debug-only Activity ve parametreleri geçirerek doğrudan istenen ekranı açarsınız.
  • Push testi: push davranışını taklit eden action ile Activity başlatma.
  • BroadcastReceiver hata ayıklama: özel action gönderir ve onReceive'i kontrol edersiniz.

Mini komut kılavuzu

KomutNe yapar
am start -n paket/.ActivityComponent ile Activity başlatır
am start -a ACTION -d URI [paket]Action/data içeren Intent başlatır
am startservice -n paket/.ServiceServis başlatır
am start-foreground-service -n paket/.ServiceForeground servis başlatır
am broadcast -a ACTIONBroadcast gönderir
am force-stop paketUygulamayı durdurur

Sık karşılaşılan hatalar

  • Error: Activity class does not exist — isimde yazım hatası, yanlış applicationId veya Activity bu build variant'ta mevcut değil.
  • SecurityException — bileşen export edilmemiş (android:exported="false") veya sistem izinleri gerekiyor.
  • Intent chooser çağırıyor — paket belirtilmemiş ve birden fazla işleyici var.
  • Tırnak işaretleri/escape sorunları — kabukta doğru tek/çift tırnak kombinasyonunu kullanın.

Bazı sistem action'ları ve çağrıları Android güvenlik politikalarıyla kısıtlanmıştır — imzalanmamış cihazda normal adb üzerinden taklit edilemezler.

SSS

  • Activity'nin tam adını nasıl öğrenirim?
    • Android Studio aracılığıyla (Profile or Debug APK) veya adb shell dumpsys package your.package ile.
  • am üzerinden Parcelable aktarabilir miyim?
    • Hayır — JSON/string gönderin ve uygulama içinde deserialize edin.
  • Bayrak maskesi nasıl oluşturulur?
    • Dokümantasyondan bayrak değerlerini alın ve birleştirin (OR). Komut satırında sonucu hex olarak belirtin, örneğin -f 0x20000000.
  • Am emülatör ve gerçek cihazda çalışır mı?
    • Evet — adb üzerinden bağlı cihaz/emülatör olduğunda.

Gerekirse — senaryonuz için özel komut şablonlarını hazırlayabilirim (UI testleri, deep link, push emülasyonu, profil oluşturma).