Android Debug Bridge (adb
), bir cihazla iletişim kurmanızı sağlayan çok yönlü bir komut satırı aracıdır. adb
komutu, uygulama yükleme ve uygulama hatalarını ayıklama 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. Bu, üç bileşen içeren bir istemci-sunucu programıdır:
- Komut gönderen bir istemci. İstemci, geliştirme makinenizde çalışır.
adb
komutu vererek komut satırı terminalinden istemci çağırabilirsiniz. - Arka plan programı (adbd), cihazda komut çalıştırır. 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ı paketinde yer almaktadır. Bu paketi, android_sdk/platform-tools/
adresinden yükleyen SDK Yöneticisi ile indirin. Bağımsız Android SDK Platform Araçları paketini istiyorsanız buradan indirebilirsiniz.
adb
üzerinden kullanım için bir cihaz bağlamayla ilgili bilgi (Sık karşılaşılan sorunları gidermek için Bağlantı Asistanı'nın nasıl kullanılacağı da dahil) hakkında bilgi için Donanım cihazında uygulama çalıştırma bölümüne bakın.
Adb'nin işleyiş şekli
Bir adb
istemcisini başlattığınızda istemci önce zaten çalışmakta olan bir adb
sunucu işlemi olup olmadığını kontrol eder. 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 ile 5585 arası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, bir çift sıralı bağlantı noktası kullanır. Bu, konsol bağlantıları için çift numaralı bağlantı noktası, adb
bağlantıları için ise tek numaralı bağlantı noktasıdır. Örnek:
Emülatör 1, console: 5554
Emülatör 1, adb
: 5555
Emülatör 2, console: 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, konsolunu 5554 numaralı bağlantı noktasında dinleyen emülatörle aynıdır.
Sunucu tüm cihazlara bağlantı kurduğunda, bu cihazlara erişmek için adb
komutlarını kullanabilirsiniz. Sunucu, cihazlarla kurulan 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ıklama özelliğini etkinleştirin
Adb'yi USB üzerinden bağlı bir cihazla kullanmak için cihazın sistem ayarlarında, Geliştirici seçenekleri'nin 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
komutunu çalıştırarak cihazınızın bağlı olduğunu doğrulayabilirsiniz. Bağlıysa
cihaz adını "cihaz" olarak 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ı, siz cihazın kilidini açıp iletişim kutusunu onaylamadığınız sürece USB üzerinden hata ayıklamanın ve diğer adb komutlarının yürütülememesini sağladığı için kullanıcı cihazlarını korur.
Bir cihaza USB üzerinden 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ğlanın
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 için Wear OS uygulamasında hata ayıklama rehberine 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 sunar. Örneğin, cihazınızı USB üzerinden fiziksel olarak bağlamanıza gerek kalmadan hata ayıklaması yapılabilir uygulamanızı birden fazla uzak cihaza dağıtabilirsiniz. Bu sayede, sürücü yüklemesi gibi sık karşılaşılan USB bağlantı sorunlarıyla ilgilenme ihtiyacı ortadan kalkar.
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 sürümleri, TV ve WearOS için ise Android 13 (API düzeyi 33) veya sonraki sürümleri ç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 (Entegre Geliştirme Ortamı) kullanıyorsanız Android Studio'nun en son sürümünün yüklü olduğundan emin olun. Uygulamayı buradan indirebilirsiniz.
-
İş istasyonunuzda, SDK Platform Araçları'nı en son sürümüne güncelleyin.
Kablosuz hata ayıklama özelliğini 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 Kablosuz Ağı Kullanarak Cihazları 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şle penceresi açılır.
Şekil 2. QR kodu veya eşleme kodu kullanarak cihazları eşlemek için kullanılan pop-up pencere. -
Cihazınızda Kablosuz hata ayıklama'ya dokunun ve cihazınızı eşleyin:
Şekil 3. Google Pixel telefondaki 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 penceresinden elde edilen QR kodunu tarayın.
-
Cihazınızı bir eşleme koduyla eşlemek için Cihazları kablosuz ağ üzerinden eşle pop-up'ından Cihazı eşleme koduyla 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, Kablosuz ağ üzerinden cihaz eşle penceresinde göründüğünde, Eşle'yi seçebilir ve cihazınızda gösterilen altı haneli kodu girebilirsiniz.
Şekil 4. 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 geçerli cihazı unutmak için cihazınızda Kablosuz hata ayıklama bölümüne gidin. Eşlenen cihazlar bölümünün altından iş istasyonu adınıza dokunun ve Unut'u seçin.
-
Kablosuz hata ayıklamayı hızlı bir şekilde açmak ve kapatmak istiyorsanız Kablosuz hata ayıklama için Hızlı ayarlar geliştirici bloklarından yararlanabilirsiniz. Bu öğeleri, Geliştirici Seçenekleri > Hızlı ayarlar geliştirici kutuları bölümünde bulabilirsiniz.
Şekil 5. Hızlı ayarlar geliştirici kutuları ayarı, kablosuz hata ayıklamayı hızlı bir şekilde açıp kapatabilmenizi sağlar.
Komut satırı kullanarak kablosuz bağlantı
Alternatif olarak, Android Studio olmadan komut satırını kullanarak cihazınıza bağlanmak için şu adımları izleyin:
-
Cihazınızda geliştirici seçeneklerini daha önce açıklandığı şekilde etkinleştirin.
-
Cihazınızda Kablosuz hata ayıklama'yı daha önce açıklandığı şekilde etkinleştirin.
-
İş istasyonunuzda bir terminal penceresi açıp
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örüntülenen 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.
Şekil 6. Cihazınızın başarıyla eşlendiğini belirten bir mesaj görüntülenir.
Kablosuz bağlantı sorunlarını çözme
Cihazınıza kablosuz olarak bağ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 edin
İş istasyonunun ve cihazın, bu bölümün başında listelenen ön koşulları karşıladığından emin olun.
Diğer bilinen sorunları kontrol etme
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 anlatılmaktadı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. Kablo veya başka bir (kurumsal olmayan) kablosuz ağla bağlanmayı deneyin. TCP/ip üzerinden
adb connect ip:port
kullanarak kablosuz bağlantı (ilk USB bağlantısından sonra) diğer bir seçenektir. Kurumsal olmayan bir ağa başvurmak bir seçenektir. -
Kablosuz bağlantı üzerinden
adb
bazen otomatik olarak kapanır: Bu durum, cihazın kablosuz ağlara geçiş yapması veya ağ bağlantısının kesilmesi durumunda gerçekleşebilir. Sorunu çözmek için ağa yeniden bağlanın. -
Eşleştirme işlemi başarıyla tamamlandıktan sonra cihaz bağlanmıyor:
adb
, eşlenen cihazları keşfetmek ve bu cihazlara otomatik olarak bağlanmak için mDNS'den yararlanır. Ağınız veya cihaz yapılandırmanız mDNS'yi desteklemiyorsa veya devre dışı bıraktıysaadb connect ip:port
kullanarak cihaza manuel olarak bağlanmanız gerekir.
İlk USB bağlantısından sonra bir 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. Ancak iş yaparken aynı zamanda fiziksel USB üzerinden *başlangıç* bağlantısı da yapması gerektiğini unutmayın.
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 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
cihazını kablosuz ağ üzerinden de kullanabilirsiniz. Android 10 (API düzeyi 29) veya önceki 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ı 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 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
desteği için doğru şekilde yapılandırılmış bir erişim noktası kullanmanız gerekebilir.
Cihazınız şu anda adb
ağına bağlandı.
Cihazınızla olan adb
bağlantısı kesilirse:
- Ana makinenizin, 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.
Cihazlarla ilgili sorgu
adb
komutlarını vermeden önce, adb
sunucusuna hangi cihaz örneklerinin bağlı olduğunu bilmek faydalı olacaktır. devices
komutunu kullanarak ekli cihazların listesini oluşturun:
adb devices -l
Buna karşılık, adb
her cihaz için şu durum bilgisini yazdırır:
- Seri numarası:
adb
, cihazı bağlantı noktası numarasıyla 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
: Cihazadb
sunucusuna bağlı. Cihaz, sistem hâlâ önyüklenirkenadb
sistemine bağlandığından, bu durumun Android sisteminin tamamen başlatıldığı ve çalıştığı anlamına gelmediğini unutmayın. Önyükleme sonrasında bu, cihazın normal çalışma durumudur.no device
: Bağlı cihaz yok.
- Açıklama:
-l
seçeneğini eklersenizdevices
komutu size cihazın ne olduğunu bildirir. Bu bilgiler, bağlı birden fazla cihazınız olduğunda faydalıdır. Böylece bu cihazları birbirinden ayırt edebilirsiniz.
Aşağıdaki örnekte devices
komutu ve çıkışı gösterilmektedir. Çalışan üç cihaz var. Listenin ilk iki satırı emülatörler, üçü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 durumda olsa bile çalışan emülatörlerin adb devices
çıkışında gösterilmemesine neden olan bir köşe harfi komut sırası içerir. 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ğeri ile-port
veya-ports
seçeneğiyle birlikte kullanırsınız.- Seçtiğiniz tek numaralı bağlantı noktası meşgul değil. Bu nedenle, bağlantı noktası bağlantısı belirtilen bağlantı noktası numarasından yapılabilir. Bağlantı noktası meşgulse emülatör, 2. adımda belirtilen gereksinimleri karşılayan başka bir bağlantı noktasına geçiş yapar.
- 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 her zaman emulator
komutunu kullanmadan önce başlatmaktır. Bu işlem aşağıdaki örneklerde açıklanmıştı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ırayla girin. AVD adı için sisteminizden geçerli bir AVD adı sağlayın. Ortalama görüntüleme süresi adlarının listesini görmek 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: Aşağıdaki komut sırasında ilk olarak adb
sunucusu başlatıldığı için adb devices
, cihaz listesini gösterir.
Emülatörü adb devices
çıkışında görmek için adb
sunucusunu durdurun, ardından emulator
komutunu kullandıktan sonra ve adb devices
komutunu kullanmadan önce aşağıdaki gibi tekrar 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 verirken 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ı aldıktan sonra seri numarasını belirtmek için
adb
komutlarıyla birlikte-s
seçeneğini kullanın.- Çok sayıda
adb
komutu yayınlayacaksanız$ANDROID_SERIAL
ortam değişkenini bunun yerine 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, bağlı cihazların listesi alınmış ve daha sonra helloWorld.apk
uygulamasını ilgili 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 mevcut olduğunda hedef cihaz belirtmeden bir komut yayınlarsanız adb
, "adb: birden fazla cihaz/emülatör" hatası görüntüler.
Birden fazla cihazınız varsa ancak yalnızca biri emülatörse emülatöre komut göndermek için -e
seçeneğini kullanın. Birden fazla cihaz olmasına rağmen 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 installpath_to_apk
Test APK'sı yüklediğinizde install
komutuyla birlikte -t
seçeneğini kullanmanız gerekir. Daha fazla bilgi için bkz. -t
.
Birden fazla APK yüklemek için install-multiple
kullanın. Bu özellik, uygulamanız için belirli bir cihaza ait tüm APK'ları Play Console'dan indirip bir emülatöre ya da fiziksel cihaza yüklemek istediğinizde kullanışlıdır.
Emülatöre/cihaz örneğine yükleyebileceğiniz bir APK dosyası oluşturma hakkında daha fazla bilgi için Uygulamanızı derleme ve çalıştırma konusuna 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ükleme işini sizin yerinize Android Studio 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 ayarlanmaktadır:
adb forward tcp:6100 tcp:7100
Aşağıdaki örnekte ana makine bağlantı noktası 6100'ün local:logd'a yönlendirilmesi sağlanır:
adb forward tcp:6100 local:logd
Bu işlem, cihazdaki belirli bir bağlantı noktasına neyin gönderildiğini belirlemeye çalışıyorsanız faydalı olabilir. Alınan tüm veriler, sistem günlüğü arka plan programına yazılır ve cihaz günlüklerinde gösterilir.
Bir cihaza/cihazdan dosya kopyalama
Bir cihaza ve cihazdan dosya 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ıza olanak tanır.
Bir dosyayı veya dizini ve alt dizinlerini cihazdan kopyalamak için aşağıdakileri yapın:
adb pullremote local
Bir dosyayı veya dizini ve alt dizinlerini cihaza kopyalamak için aşağıdakileri yapın:
adb pushlocal remote
local
ve remote
parametrelerini, geliştirme makinenizdeki (yerel) ve cihazdaki (uzaktan) hedef dosyaların/dizine giden yollarla değiştirin. Örnek:
adb push myfile.txt /sdcard/myfile.txt
Adb sunucusunu durdurma
Bazı durumlarda, sorunu çözmek için adb
sunucusu işlemini sonlandırıp yeniden başlatmanız gerekebilir. Örneğin, adb
bir komuta yanıt vermezse bu durum gerçekleşebilir.
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ını yayınlayın:
adb [-d | -e | -sserial_number ]command
Yalnızca bir emülatör çalışıyorsa veya yalnızca bir cihaz bağlıysa varsayılan olarak adb
komutu o cihaza gönderilir. Birden fazla emülatör çalışıyorsa ve/veya birden fazla cihaz eklenmişse 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ı bir listesini görebilirsiniz:
adb --help
Sorun kabuk komutları
adb
aracılığıyla cihaz komutları yayınlamak veya etkileşimli bir kabuk başlatmak için shell
komutunu kullanabilirsiniz. Tek bir komut vermek için şu şekilde shell
komutunu kullanın:
adb [-d |-e | -sserial_number ] shellshell_command
Bir cihazda etkileşimli kabuk başlatmak için shell
komutunu şu şekilde kullanın:
adb [-d | -e | -sserial_number ] shell
Etkileşimli bir kabuktan çıkmak için Control+D
tuşuna basın veya exit
yazın.
alışılmış Unix komut satırı araçlarının çoğunu Android 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 çoğu komut için yardım sunulur.
Kabuk komutlarının çoğu toybox tarafından sağlanır.
Tüm oyuncak kutusu komutları için geçerli olan genel yardıma toybox --help
üzerinden ulaşabilirsiniz.
Android Platform Tools 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 düzeltti ve adb install Let\'sGo.apk
gibi kabuk meta karakterleri içeren komutları güvenli bir şekilde yürütmeyi mümkün kıldı. Bu değişiklik, kabuk meta karakterlerini içeren herhangi bir komutun yorumlanmasının da değiştiği anlamına gelir.
Örneğin, tırnak işaretleri yerel kabuk tarafından yutulduğu ve cihaz adb shell setprop key two words
değerini gördüğü için adb shell setprop key 'two words'
artık bir hatadır. Komutun çalışmasını sağlamak için ssh(1)
öğesinde yaptığınız gibi yerel kabuk ve uzak kabuk için bir kez olmak üzere iki kez alıntılayın. Örneğin, adb shell setprop key "'two words'"
yerel kabuğun en dıştaki alıntı düzeyini kullandığı ve cihaz hâlâ setprop key 'two words'
olan iç tırnak düzeyini gösterdiği için çalışır. Çıkış yöntemi de bir seçenektir, ancak iki kez alıntı yapmak genellikle daha kolaydır.
Ayrıca, sistem günlüğünü izlemek için yararlı olan Logcat komut satırı aracı bölümüne de bakın.
Arama etkinliği yöneticisi
adb
kabuğunda, etkinlik başlatma, işlemi zorla durdurma, intent 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 komut gönderebilirsiniz.
Bir kabuk içindeyken am
söz dizimi şöyledir:
amcommand
Ayrıca, uzak kabuğa girmeden doğrudan adb
üzerinden bir etkinlik yöneticisi komutu da yayınlayabilirsiniz. Örnek:
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şkenleri için spesifikasyon'a bakın. Seçenekler:
|
startservice [options] intent
|
intent tarafından belirtilen Service öğesini başlatın. Amaç bağımsız değişkenleri için spesifikasyon'a bakın. Seçenekler:
|
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 öldürülmesi güvenli olan ve kullanıcı deneyimini etkilemeyecek işlemleri sona erdirir.
Seçenekler:
|
kill-all
|
Tüm arka plan işlemlerini sonlandırın. |
broadcast [options] intent
|
Yayın amacı gönderin. Amaç bağımsız değişkenleri için spesifikasyon'a bakın. Seçenekler:
|
instrument [options] component
|
Instrumentation örneğiyle izlemeye başlayın.
Genellikle hedef component , test_package/runner_class formudur. Seçenekler:
|
profile start process file
|
process üzerinde profil düzenleyiciyi başlat, sonuçları file adresine yaz.
|
profile stop process
|
process cihazında profil düzenleyiciyi durdurun.
|
dumpheap [options] process file
|
process yığınının dökümünü al, file adresine yaz. Seçenekler:
|
dumpbitmaps [options] [-p process]
|
process öğesinden (API düzeyi 36 ve üzeri) bit eşlem bilgilerinin dökümünü alın.
Seçenekler:
process belirtilmezse tüm işlemlerdeki bit eşlemler dökümü alınır.
|
set-debug-app [options] package
|
Hata ayıklamak için package uygulamasını ayarlayın. Seçenekler:
|
clear-debug-app
|
set-debug-app ile hata ayıklama için önceki paketi temizleyin.
|
monitor [options]
|
Kilitlenmeler veya ANR'ler için izlemeye başlayın. Seçenekler:
|
screen-compat {on | off} package
|
package cihazının ekran
uyumluluğu modunu kontrol et.
|
display-size [reset | widthxheight]
|
Cihaz görüntü boyutunu geçersiz kılın.
Bu komut, büyük ekranlı bir cihaz kullanırken küçük ekran çözünürlüğünü taklit ederek uygulamanızı farklı ekran boyutlarında test ederken veya tam tersini yaparken faydalıdır.
Örnek: |
display-density dpi
|
Cihazın görüntü yoğunluğunu geçersiz kıl.
Bu komut, düşük yoğunluklu bir ekran kullanarak yüksek yoğunluklu bir ekran ortamını (veya tam tersi) taklit ederek uygulamanızı farklı ekran yoğunluklarında test etmenize yardımcı olur.
Örnek: |
to-uri intent
|
Belirtilen intent spesifikasyonunu URI olarak yazdırın. |
to-intent-uri intent
|
Belirtilen intent spesifikasyonunu intent: URI olarak yazdırın. |
Amaç bağımsız değişkenleri için spesifikasyon
intent
bağımsız değişkeni alan etkinlik yöneticisi komutlarının amacını aşağıdaki seçeneklerle belirtebilirsiniz:
-a action
- Niyet işlemini belirtin (ör.
android.intent.action.VIEW
). Bunu yalnızca bir kez beyan edebilirsiniz. -d data_uri
- Niyet veri URI'sini belirtin (ör.
content://contacts/people/1
). Bunu yalnızca bir kez beyan edebilirsiniz. -t mime_type
- Amaç MIME türünü belirtin (ör.
image/png
). Bunu yalnızca bir kez beyan edebilirsiniz. -c category
- Bir amaç kategorisi belirtin. Örneğin,
android.intent.category.APP_CONTACTS
. -n component
com.example.app/.ExampleActivity
gibi açık bir amaç oluşturmak için paket adı ön ekini kullanarak bileşen adını belirtin.-f flags
setFlags()
tarafından desteklendiği gibi amaca işaret ekleyin.--esn extra_key
- Fazladan boş değer ekleyin. Bu seçenek, URI amaçları için desteklenmez.
-e | --es extra_key extra_string_value
- Dize verilerini anahtar/değer çifti olarak ekleyin.
--ez extra_key extra_boolean_value
- Boole verilerini anahtar/değer çifti olarak ekleyin.
--ei extra_key extra_int_value
- Tam sayı verilerini anahtar/değer çifti olarak ekleyin.
--el extra_key extra_long_value
- Uzun verileri anahtar/değer çifti olarak ekleyin.
--ef extra_key extra_float_value
- Kayan noktalı verileri anahtar/değer çifti olarak ekleyin.
--eu extra_key extra_uri_value
- URI verilerini anahtar/değer çifti olarak ekleyin.
--ecn extra_key extra_component_name_value
ComponentName
nesnesi olarak dönüştürülen ve iletilen bir bileşen adı ekleyin.--eia extra_key extra_int_value[,extra_int_value...]
- Tam sayı dizisi ekleyin.
--ela extra_key extra_long_value[,extra_long_value...]
- Bir uzun dizi ekleyin.
--efa extra_key extra_float_value[,extra_float_value...]
- Kayan reklam dizisi ekleyin.
--grant-read-uri-permission
FLAG_GRANT_READ_URI_PERMISSION
işaretini ekleyin.--grant-write-uri-permission
FLAG_GRANT_WRITE_URI_PERMISSION
işaretini ekleyin.--debug-log-resolution
FLAG_DEBUG_LOG_RESOLUTION
işaretini ekleyin.--exclude-stopped-packages
FLAG_EXCLUDE_STOPPED_PACKAGES
işaretini ekleyin.--include-stopped-packages
FLAG_INCLUDE_STOPPED_PACKAGES
işaretini ekleyin.--activity-brought-to-front
FLAG_ACTIVITY_BROUGHT_TO_FRONT
işaretini ekleyin.--activity-clear-top
FLAG_ACTIVITY_CLEAR_TOP
işaretini ekleyin.--activity-clear-when-task-reset
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
işaretini ekleyin.--activity-exclude-from-recents
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
işaretini ekleyin.--activity-launched-from-history
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
işaretini ekleyin.--activity-multiple-task
FLAG_ACTIVITY_MULTIPLE_TASK
işaretini ekleyin.--activity-no-animation
FLAG_ACTIVITY_NO_ANIMATION
işaretini ekleyin.--activity-no-history
FLAG_ACTIVITY_NO_HISTORY
işaretini ekleyin.--activity-no-user-action
FLAG_ACTIVITY_NO_USER_ACTION
işaretini ekleyin.--activity-previous-is-top
FLAG_ACTIVITY_PREVIOUS_IS_TOP
işaretini ekleyin.--activity-reorder-to-front
FLAG_ACTIVITY_REORDER_TO_FRONT
işaretini ekleyin.--activity-reset-task-if-needed
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
işaretini ekleyin.--activity-single-top
FLAG_ACTIVITY_SINGLE_TOP
işaretini ekleyin.--activity-clear-task
FLAG_ACTIVITY_CLEAR_TASK
işaretini ekleyin.--activity-task-on-home
FLAG_ACTIVITY_TASK_ON_HOME
işaretini ekleyin.--receiver-registered-only
FLAG_RECEIVER_REGISTERED_ONLY
işaretini ekleyin.--receiver-replace-pending
FLAG_RECEIVER_REPLACE_PENDING
işaretini ekleyin.--selector
- Amaç verilerini ve türünü ayarlamak için
-d
ve-t
seçeneklerinin kullanılmasını gerektirir. URI component package
- Önceki seçeneklerden biriyle tanımlanmadığı durumlarda doğrudan URI, paket adı ve bileşen adı belirtebilirsiniz. Bir bağımsız değişkenin nitelikli olmadığı durumlarda araç, ":" (iki nokta üst üste) işareti içeriyorsa bağımsız değişkenin URI olduğunu varsayar. Araçlar "/" (ileri eğik çizgi) içeriyorsa bağımsız değişkenin bir bileşen adı olduğunu; aksi takdirde, bağımsız değişkenin bir paket adı olduğunu varsayar.
Paket yöneticisini ara (pm
)
Bir adb
kabuğunda, cihazda yüklü uygulama paketlerinde işlem ve sorgu gerçekleştirmek için paket yöneticisi (pm
) aracıyla komut gönderebilirsiniz.
Bir kabuk içindeyken pm
söz dizimi şöyledir:
pmcommand
Ayrıca, uzak kabuk girmeden doğrudan adb
üzerinden bir paket yöneticisi komutu da yayınlayabilirsiniz. Örnek:
adb shell pm uninstall com.example.MyApp
Tablo 2. Kullanılabilir paket yöneticisi komutları
Komut | Açıklama |
---|---|
list packages [options] filter
|
Tüm paketleri (isteğe bağlı olarak yalnızca paket adları filter içinde metin içerenleri) yazdırın. Seçenekler:
|
list permission-groups
|
Bilinen tüm izin gruplarını yazdırma. |
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ı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 yolunu yazdır.
|
install [options] path
|
Sisteme path tarafından belirtilen bir paketi 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 söz konusu 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 uygulamadaki izni iptal etme: Android 6.0 (API düzeyi 23) ve sonraki sürümleri çalıştıran cihazlarda söz konusu 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 seçenek yalnızca hata ayıklama amacıyla hazırlanmıştır. Bunun kullanılması uygulamaların bozulmasına ve diğer istenmeyen davranışlara neden olabilir. |
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 zorunlu kılını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şturun ve kullanıcının yeni kullanıcı tanımlayıcısını yazdırın.
|
remove-user user_id
|
Belirtilen user_id değerine sahip kullanıcıyı kaldırıp bu kullanıcıyla ilişkili tüm verileri silin
|
get-max-users
|
Cihazın desteklediği maksimum kullanıcı sayısını yazdırın. |
get-app-links [options] [package]
|
Belirtilen package için veya herhangi bir değer belirtilmemişse tüm paketler için alan doğrulama durumunu yazdırın. Eyalet kodları aşağıdaki gibi tanımlanır:
Seçenekler:
|
reset-app-links [options] [package]
|
Belirli bir paket veya herhangi bir paket belirtilmemişse tüm paketler için alan doğrulama durumunu sıfırlayın.
Seçenekler:
|
verify-app-links [--re-verify] [package]
|
Belirtilen package için veya herhangi bir paket belirtilmezse tüm paketler için doğrulama isteği yayınlayın. Yalnızca paket daha önce bir yanıt kaydetmediyse gönderir.
|
set-app-links [--package package] state domains
|
Paket için bir alanın durumunu manuel olarak ayarlayın. Bunun çalışması için alan, paket tarafından autoVerify olarak bildirilmelidir. Bu komut, uygulanamayan alanlar için bir hata bildirmez.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Paket için ana makine kullanıcısı seçiminin durumunu manuel olarak ayarlayın. Bunun çalışması için alan adının paket tarafından beyan edilmesi gerekir. Bu komut, uygulanamayan alanlar için bir hata bildirmez.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Bir paket için otomatik olarak doğrulanan bağlantı işleme ayarını açma/kapatma.
|
get-app-link-owners --user user_id [--package package] domains
|
Belirli bir kullanıcının belirli bir alan adının sahiplerini düşükten yükseğe doğru sırayla yazdırın.
|
Cihaz politika yöneticisini ara (dpm
)
Cihaz yönetimi uygulamalarınızı geliştirip test etmenize yardımcı olması için cihaz politika yöneticisi (dpm
) aracına komut gönderin. Etkin yönetici uygulamasını kontrol etmek veya bir politikanın cihazdaki durum verilerini değiştirmek için bu aracı kullanın.
Kabuk içindeyken dpm
söz dizimi şu şekildedir:
dpmcommand
Ayrıca, uzak kabuk girmeden doğrudan adb
üzerinden bir cihaz politika yöneticisi komutu da yayınlayabilirsiniz:
adb shell dpmcommand
Tablo 3. Kullanılabilen cihaz politika yöneticisi komutları
Komut | Açıklama |
---|---|
set-active-admin [options] component
|
component adlı kullanıcıyı etkin yönetici olarak ayarlar.
Seçenekler:
|
set-profile-owner [options] component
|
component öğesini etkin yönetici olarak ve paketini, mevcut bir kullanıcının profil sahibi olarak ayarlayın.
Seçenekler:
|
set-device-owner [options] component
|
component öğesini etkin yönetici ve paketi cihaz sahibi olarak ayarlayın.
Seçenekler:
|
remove-active-admin [options] component
|
Etkin bir yöneticiyi devre dışı bırakın. Uygulamanın manifest dosyasında android:testOnly öğesini beyan etmesi gerekir. Bu komut, cihaz ve profil sahiplerini de kaldırır.
Seçenekler:
|
clear-freeze-period-record
|
Cihazın sistem OTA güncellemeleri için önceden ayarlanmış dondurma dönemlerine ait kaydını temizleyin. Bu, donma dönemlerini yöneten uygulamalar geliştirirken cihaz planlama 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 zorla Bağlantı veya DNS günlükleri mevcutsa DPC, onNetworkLogsAvailable() geri çağırmasını alır. Ağ etkinliği günlük kaydı başlıklı makaleyi inceleyin.
Bu komut hızla sınırlı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 için kullanılabilir hale getirmeye zorlayın. Kullanılabilir günlükler varsa DPC, onSecurityLogsAvailable() geri çağırmasını alır. Kurumsal cihaz etkinliğini günlüğe kaydetme başlıklı makaleyi inceleyin.
Bu komut hızla sınırlı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ü almak için kullanılan bir kabuk yardımcı programıdır.
Bir kabuk içindeyken screencap
söz dizimi şöyledir:
screencapfilename
Komut satırından screencap
kullanmak için aşağıdakileri girin:
adb shell screencap /sdcard/screen.png
Ekran görüntüsünü yakalamak için adb
kabuğunun ve dosyayı cihazdan indirmek için pull
komutunun kullanıldığı örnek bir ekran görüntüsü oturumunu aşağıda bulabilirsiniz:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Video kaydetme
screenrecord
komutu, Android 4.4 (API düzeyi 19) ve sonraki sürümleri çalıştıran cihazların görüntülerini kaydetmeye yönelik bir kabuk yardımcı programıdır. Yardımcı program, ekran etkinliğini bir MPEG-4 dosyasına kaydeder. Tanıtım veya eğitim videoları oluşturmak ya da hata ayıklama ve test yapmak için bu dosyayı kullanabilirsiniz.
Bir kabuk içinde, aşağıdaki söz dizimini kullanın:
screenrecord [options ]filename
Komut satırından screenrecord
kullanmak için aşağıdakileri girin:
adb shell screenrecord /sdcard/demo.mp4
Control+C tuşlarına basarak ekran kaydını durdurun. Aksi takdirde kayıt, üç dakikada veya --time-limit
tarafından ayarlanan süre sonunda 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 makineye indirmek için pull
komutunu çalıştırın. Kayıt oturumuyla ilgili bir örnek:
$ 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 desteklenen herhangi bir çözünürlükte ve bit hızında kayıt yapabilir. Yardımcı program, varsayılan olarak maksimum üç dakika uzunluğuyla yerel ekran çözünürlüğünde ve yönde kayıt yapar.
screenrecord
yardımcı programının sınırlamaları:
- Video dosyasıyla ses kaydedilmez.
- Wear OS yüklü cihazlarda video kaydı yapılamaz.
- Bazı cihazlar yerel ekran çözünürlüklerinde kayıt yapamayabilir. Ekran kaydetmeyle ilgili sorunlarla karşılaşırsanız daha düşük bir ekran çözünürlüğü kullanmayı deneyin.
- Kayıt sırasında ekranın döndürülmesi desteklenmiyor. 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üğüdür (destekleniyorsa), desteklenmiyorsa 1280x720. En iyi sonuçlar için cihazınızın Gelişmiş Video Kodlaması (AVC) kodlayıcısı tarafından desteklenen bir boyutu kullanın. |
--bit-rate rate |
Video için video bit hızını, saniyedeki megabit olarak ayarlayın. Varsayılan değer 20 Mb/sn'dir.
Video kalitesini iyileştirmek için bit hızını artırabilirsiniz ancak bu işlem, daha büyük film dosyaları oluşturur. 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 hiçbir bilgi görüntülemez. |
Uygulamalar için ART profillerini okuma
Android 7.0'dan (API düzeyi 24) başlayarak Android Çalışma Zamanı (ART), 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 yürütüldüğünü ve uygulama başlatılırken hangi sınıfların kullanıldığını anlamak için toplanan profilleri inceleyin.
Not: Yürütme profilinin dosya adını almak için yalnızca dosya sistemine kök erişiminiz varsa (ör. bir emülatörde) mümkündür.
Profil bilgilerini metin biçiminde oluşturmak için aşağıdaki komutu kullanın:
adb shell cmd package dump-profilespackage
Oluşturulan dosyayı almak için şunu kullanın:
adb pull /data/misc/profman/package .prof.txt
Test cihazlarını sıfırlayın
Uygulamanızı birden fazla test cihazında test ediyorsanız testler arasında cihazınızı sıfırlamanız (örneğin, kullanıcı verilerini kaldırmak ve test ortamını sıfırlamak için) yararlı olabilir. Aşağıda gösterildiği gibi testharness
adb
kabuk komutunu kullanarak Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran bir test cihazını fabrika ayarlarına sıfırlayabilirsiniz:
adb shell cmd testharness enable
Cihaz, testharness
özelliğini kullanarak geri yüklenirken, kalıcı konumdaki geçerli iş istasyonunda hata ayıklamaya olanak tanıyan RSA anahtarını otomatik olarak yedekler. 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
kullanmak, uygulamanızı test etmeyi daha kolay ve daha güvenli hale getirmek üzere aşağıdaki cihaz ayarlarını da değiştirir:
- Cihaz, ilk cihaz kurulumu sihirbazlarının görünmemesi için belirli sistem ayarlarını yapar. Yani 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 bu ayarlara uyması gerekiyorsa
ActivityManager.isRunningInUserTestHarness()
komutunu kullanın.
sqlite
sqlite3
, SQLite veritabanlarını incelemek için sqlite
komut satırı programını başlatır.
Bir tablonun içeriğini yazdırmak için .dump
ve mevcut bir tablo için SQL CREATE
ifadesini yazdırmak için .schema
gibi komutlar içerir.
Ayrıca, gösterildiği gibi komut satırından SQLite komutlarını 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, 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.
adb USB arka uçları
Adb sunucusu, iki arka uç aracılığıyla USB yığınıyla etkileşim kurabilir. İşletim sisteminin 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 bir arka uç seçebilirsiniz.
Ayarlanmazsa adb varsayılan arka ucunu kullanır. Varsayılan davranış işletim sistemleri arasında değişiklik gösterir. ADB v34 ile başlayarak liubusb
arka ucu, varsayılan olarak yerel arka ucun kullanıldığı Windows hariç tüm işletim sistemlerinde varsayılan olarak kullanılmaktadır. ADB_LIBUSB
ayarlanırsa yerel arka ucun mu yoksa libusb
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, sunucuyu ve cihazları otomatik olarak bağlamak için çoklu yayın DNS protokolünü kullanabilir. ADB sunucusu Bonjour (Apple'ın mdnsResponseer) ve Openscreen adlı iki arka ucuyla birlikte sunulur.
Bonjour arka ucunun ana makinede çalıştırılabilmesi için bir arka plan programı gerekir.
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 çalışır durumda olduğundan emin olması gerekir.
adb mdns check
komutu hata döndürürse ADB, Bonjour arka ucunu kullanıyor ancak Bonjour arka plan programı çalıştırılmıyordur.
Openscreen arka ucunun makinede çalıştırılması için bir arka plan programının çalışması gerekmez. macOS'te Openscreen arka ucu desteği ADB v35'ten başlar. Windows ve Linux, ADB 34 sürümü itibarıyla desteklenmektedir.
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 fazla ayrıntı için ADB manuel sayfasına bakın.
adb Seri Çekim Modu (ADB 36.0.0 ile başlayan)
Seri Çekim Modu, ADB'nin bir önceki pakete yanıt vermeden cihaza paket göndermeye devam etmesini sağlayan deneysel bir özelliktir. Bu, büyük dosyaları aktarırken ADB'nin işleme hızını önemli ölçüde artırır ve hata ayıklama sırasında gecikmeyi azaltır.
Seri çekim modu varsayılan olarak devre dışıdır. Özelliği etkinleştirmek için aşağıdakilerden birini yapın:
ADB_DELAYED_ACK
ortam değişkenini1
olarak ayarlayın.- Android Studio'da Dosya (veya macOS'te Android Studio) > Ayarlar > Derleme, Yürütme, Dağıtım > Hata Ayıklayıcı konumundaki hata ayıklayıcı ayarlarına gidin ve ADB Sunucu Patlama Modu'nu Etkin olarak ayarlayın.