Docker ile Android Emülatör Çalıştırmak

Container teknolojileri, sunduğu imkânlar sayesinde sınırları genellikle sadece sistem kaynaklarımıza ve hayal gücümüze bağlı olan işler yapmamıza olanak sağlıyor. Özellikle Docker kullanarak sistemimizde, birbirinden ve ana sistemden izole bir şekilde birçok uygulamayı saniyeler içerisinde ayağa kaldırabiliyor veya saniyeler içerisinde durdurabiliyoruz. Böylece artık ihtiyacımız olmayan konteynerleri ve imajları sistemimizden çok kolay bir şekilde silerek gereksiz alan kaplamasının önüne geçebiliyoruz. Geçtiğimiz yazılarda Docker ile GUI uygulamalarının nasıl çalıştırılabileceği, kullanılmayan konteynerlerin sistemden nasıl silineceğini işlemiştik, isterseniz bu yazının sonundaki bağlantıları kullanarak bu yazılara da göz atabilirsiniz. 

Docker ve Container teknolojileriyle yapılabilecekler için “neredeyse sistem kaynaklarınız ve hayal gücünüzle sınırlı” şeklindeki söylemimizi destekler nitelikte bir yazı ile daha karşınızdayız! Docker ile genellikle konsol uygulamaları ve arka plan işlemleri yapılsa da yapısı gereği aslında birçok arayüz işlemini gerçekleştirmemize de olanak sağlıyor, bunlara bir konteyner içerisinde Android emülatörü çalıştırmak da dahil!

Özellikle Android geliştiricileri ve Android uygulama testleri yapanlar, fiziksel cihazlar haricinde farklı cihaz spesifikasyonları başta olmak üzere çeşitli Android sürümü ve cihaz koşullarında (Telefon durum bilgileri, pil durumu ve sensör verileri gibi) kendi bilgisayarlarına bir Android emülatörü kurarak bu testleri gerçekleştirir. Ancak bu emülatör kurulumlarını yaptığınızda ister istemez sisteminize birçok paket v.s. kurmanız gerekecektir. Ayrıca emülatörler zaman zaman özellikle yüksek bellek tüketimleri nedeniyle birçok kullanıcının bilgisayarının sınırlarını zorlayabilmekte ve alternatif çözüm arayışlarına neden olmaktadır. Bu noktada Container teknolojisinden faydalanmak, gayet akıl kârı bir çözüm olarak karşımıza çıkmaktadır.

Docker Üzerinde Android Emülatör Koşturulması

Docker üzerinde Android koşturmak için internette birçok çözüm yolu mevcuttur. Ancak birçoğunda herhangi bir görsel arayüz elde edilmemektedir. Genellikle Android işletim sisteminden terminal elde edilerek işlemleri bu terminalden komutlarla yürütmek şeklinde çözümler sunulmaktadır. Ancak emülatör üzerinde çalıştırmak, görsel işleyişi görmek ve müdahale edilmesi istenen durumlarda Android’in terminalinden ziyade bir görsel emülatör ihtiyacı ortaya çıkmaktadır. Bu şekilde çözüm sunan en popüler projelerden biri Docker-Android projesidir.

GitHub üzerinde Apache 2.0 lisansıyla geliştirilen projenin en büyük avantajlarından biri de VNC üzerinden bağlantı yapılan emülatörü kullanmak için konteyneri kendi cihazınızda koşturmanıza gerek olmaması. Docker kurulu herhangi bir uzak sunucuda çalıştıracağınız konteynerin ilgili portlarını yönlendirerek kendi cihazınızın kaynaklarını harcamaksızın Android emülatörünüze erişebilirsiniz!

Birçok Android sürümü ve birçok telefonun görünümüyle çalıştırabileceğiniz emülatörü kullanmaya başlamadan önce emülatör imaj dosyalarının 2 GB düzeylerine çıkabildiğini ve lisans dosyasında belirtildiği üzere “anonim” olarak bazı veriler toplayabildiğini göz önünde bulundurmanızı tavsiye ederiz.

Artık hazırsanız emülatörümüzü koşturma aşamasına geçelim. Samsung Galaxy S6 çerçevesini kullanarak Android 8.1 barındıran bir emülatör konteyneri koşturmak için aşağıdaki komutu terminalden çalıştıralım.

 docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container budtmo/docker-android-x86-8.1

Daha önce de bahsettiğimiz gibi imaj boyutu 2 GB düzeyinde olduğu için indirme işlemi ve imaj dosyalarının açılması bir defalığına mahsus olmak üzere biraz zaman alabilir. İmaj dosyalarının inmesi, açılması ve konteynerin çalıştırılması tamamlandığında konteynerimizin içerisinde Android emülatörü çalışmaya başlamış olacaktır.

Herhangi bir tarayıcı üzerinden konteynerin çalıştığı makinenin IP adresinin 6080 portuna bağlandığımızda bizi aşağıdaki gibi bir VNC bağlantı ekranı karşılayacaktır. Bu VNC bağlantısı üzerinden Android emülatörünüzü görsel olarak dilediğiniz gibi yönetebilirsiniz! Eğer ki yerel sisteminize kurulum yapmışsanız tarayıcınızda http://localhost:6080 adresine giderek VNC bağlantısı üzerinden emülatörünüze erişebilirsiniz.

Docker Android Emülatör VNC
Docker ile çalıştırılan Android Emülatörüne VNC Bağlantısı ile ulaşılabilmekte.

Farklı Android Sürümlerini Kullanabilirsiniz!

Yukarıdaki örnekte Android 8.1 çalıştırdık ancak bu proje kapsamında GitHub proje adresindeki imaj listesinde hangi Android sürümlerini çalıştırabileceğinizi görebilirsiniz. Bu yazının hazırlandığı tarihten günümüze kadar olan, yani Android 5.0.1’den Android 10.0’a kadar farklı Android sürümlerini içeren birçok imaja ulaşmak mümkündür.

Emülatör ile Neler Yapılabilir?

Normalde kullanılan Android emülatörleri ile yapılan her işlem, Docker üzerinde koşturulan bu Android emülatörü ile de yapılabilir diyebiliriz. Özellikle Android uygulamalarının testlerinin koşturulması gibi konularda başvurulan emülatörlere alternatif olarak kullanılabilecek bu projenin de kendi GitHub sayfasındaki README dosyasında birçok detaya yer verilmiş. İlerleyen yazılarda daha detaylı olarak işlenebilecek bu konulara kendiniz göz atmak istiyorsanız projenin GitHub sayfası üzerinden detaylı anlatımlara ulaşabilirsiniz.

GitHub Sayfası: https://github.com/budtmo/docker-android

Eğer konteynerlerle çalışmak ile ilgileniyorsanız blogumuzun Container kategorisinde ilginizi çekecek birçok içerik bulabilirsiniz.

Örneğin, konteynerler üzerinde GUI uygulamaları çalıştırmak istiyorsanız veya bu yazıda anlatılanları denedikten sonra oluşan konteyneri silerek disk alanınızdan kazanmak istiyorsanız aşağıdaki yazılar tam size göre!

Leave a comment