Android Debug Bridge hakkında bilmediğiniz çok şey var. ADB'yi kullanmak için bazı yararlı ipuçları ve püf noktaları için buraya tıklayın!
Hızlı Linkler
- Kabuk erişimi
- Birden fazla cihaza bağlanma
- Dosyaları aktarma
- Kerestecilik
- Yüklü uygulamaları ADB aracılığıyla listeleme
- ADB aracılığıyla uygulamaları yükleme ve kaldırma
- ADB ile APK'ları ayıklamak
- Uygulama verilerini yedekleme ve geri yükleme
- Uygulama bileşenlerini listeleme
- Etkinlikleri, hizmetleri ve yayın alıcılarını başlatma
- Hemen hemen her uygulamayı devre dışı bırakma ve etkinleştirme
- Ekran görüntüleri yakalama
- PC ve Android cihaz arasında ikili veri aktarımı
Modlama sahnesinde gizlenen bir Android meraklısı veya herhangi bir uzunlukta bir uygulama geliştiricisiyseniz Er ya da geç, Android Debug Bridge ya da ADB adında temiz bir araca rastlayacaksınız. kısa. Android Studio'da bir komut satırı yardımcı programı olarak yaygın olarak kullanılır. Android geliştiricileri, uygulamaları manuel olarak yüklemek ve test etmek için bağımsız bir çözüm olarak da kullanır. Android akıllı telefonlar öykünmüş Android cihazların yanı sıra.
Ancak ADB'nin yapabileceği çok şey var ve bunların çoğu yalnızca geliştiriciler için yararlı değil. Bir geliştirici olmasanız ve bu makaleyi okuyor olsanız bile, muhtemelen ADB'yi bir veya iki kez kullanmışsınızdır. bir uygulamayı yandan yüklemek veya bir izni değiştirin. Ancak ADB'nin kullanılabileceği tek şey bu değil. ADB kullanımıyla ilgili bilmediğiniz bazı ipuçları ve püf noktaları için okumaya devam edin.
ADB'nin bilgisayarınızda çalışır durumda olması gerekir. adlı makalemize göz atmayı unutmayın. ADB'yi nasıl kurarım Eğer yardıma ihtiyacın varsa. Windows kullanıyorsanız, ayrıca uygun OEM USB sürücülerini kurun Android cihazınız için.
Kabuk erişimi
ADB'yi daha önce kullandıysanız, tüm komutları tek bir satırda çalıştırmaya alışmış olabilirsiniz. Ancak, cihazınızda bir terminal kabuğu açmak ve doğrudan komutları çalıştırmak için ADB'yi de kullanabilirsiniz. Ve bu kolay!
Terminalinizde veya komut istemi pencerenizde:
adb kabuğu
Daha sonra bir ile karşılanacaksınız $
doğrudan cihazınızda komutları çalıştırabileceğiniz sembol.
Birden fazla cihaza bağlanma
ADB, aynı anda birden fazla cihazla iletişim kurabilir. Ancak, bu tür senaryolarda ADB komutları verirken hedef aygıtı belirtmeniz gerekir.
Bunu yapmak için hedef cihazın seri numarasını bilmeniz gerekir. Seriyi, devices komutunu kullanarak alabilirsiniz:
adb cihazları
Şimdi, -S
hedef cihazın seri numarasını belirtme seçeneği. Örnek:
adb-s <serisayı> kabuk
Dosyaları aktarma
Komut satırı meraklıları için ADB, dosyaları Android cihazınıza ve cihazınızdan aktarmak için çok kolay bir yol sağlar. sadece kullan çekmek
cihazdan dosya ve dizinleri kopyalamak için komut ve itmek
dosya ve dizinleri cihaza kopyalama komutu:
Bir dosyayı veya dizini alt dizinleriyle birlikte Android cihazına kopyalamak istiyorsanız:
adb push local_path device_path
- Örnek:
adb push D:\image.png /sdcard
Aşağıdaki komut, bir dosyayı veya dizini alt dizinleriyle birlikte Android cihazdan ana bilgisayara kopyalayacaktır:
adb pull device_path local_path
- Örnek:
adb çekme /sdcard/backup_April.tar D:\Yedekleme
Kerestecilik
Android Studio şunları sağlar: Logcat penceresi, cihazınızdaki günlüklerin gerçek zamanlı olarak görüntülenmesini destekler. Ancak, toplu işleme için tam olarak kullanışlı değildir. Neyse ki Android cihazlar, sistem ve uygulama günlük mesajlarını dökmek ve bunları ekrana yazdırmak için kullanılabilen ADB aracılığıyla kullanılabilen logcat komutuyla birlikte gönderilir.
Temel sözdizimi aşağıdaki gibidir:
adb logcat
Daha fazlasını öğrenmek için şu konudaki eğiticimize göz atın: Android'de sistem logcats, çekirdek günlükleri ve dmesg nasıl alınır.
Paskalya yumurtaları
Google, logcat komutuyla ilgili iki şık paskalya yumurtası sunar.
- İlki lolcat, lol kedi memesi. Normal logcat komutuyla aynı çıktıyı verir.
adb lolcat
- İkincisi, logcat -v long komutuna eşdeğer olan longcat'tir. Tüm meta veri alanlarını ve ayrı mesajları boş bir satırla görüntüler.
uzun kedi
Yüklü uygulamaları ADB aracılığıyla listeleme
Cihazınızda yüklü uygulamaları görmek için aşağıdaki komutu kullanabilirsiniz:
adb kabuk pm liste paketler
Bu, yüklü uygulamaların paket adlarının bir listesini, her biri kendi satırında olacak şekilde döndürür. paket:
.
Seçenekler
Daha spesifik listeleri almak için kullanabileceğiniz bazı seçenekler de vardır.
- -F paket adıyla birlikte her uygulama için temel APK yolunu içerecektir.
- -A bilinen tüm APEX olmayan paketlerin iade edilmesini sağlayacaktır.
- -D komutun yalnızca devre dışı bırakılmış paketleri döndürmesine neden olur.
- -e komutun yalnızca etkin paketleri döndürmesine neden olur.
- -S komutun yalnızca sistem paketlerini döndürmesine neden olur.
- -3 komutun yalnızca üçüncü taraf paketleri döndürmesine neden olur.
- -Ben her paket için yükleyici paket adını içerecektir.
- -U her paket için paket UID'sini içerecektir.
- -u kaldırılmış paketleri içerecektir.
- --show-sürüm kodu her paket için sürüm kodunu içerecektir.
- --apex-yalnızca yalnızca APEX paketlerini döndürür.
- --sıvı yalnızca verilen UID'ye sahip paketleri gösterecektir.
- --kullanıcı yalnızca verilen kullanıcı kimliğine ait paketleri gösterir.
ADB aracılığıyla uygulamaları yükleme ve kaldırma
Bu, ADB'nin nispeten yaygın bir kullanımıdır, ancak yine de bahsetmeye değer. Diğer yolların yanı sıra, ADB'den de yararlanabilirsiniz. Android uygulamalarını yükleyin ve kaldırın Android cihazınıza.
APK yükleme
Bilgisayarınızda bir APK varsa, aşağıdakileri kullanarak cihazınıza yükleyebilirsiniz:
adbdüzenlemek-Rbiraz apk.apk
değiştirmeyi unutma biraz apk.apk
yüklemek istediğiniz APK'nın tam yolu ile.
Seçenekler
APK'leri ADB aracılığıyla yüklemek için birçok seçenek vardır.
- bu -R seçeneği, ADB'nin mevcut bir uygulama (yani güncelleme) üzerine yüklenmesine izin verir. Android Pie ve sonraki sürümlerde bu seçeneği belirtmeniz gerekmez.
- bu -R seçeneği, Android Pie ve sonrası için, uygulama zaten yüklüyse yüklemenin başarısız olmasına neden olur.
- bu -Ben seçeneği, bir yükleyici paket adı belirlemenizi sağlar. Android, APK'yı neyin yüklediğini öğrenmek isterse döndürülen şey budur.
- bu -T seçeneği, bir APK ile izin verir android: testOnly="doğru" yüklenecek bildiriminde.
- bu -D seçeneği, belirtilen APK'nın önceden yüklenmiş bir uygulamaya sürüm düşürme olmasını sağlar. Bu, yalnızca uygulamanın her iki sürümü de hata ayıklanabilirse çalışır.
- bu -G Android Marshmallow ve sonraki sürümler için seçeneği, yüklü uygulamaya tüm çalışma zamanı izinlerini otomatik olarak verir.
Hepsi bu kadar değil. Tam bir liste istiyorsanız yerleşik belgelere göz atabilirsiniz.
Birden çok APK ve paket
Birden çok uygulamadan veya bir uygulama paketi yüklediğiniz için aynı anda yüklemek istediğiniz bir grup APK'nız varsa, ADB'leri kullanabilirsiniz. çoklu kurulum
Ve çoklu paket kurulumu
özellikler.
Tüm APK'larınız tek bir uygulama içinse şunu kullanın: çoklu kurulum
:
adbçoklu kurulumapk1.apkapk2.apk ...
Aksi takdirde, kullanın çoklu paket kurulumu
:
adbçoklu paket kurulumuuygulama1.apkuygulama2.apk ...
Bu komutlar için seçenekler şuna benzer: düzenlemek
, ancak bazı sınırlamalarla. Hangi seçeneklerin mevcut olduğunu öğrenmek için ADB'nin yerleşik belgelerine bakın.
Bir uygulamayı kaldırma
ADB kullanarak kaldırmak için, kaldırmak istediğiniz uygulamanın paket adına ihtiyacınız olacaktır. için bölüme göz atın Yüklü uygulamaları listeleme Henüz yapmadıysanız.
Paket adını aldıktan sonra, kaldırma işlemi şu kadar basittir:
adb kaldırma <paket ismi>
Bu komutu kullanarak genellikle sistemi veya önceden yüklenmiş uygulamaları kaldıramazsınız. Ancak bunları ADB ile devre dışı bırakabilirsiniz. bölüme göz atın Hemen hemen her uygulamayı devre dışı bırakma ve etkinleştirme detaylar için.
ADB ile APK'ları ayıklamak
Bir uygulamanın APK'larını çıkarmak isteyebileceğiniz pek çok neden vardır. Belki gelecekte kullanmak üzere yedeklemek istiyorsunuz ya da artık çevrimiçi olarak kullanılamıyor ve onu farklı bir cihaza aktarmak istiyorsunuz.
ADB kullanarak bir uygulamayı çıkarmak oldukça basittir. Öncelikle, çıkartmak istediğiniz uygulamanın paket adını bulmak isteyeceksiniz. Bunu yapmanın birçok yolu vardır, ancak en kolayı genellikle cihazınızın Ayarlar uygulamasını kullanarak yüklü tüm uygulamaların listesi, istediğinizi seçin ve paket adını veya uygulamayı bulana kadar aşağı kaydırın İD.
Paket adını aldıktan sonra, aşağıdaki komutu çalıştırın:
adb kabuğu pm yolu <paket ismi>
Bu komut, o paket adı için tüm APK'ların yolunu döndürür.
Daha sonra her bir APK'yı bilgisayarınıza çekmek için aşağıdaki komutu kullanabilirsiniz:
adb çekme /yol/to/apk.apk
Uygulama verilerini yedekleme ve geri yükleme
Google, henüz iOS benzeri bir tek tıklamayla yedekleme metodolojisi geliştirmemiş olsa da, yüklü uygulamaları verileriyle birlikte yedeklemek ve geri yüklemek için ADB'yi kullanabilirsiniz. Ancak, işlevsellik mükemmel olmaktan uzaktır ve Google zaten özelliği kullanımdan kaldırıldı olarak işaretledi.
Destek olmak
Tek bir uygulamayı APK'sı ile yedeklemek için:
adb destek olmak -apk <paketisim> -f package_name_backup.ab
Tüm uygulama verilerini bir defada yedeklemek istemeniz durumunda:
adb destek olmak -F Tümü -Tümü -apk -sistem yok
Geri yükleme modülü, bireysel uygulamaya özel geri yükleme gerçekleştiremediğinden, pakete özel yedeklemeler oluşturmak daha iyidir. Aşağıdaki komut parçacığı (Linux/macOS ve Linux için Windows Alt Sistemi ile uyumlu) bunu sizin yerinize yapabilir:
için UYGULAMA içinde $(adb shell pm liste paketleri -3)
Yapmak
UYGULAMA=$( Eko${APP} | sed "s/^paket://")
adb yedekleme -f ${APP}.destek olmak ${APP}
Tamamlandı
Eski haline getirmek
Öncelikle kaydedilen APK'yı yüklemeniz gerekir;
adb düzenlemek <paketisim>.apk
Ardından verilerini geri yükleyebilirsiniz:
adbeski haline getirmekpaket_adı_yedekleme.ab
Yinelemek gerekirse, ADB yedekleme ve geri yükleme işlevleri, ROM'a bağlı olarak değişken sonuçlar da dahil olmak üzere birden fazla uyarıya sahiptir.
Uygulama bileşenlerini listeleme
Bir uygulamanın bileşenleri; Faaliyetler, Yayın Alıcıları, Hizmetler vb. şeylerdir. Bazen, özellikle gizli Etkinlikleri başlatmak veya belirli verilerle bir yayın göndermek istiyorsanız, belirli bir uygulamadaki bu bileşenlerin adlarını bilmek yararlı olabilir.
Ne yazık ki, ADB'nin bir uygulamanın bileşenlerini listelemenin çok temiz bir yolu yok. Ama bu mümkün. Aşağıdaki komutu çalıştırın:
adb kabuk dumpsys paket
Bir sürü metin döndürülecek.
- bulana kadar kaydırın Etkinlik Çözümleyici Tablosu Faaliyetleri görmek için başlık.
- altına bak Alıcı Çözücü Tablosu Yayın Alıcıları için.
- kontrol et Servis Çözümleyici Tablosu Hizmetler için.
- Ve benzeri.
Her bileşen, onu başlatmak için gereken eylemi, bileşenin adını ve muhtemelen bazı ek bilgileri gösterecektir.
Alternatif olarak, Etkinlikleri, Hizmetleri ve Alıcıları görmenin daha kolay bir yolunu istiyorsanız XDA Recognized Developer'ın Root Activity Launcher uygulamasını kullanabilirsiniz. zacharee1. Bir dizi başka kullanışlı özellikle birlikte size her uygulama için bu bileşenleri gösterecektir.
Fiyat: 0,99.
Etkinlikleri, hizmetleri ve yayın alıcılarını başlatma
ADB, Etkinlikleri başlatmak, Hizmetleri başlatmak ve BroadcastReceivers'ı bilgilendirmek için de kullanılabilir. Gerekirse veri URI'lerini ve Intent ekstralarını bile belirleyebilirsiniz.
Bileşenleri başlatmak için, başlatmak istediğiniz şeyin bileşen adına ihtiyacınız olacak. Bunu nasıl alacağınızı şuradan görebilirsiniz: Uygulama Bileşenlerini Listeleme bölüm.
Bir Activity başlatmak için komut sözdizimi şuna benzer:
başlıyorum -a <aksiyon> -N <bileşen>
Bir Hizmeti başlatmak için komut sözdizimi şuna benzer:
hizmete başlıyorum -a <aksiyon> -N <bileşen>
Bir BroadcastReceiver'ı bilgilendirmek için kullanılan komut sözdizimi şuna benzer:
yayın yapıyorum -a <aksiyon> -N <bileşen>
Çoğu durumda, Faaliyetler ve Hizmetler için bir eylemi açıkça belirtmeniz gerekmez. Genellikle yalnızca bileşen başka bir bileşen kullanıyorsa buna ihtiyacınız olur. android.intent.action. ANA.
Temel söz dizimine ek olarak, iletilecek daha fazla veriyi nasıl belirleyeceğiniz aşağıda açıklanmıştır. Genel olarak, tüm veri değerleri çift tırnak içine alınmalıdır.
- -D bir veri URI'si belirlemenizi sağlar.
- -e veya --es fazladan bir String belirtmenize izin verir.
- --esn fazladan bir boş Dize belirtmenize olanak tanır.
- -- ez bir boole ekstra belirtmek için kullanılır.
- --ei fazladan bir tamsayı belirtmek için kullanılır.
- --el uzun bir ekstra belirtmek içindir.
- --ef fazladan bir şamandıra geçecektir.
- --AB fazladan bir URI geçirir.
- --ecn ekstra bir bileşen adı belirtmek için kullanılabilir.
-
--eia
değerleri bir Tamsayı[] fazladan olarak iletir., ,... -
--eial
değerleri bir Liste olarak iletecek, ,... . - Aynı dizi ve liste bağımsız değişkenleri ayrıca uzunlar, değişkenler ve Dizeler için de çalışır. Sadece değiştir Ben uygun harf ile
- -F bir bayrak belirlemenizi sağlar.
Kullanabileceğiniz daha fazla davranış seçeneği vardır, bu nedenle ayrıntılar için yerleşik belgelere bakın.
Hemen hemen her uygulamayı devre dışı bırakma ve etkinleştirme
Android'deki sistem uygulamaları kaldırılamaz ve ne yazık ki birçoğu Ayarlar aracılığıyla devre dışı bırakılamaz. ADB bunları kaldırmanıza izin vermese de devre dışı bırakmanıza yardımcı olabilir.
Öncelikle, devre dışı bırakmak istediğiniz uygulamanın paket adını aldığınızdan emin olun. Ardından, bu komutları deneyin. Biri başarısız olursa, sonraki seçeneği deneyin.
-
pm devre dışı bırak
- Yeniden etkinleştirmek için şunu kullanın: pm etkinleştir
-
pm devre dışı bırak-kullanıcı --kullanıcı 0
- Yeniden etkinleştirmek için şunu kullanın: pm etkinleştir
-
pm gizle
- Yeniden etkinleştirmek için şunu kullanın: pm göster
-
askıya alma
- Yeniden etkinleştirmek için şunu kullanın: pm askıya alma durumunu kaldır
-
pm kaldırma -k --kullanıcı 0
- Yeniden etkinleştirmek için şunu kullanın: pm yükleme-mevcut
- Bu, uygulamayı kullanıcı profilinizden etkili bir şekilde kaldırır. Yeniden etkinleştirme komutu verilirken meli çalışacağının garantisi yok. Uygulamayı geri yüklemek için fabrika ayarlarına sıfırlamanız gerekebilir.
- Cihazınızda birden çok kullanıcı profili kullanıyorsanız, yukarıdaki komutlarda 0'ı sahip olduğunuz gerçek kullanıcı kimliğiyle değiştirdiğinizden emin olun.
- Yeniden etkinleştirmek için şunu kullanın: pm yükleme-mevcut
Daha fazlasını öğrenmek için şu konudaki eğitimimize göz atın: kök erişimi olmadan taşıyıcı ve OEM bloatware nasıl kaldırılır.
Ekran görüntüleri yakalama
Çoğu Android ROM, sırasıyla ekran görüntüleri almak ve ekran etkinliklerini kaydetmek için iki kullanışlı kabuk aracı sunar - ekran görüntüsü ve ekran kaydı -. Telefon ekranınızın statik bir ekran görüntüsünü veya video parçasını yakalamak ve doğrudan cihazın dahili belleğine kaydetmek için onları doğrudan ADB kabuğundan arayabilirsiniz.
Bir ekran görüntüsü yakalamanın sözdizimi oldukça basittir:
adb kabuğu ekran görüntüsü /sdcard/screenshot.png
Benzer şekilde, dinamik bir ekran görüntüsü yakalamanız gerekirse, aşağıdakileri yapın:
adb kabuk ekran kaydı /sdcard/recording.mp4
Tahmin edebileceğiniz gibi, ekran görüntüsü aracı oldukça basittir, oysa ekran kaydı yardımcı programı birkaç parametre sunar. İkincisi için seçenekler aşağıdaki gibidir:
-
--size GENİŞLİKxYÜKSEKLİK
- Video dosyasının çözünürlüğünü ayarlayın (örn. "1280x720"). Varsayılan olarak, hedef cihazın ana ekran çözünürlüğünü (destekleniyorsa) almaya çalışır ve aksi takdirde 1280x720'ye geri döner.
-
--bit oranı ORANI
- Video bit hızını saniyede bit cinsinden ayarlayın. Değer, bit veya megabit olarak belirtilebilir, örn. '4000000', '4M' ile eşdeğerdir.
-
--hata raporu
- Hataları göstermek için yararlı olabilecek zaman damgası kaplaması gibi ek bilgiler ekleyebilirsiniz.
-
--time-limit TIME
- Maksimum kayıt süresini saniye cinsinden ayarlayın. Varsayılan / maksimum 180'dir.
-
--display-id kimliği
- Kaydedilecek fiziksel ekran kimliğini belirtin. Varsayılan olan, birincil ekrana ayarlanmıştır. Geçerli ekran kimlikleri için "dumpsys SurfaceFlinger --display-id" bölümüne bakın.
-
-- ayrıntılı
- Kayıt oturumuyla ilgili ayrıntılı bilgileri görüntüleyin.
Android'in yerleşik ekran yakalama yardımcı programlarının yeteneklerini daha da genişletebilirsiniz. cıvıl cıvıl. ADB'nin gücünü kullanan açık kaynaklı bir ekran yansıtma çözümüdür.
PC ve Android cihaz arasında ikili veri aktarımı
Tam teşekküllü bir ADB kabuğu oluşturmak istemiyorsanız, ancak ana bilgisayar ile hedef Android cihaz arasında ikili verilerin aerodinamik geçişini dahil etmek istiyorsanız, yürütme
Ve yürütme
komutlar.
onlara rağmen uzun süreli varoluş, exec-in ve exec-out komutları hala belgelenmemiştir. Farklı kabukların girdileri ve çıktıları işleme biçimi nedeniyle dosya bozulmasına yol açabilirler. Dikkatle kullanın.
İlki, Android'de bir komut yürütmenize ve filtrelenmemiş konsol girişini parametresi olarak beslemenize yardımcı olurken, ikincisi tam tersini yapar, yani Android'de bir komut çalıştırın ve ana işletim sistemi tarafından filtrelenmemiş ikili çıktısını yakalayın.
Örnek:
adb yönetici-dışarı "ekran görüntüsü -p" > "D:\ekran görüntüsü.png"
Bu, ekran görüntüsü
Android'in telefon ekranının bir ekran görüntüsünü yakalama komutu, ancak doğrudan ana bilgisayarın D: bölümüne (Windows çalıştırıyor olması koşuluyla)screenshot.png olarak kaydeder. Diğer taraftan,
adb yönetici-içinde"cd /sdcard && tar -xf -" < "D:\backup.tar"
Bu, ana bilgisayarın (Windows çalıştıran) D: bölümünde depolanan backup.tar dosyasının içeriğini, Android aygıtının dahili depolama kök dizininde ayıklayacaktır.
ADB inanılmaz derecede güçlü bir araçtır ve yukarıdakilerden çok daha fazlasını yapabilir. Bu makaledeki komutlar yalnızca kullanışlı bir başlangıç noktasıdır. Daha gelişmiş kullanım için şu komutlara göz atın: komut -l etkileşimde bulunabileceğiniz farklı hizmetleri görmek ve ls -l /sistem/bin Android ROM'unuzda bulunan farklı yürütülebilir komutları görmek için.
Diğer Android gezileri ve tıklamaları için şu adresteki kılavuzlarımıza göz atın: Android akıllı telefonunuzu nasıl köklendirirsiniz?, TWRP kurtarma nasıl kurulur, Ve Android cihazınıza özel bir ROM nasıl kurulur.