C# ADB & Fastboot GUI — Basit ve Kullanıcı Dostu ADB Kullanım Arayüzü

duranforreal

Üstün
Katılım
30 Nisan 2024
Mesajlar
1.620
Çözümler
3
Beğeniler
1.015
İyi günler Forum. Android cihazlarla uğraşanlar için hazırladığım, ADB ve Fastboot işlemlerini tek tıkla yapabileceğiniz bu GUI yazılımını paylaşıyorum. Komut satırı derdi yok, her şey görsel ve hızlı!

Özellikler
ADB Modu (Cihaz açıkken)

Shell: Cihaza terminal komutu gönderme
Reboot: Normal / bootloader / recovery moduna yeniden başlatma
Apps: Uygulama yükle / listele
Files: Dosya gönderme ve alma (push-pull)
Start Server: ADB sunucusunu başlatma
Kill Server: ADB sunucusunu kapatma

Fastboot Modu (Cihaz Fastboot modundayken)

Flash: .img veya ROM dosyalarını kolayca yükleme
Reboot: Sisteme yeniden başlatma
Sideload: OTA güncelleme yükleme

Cihazları Yeniden Listeleme (F5)

Program, bağlı cihazları otomatik olarak gösterir. Ancak cihazı sonradan bağladıysanız:
F5 tuşuna basarak cihazları yeniden tarayabilirsiniz.
Hem ADB hem de Fastboot cihazları bu şekilde yenilenir.

Bilinen Hata

F5 tuşuna basılı tutulursa veya cihaz USB ile bağlandığında, cihaz listesi kısmında yazılar üst üste binip klonlanmış gibi görünebilir.
Bu sadece geçici bir görsel hatadır.
Çözüm: F5 tuşuna tek sefer basmanız yeterli, arayüz temizlenir.

Sürümlük Pasif Özellikler

Erken Release Amacı ile 2 tane özelliğimiz pasif kalmıştır. Bu özelliklerin hepsi 2. Versiyonda çözülecek ve Aktif hale gelecektir.
1. Uygulama kaldırma, kodsal bir çözümsüzlük nedeni ile pasif bıraktık.
2. Cihazdan Dosya alma, buda kodsal çözümsüzlük nedeni ile pasif bıraktık.

🛠 Gereksinimler

Android cihazınızda USB Hata Ayıklama (USB Debugging) açık olmalı
Bilgisayarınızda Android USB sürücüleri yüklü olmalı
Sadece Windows desteklenmektedir.

Ekran Görüntüsü


Lisans ve Bilmeniz gerekenler

Yazılım MIT License'sine sahip. Açık kaynak, dilediğiniz gibi kullanabilirsiniz.
Yazılım Global olarak forumlarda yayınlanacağı için ingilizce kalmıştır. Anlayışınız için teşekkürler.

Özel Teşekkürler
Tester: @meinetruths

İndirme
Github

Geri Bildirim ve Destek

Yorumlarınızı, hata bildirimlerinizi ve önerilerinizi bekliyorum.
Yazılım işinize yaradıysa ve devamlı olarak geliştirilmesini istiyorsanız Bağış yaparak veya konuyu beğenerek ilginizi gösterebilirsiniz.
İyi kullanımlar!
 
Super kullanisli olmus. Bir suru batch dosyasi ile ugrasmaktan kurtaracak bir yazilim.

Oneri olarak sunu sunayim, mantikli gelirse eklenir. Scrcpy butonu ekleyip ekran aktarimida olabilir. Boot etmis telefonda bazen telefon ekranindan bir seyler girmek ya da ekrani gormek gerekiyor. Bu sayede telefonu elimize almamiza hic gerek kalmaz.
 
Evet aklıma geldi ama entegre konusunda kafam karıştı fakat 2. versiyonda garantisini veriyorum yapacağım.

Belki scrcpy patch'de yapabilirim yazdım.
 
Merhaba; ADB nedir bir fikrim yok, Android cihaz modlamayı da bilmem. Fakat tepkilerce gördüğüm kadarıyla bir işi kolaylaştırmışsınız öncelikle sizi tebrik ediyorum.

Programınız çalışıyor fakat pek iyi kodlandığını söyleyemem. Kendinizi çok fazla tekrar etmek zorunda kalmışsınız. Örneğin her metodunuzda neredeyse şu blok var:
C#:
string selectedDevice = null;

if (ADBFirstDevice.IsChecked == true)
    selectedDevice = ADBFirstDevice.Content.ToString();
else if (ADBSecondDevice.IsChecked == true)
    selectedDevice = ADBSecondDevice.Content.ToString();
else if (ADBThirdDevice.IsChecked == true)
    selectedDevice = ADBThirdDevice.Content.ToString();
Neden mesela bu kodu bir fonksiyona çevirip selectedDevice'ı return etmiyorsunuz? Böylece her seferinde tekrar yazmanız gerekmez.
Ayrıca ileride dördüncü bir cihaz gerektiğinde de bütün kodları baştan aşağı değiştirmemiş olursunuz.

Ayrıca hangi Thread'i kim başlatıyor, ne oluyor çok karışık. Düşük özellikli sistemlerde sorunlar yaşatabilir.
 
Hocam öncelikle teşekkür ederim hiç aklıma gelmedi ve her fonksiyonda onu kullandım çünkü diğer fonksiyonlardada vardı ve ADB ve Fastboot olarak ikiye ayrılıyor yazılım. 2. versiyonda Tab Controllü tasarımı ile bu durumu düzeltirim fakat fonksiyon sistemi derken bi örnek bırakabilirmisiniz?

Ayrıca hangi Thread'i kim başlatıyor, ne oluyor çok karışık. Düşük özellikli sistemlerde sorunlar yaşatabilir.
O zaman onu sadece Commander (CMD) ile komut çağırsam nasıl olur?
 
C#:
private void DoSth1(){
    string selectedDevice = "";
    if(cb1.checked) selectedDevice = "Device 1";
    if(cb2.checked) selectedDevice = "Device 1";
    if(cb3.checked) selectedDevice = "Device 1";
    return selectedDevice;
    //... Diğer kodlar DoSth1
}

private void DoSth2(){
    string selectedDevice = "";
    if(cb1.checked) selectedDevice = "Device 1";
    if(cb2.checked) selectedDevice = "Device 1";
    if(cb3.checked) selectedDevice = "Device 1";
  
    //... Diğer kodlar DoSth2
}
gibi her metodun içinde bunu yapmak yerine şöyle yapın mesela;
C#:
private string GetSelectedDevice(){
    string selectedDevice = "";
    if(cb1.checked) selectedDevice = "Device 1";
    if(cb2.checked) selectedDevice = "Device 1";
    if(cb3.checked) selectedDevice = "Device 1";
}

private void DoSth1(){
    string device = GetSelectedDevice();
  
    //... Diğer kodlar DoSth1
}

private void DoSth2(){
    string device = GetSelectedDevice();
  
    //... Diğer kodlar DoSth2
}
Bu sayede selectedDevice'ı ayarlama işi tek bir merkezden yönetilir ve güncellemelerde gidip her methoddaki kodu değiştirmek yerine sadece bir methoddan değiştirirsiniz.
 
Son düzenleme:
İfadeler: AHT
Çok teşekkür ederim ben çok düşünemedim böyle şeyleri bunları geliştireceğim yerler var mı peki?
 
O zaman onu sadece Commander (CMD) ile komut çağırsam nasıl olur?
Bu dediğinizi anlamadım. Şu an kodunuzda her ADB işlemi için yeni bir thread yaratılıp işlem yaptırılıyor. Şu durumda aynı anda 2 ADB komutu eşzamanlı olarak çalıştırılabilir ancak bu sorun yaratır mı mesela?

Zannımca siz program işlem esnasında tıkandığı ve pencere yanıt veremediği için Thread'lere sürekli başvurdunuz. Fakat bunun yerine işlemleri yine sırayla yapmayı garantileyecek şekilde asenkron programlama kullanabilirsiniz. Böylece Thread'leriniz kaybolmaz, fırlatılan hatalar yakalanabilir ve Thread yönetimi kolay olur.
 
asenkron bilmiyorum
C#:
Thread th = new Thread(() =>
                        {
                            string output = Commander($"fastboot -s {selectedDevice} reboot recovery");
                        });

                        th.IsBackground = true;
                        th.Start();

                        if (selectedDevice == "Device Not Found")
                            MessageBox.Show("CONNECT OR SELECT A DEVICE!");
                        else
                            MessageBox.Show($"{selectedDevice} Rebooting recovery using fastboot.");

bakın şimdi Commander komutu çalıştırmaya yarayan benim yazdığım bi fonksiyon thread'i kaldırıp sadece "Commander($"fastboot -s {selectedDevice} reboot recovery");" bunu kullansam dahamı performanslı olur?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…