GitHub Codespaces'e Android Studio Kurulumu

Codespaces bize güçlü bir kod editörü olan Visual Studio Code ile beraber gelmesine rağmen bazı uygulama geliştirme ortamları kendine has kod editörlerine ihtiyaç duyabilmektedir. Örneğin Android platformu için yerel bir uygulama geliştirmeye karar verdiğinizde Codespaces maalesef varsayılan olarak bunu desteklemiyor. Bu ve bazı sebeplerden dolayı ideal bir masaüstü veya pencere yöneticisi kurarak bu tarz GUI gerektiren programları çalıştırabiliyoruz. Bu yazıda Fluxbox ve NoVNC ile beraber sanal makinemize erişim sağladıktan sonra Android Studio kurarak uygulamalarımızı nasıl geliştirebileceğimizi anlatacağım.

Codespace Oluşturma

Android Studio gibi ağır bir programı çalıştırabilecek güçte bir sanal makine oluşturmamız gerekiyor. Oluşturulan sanal makineler varsayılan olarak 8GB RAM - 32 GB Depolama alanı ile oluşturuluyor. Ancak bu özelliklere sahip bir makinenin Android Studio gibi ağır bir editörü çalıştırırken ne kadar zorlanacağını tahmin etmek zor değil. Bu yüzden makineyi oluştururken New with Options seçeneği ile daha yüksek özelliklere sahip bir sanal makine oluşturmamız gerekiyor.

2024-06-21-180553_hyprshot.png

Codespace oluşturulurken New with options... seçeneği seçilmelidir. Bu sayede daha yüksek özelliklere sahip bir sanal makine oluşturmanın yanı sırada sanal makinenin lokasyonu, hedef alınacak dal gibi bir çok ayar yapılabilir.

2024-06-21-202630_hyprshot.png

Machine Type açılır menüsünden 4-core seçilerek 16GB ram ve 32 GB depolamaya sahip bir sanal makine oluşturulmalıdır.

Konfigürasyon Dosyasını Düzenleme

Github Codespaces bize makinemiz ile ilgili belirli konfigürasyonlar yapabileceğimiz bir özelleştirme dosyası sağlamaktadır. Bu dosya varsayılan olarak Codespaces tarafından oluşturulmuyor ancak gerek duyulduğunda ana dizininde yer alan /.devcontainer/devcontainer.json dosyası oluşturularak bu özellik aktif hale getirilebilmektedir.

{
    "image": "mcr.microsoft.com/devcontainers/universal:2",
    "forwardPorts": [6080],
    "portsAttributes": {
        "6080": {
        "label": "desktop"
        }
    },
    "runArgs": ["--device=/dev/net/tun"],
    "features": {
        "ghcr.io/devcontainers/features/desktop-lite:1": {
            "version": "latest",
            "noVncVersion": "1.2.0",
            "password": "testsifre1234",
            "webPort": "6080",
            "vncPort": "5901"
        },
        "ghcr.io/tailscale/codespace/tailscale": {}
    }
}

Oluşturulan boş dosyaya eklenen veriler ile sanal makine özelleştirilmektedir, features kısmına eklenen paketler ile beraber NoVNC, Flutbox (ikisi de desktop-lite paketi içinde hazır olarak sunulmaktadır) ve Tailscale paketlere dahil edilmektedir. Aynı zamanda desktop-lite paketinin sahip olduğu "password" niteliği ile özel bir VNC şifresi de belirlenebilmektedir.

Dosya kaydedildikten sonra yapılan değişikliklerin aktif olabilmesi için sanal makinenin yeniden inşa edilmesi gerekmektedir. Yeniden inşa edilme süreci ekranın alt tarafında bulunan uyarı ile başlatılabilir. Bu sürede proje dizini haricinde bulunan dosyalar tümü silinecektir. Bu sebeple container'i yeniden inşa etmeden önce Codespace'de bulunan dosyalarınızı GitHub reponuz ile eşitlemeyi unutmayın.

2024-06-21-204636_hyprshot.png

Rebuild işleminden sonra sanal makinenizin sağlıklı bir şekilde açılması gerekmektedir. Bir hatayla karşılaşmanız halinde güncel dökümanlar ile konfigürasyon dosyanızın uyumlu olduğundan emin olunuz.

Tailscale VPN Kurulumu

Sanal makinenizin içerisinde bir Android Emülatörü kullanmanız yorucu ve uğraştırıcı olduğu gibi iyi bir performans sergilemediği için fiziksel cihazınızı bir mesh vpn aracılığıyla sanal makinenize bağlayarak Android uygulamanızı cihazınızda test edebilirsiniz. Devcontainer dosyasına eklediğimiz konfigürasyon zaten Tailscale'i sisteme kurmaktadır. Tailnet ağını aktifleştirmek için sadece bu komut ile Tailscale hesabınıza giriş yapıp Tailscale'i aktifleştirmek yeterlidir.

 sudo tailscale up --accept-routes

Aynı zamanda Tailscale VPN'i mobil cihazınıza da Google Play{0="" 1="o" 2="b" 3="j" 4="e" 5="c" 6="t" 7="" 8="O" 9="b" 10="j" 11="e" 12="c" 13="t" 14=""} üzerinden kurarak cihazınızı tailnet ağınıza eklemeniz gerekmektedir.

Android Studio Kurulumu

Aşağıda yer alan komutlar ile beraber Android Studio'nun 2024.1.1.11 sürümünü sanal makinenize kurabilirsiniz.

wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2024.1.1.11/android-studio-2024.1.1.11-linux.tar.gz

tar -xf android-studio-2024.1.1.11-linux.tar.gz

mv android_studio/ .android_studio/ 

mkdir .android_sdk

Bu komutlar ile beraber Android Studio cihazınıza indirilecek ve .android_studio dizinine çıkarılacaktır. Artık ./.android_studio/bin/studio.sh komutu ile Android Studio'yu çalıştırabiliriz :)

NoVNC ile Sanal Makineye Bağlanma

2024-06-21-210801_hyprshot.png

NoVNC cihazın 6080 TCP portunda çalışmaktadır, web tarayıcınız ile İletilen Adres'de belirtilen url'yi açarak konfigürasyon dosyasında belirttiğiniz şifre ile NoVNC'ye erişebilirsiniz.

Android SDK Kurulumu

Studio ilk çalıştırıldığında kurulum sihirbazı aracılığıyla kurulması gereken özellikleri, SDK'nin kurulacağı yer gibi bir çok ayar yapabilmenize olanak sağlar. Kurulum türü seçilirken Custom seçeneği ile beraber bu özellikleri seçmek için özel bir kurulum yolu tercih edilir.

2024-06-21-214000_hyprshot.png

Kurulacak olan bileşenlerden sanal cihaz oluşturmayacağımız için Android Virtual Device'ın tiki kaldırılır ve SDK için özel bir kurulum (workspaces/<repo adı>/.android_sdk) konumu seçilir. Aynı zamanda .gitignore dosyasına .android_sdk ve .android_studio konumları ekenerek bu dosyaların gelecekteki commitlere dahil olması engellenir. Kurulum tamamlandıktan sonra yeni bir proje açabilir veya önceden oluşturulan projelerinizi rahatlıkla içe aktarabilirsiniz.

Tailscale ile Kablosuz Hata Ayıklama

Uygulamamızı test etmek için Android Debug Bridge'ın (ADB) Kablosuz hata ayıklama özelliğini kullacağız. Bunun için Ayarlar > Geliştirici Seçenekleri > Kablosuz Hata Ayıklama özelliğini aktif hale getirmemiz gerekiyor. İlk olarak Eşleşme kodu ile cihaz eşle seçeneğinden verilen bilgilerle cihazımızı sanal makinemizdeki ADB ile eşleştireceğiz.

./.android_sdk/platform-tools/adb pair <eslestirme ip:port> <esleme kodu>

Eşleştirme işleminden sonra aşağıdaki komut ile mobil cihazımız ile sanal makine arasında bağlantı kurmamız gerekmektedir. Aynı zamanda cihazın bağlanma durumunu adb devices komutu ile kontrol edebilirsiniz

./.android_sdk/platform-tools/adb connect <baglanma ip:port>

Bitiş

Bu yazımızda NoVNC ve Flutbox aracılığıyla sanal makinemize bir grafik arayüzü kurduk ve bağlandık. Ardından örnek olarak Android Studio kurduk ve uygulama testleri için de Tailscale sayesinde mobil cihazımızı ve sanal makinemizi aynı ağa ekledik. Bu yazımızda kullanılan programlar ve dosyalar gelecekte değişiklik gösterebileceği için çalışmaması halinde gerekli programların dökümanlarını okuyarak gelecekte belkide çok daha iyi bir deneyim elde edebilirsiniz.