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:
-
Cihazınızda geliştirici seçeneklerini etkinleştirin.
-
Android Studio'yu açın ve yapılandırmaları çalıştırma menüsünden Cihazları Kablosuz Ağ Kullanarak Eşle'yi seçin.
Ş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.
2. Şekil. QR kodu veya eşleme kodu kullanarak cihazları eşlemeye yarayan pop-up pencere. -
Cihazınızda Kablosuz hata ayıklama'ya dokunun ve cihazınızı eşleyin:
3. Şekil. Google Pixel telefonda Kablosuz hata ayıklama ayarının ekran görüntüsü.-
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.
-
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.
4. Şekil. Altı basamaklı kod girişi örneği.
-
-
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.
-
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.
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:
-
Daha önce açıklandığı gibi, cihazınızda geliştirici seçeneklerini etkinleştirin.
-
Cihazınızda Kablosuz hata ayıklama'yı daha önce açıklandığı şekilde etkinleştirin.
-
İş istasyonunuzda bir terminal penceresi açın ve
android_sdk/platform-tools
adresine gidin. -
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.
-
İş istasyonunuzun terminalinde
adb pair ipaddr:port
komutunu çalıştırın. Yukarıdaki IP adresini ve bağlantı noktası numarasını kullanın. -
İstendiğinde, eşleme kodunu aşağıda gösterildiği gibi girin.
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 cihazaadb 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:
-
Android cihazınızı ve
adb
ana bilgisayarını ortak bir kablosuz ağa bağlayın. - Cihazı bir USB kablosuyla ana bilgisayara bağlayın.
-
Hedef cihazı, 5555 numaralı bağlantı noktasında TCP/IP bağlantısını dinleyecek şekilde ayarlayın:
adb tcpip 5555
- USB kablosunu hedef cihazdan çıkarın.
- 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.
-
Cihaza IP adresinden bağlanın:
adb connect device_ip_address:5555
-
Ana bilgisayarınızın hedef cihaza bağlı olduğunu onaylayın:
$ adb devices List of devices attached device_ip_address:5555 device
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.
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
: Cihazadb
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üklenirkenadb
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 eklersenizdevices
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:
- Hedefin seri numarasını almak için
devices
komutunu kullanın. - Seri numarasını öğrendikten sonra
adb
komutlarıyla-s
seçeneğini kullanarak seri numarasını belirtin.- Çok sayıda
adb
komutu verecekseniz$ANDROID_SERIAL
ortam değişkenini seri numarasını içerecek şekilde ayarlayabilirsiniz. - Hem
-s
hem de$ANDROID_SERIAL
kullanırsanız-s
,$ANDROID_SERIAL
değerini geçersiz kılar.
- Çok sayıda
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
set-debug-app [options] package
|
package uygulamasını hata ayıklamaya ayarlayın. Seçenekler şunlardır:
|
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:
|
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: |
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: |
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:
|
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:
|
list instrumentation [options]
|
Tüm test paketlerini listeleyin. Seçenekler:
|
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:
|
uninstall [options] package
|
Bir paketi sistemden kaldırır. Seçenekler:
|
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:
|
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:
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:
|
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:
Seçenekler şunlardır:
|
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.
Seçenekler şunlardır:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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 dpm
sö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:
|
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:
|
set-device-owner [options] component
|
component alanını etkin yönetici, paketi ise cihaz sahibi olarak ayarlayın.
Seçenekler şunlardır:
|
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:
|
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.