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. Örnek:
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 sunar. Ö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:
-
Cihazınızda geliştirici seçeneklerini etkinleştirin.
-
Android Studio'yu açın ve yapılandırmaları çalıştır menüsünden Cihazları Kablosuz Ağ Kullanarak Eşle'yi seçin.
Şekil 2'de gösterildiği gibi Cihazları kablosuz ağ üzerinden eşle penceresi açılır.
-
Cihazınızda Kablosuz hata ayıklama'ya dokunun ve cihazınızı eşleyin:
-
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 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.
-
-
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.
-
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.
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ığı gibi etkinleştirin.
-
İş istasyonunuzda bir terminal penceresi açın ve
android_sdk/platform-tools
hedefine 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.
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ışsaadb 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:
-
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ından bir 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 adresini kullanarak 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ığı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.
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
: Cihazadb
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ındaadb
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 eklersenizdevices
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:
- 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 yayınlayacaksanız$ANDROID_SERIAL
ortam değişkenini, seri numarasını içerecek şekilde ayarlayabilirsiniz. - Hem
-s
hem de$ANDROID_SERIAL
kullanıyorsanız-s
,$ANDROID_SERIAL
değerini geçersiz kılar.
- Çok sayıda
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. Örnek:
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. Örnek:
adb shell am start -a android.intent.action.VIEW
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:
|
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:
|
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:
|
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:
|
instrument [options] component
|
Instrumentation örneğiyle izlemeyi başlatın.
Genellikle hedef component , test_package/runner_class biçimindedir. Şu seçenekleri kullanabilirsiniz:
|
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:
|
set-debug-app [options] package
|
package uygulamasını hata ayıklamaya ayarlayın. Şu seçenekleri kullanabilirsiniz:
|
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:
|
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: |
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: |
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. Örnek:
adb shell pm uninstall com.example.MyApp
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 ve isteğe bağlı olarak yalnızca group politikasındakileri yazdırın. Seçenekler:
|
list instrumentation [options]
|
Tüm test paketlerini listeleyin. Seçenekler:
|
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:
|
uninstall [options] package
|
Bir paketi sistemden kaldırır. Seçenekler:
|
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:
|
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 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:
|
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:
Şu seçenekleri kullanabilirsiniz:
|
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.
Şu seçenekleri kullanabilirsiniz:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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 dpm
sö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
Komut | Açıklama |
---|---|
set-active-admin [options] component
|
component hesabını etkin yönetici olarak ayarlar.
Şu seçenekleri kullanabilirsiniz:
|
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:
|
set-device-owner [options] component
|
component hesabını etkin yönetici, paketi ise cihaz sahibi olarak ayarlayın.
Şu seçenekleri kullanabilirsiniz:
|
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:
|
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.
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 20 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.