gradle-retrolamba
Android Geliştirme için Java 8'i kullanmak için kademeli derleme bağımlılığını kullanabilirsiniz.
Aşağıda, Android geliştirme için lambda ifadelerini çalıştırmak için takip ettiğim eksiksiz bir kılavuz var. Bu kılavuzun orijinal kaynağının sonunda belirtilmiştir.
Bu kılavuzda, bazı Java 8 özelliklerini Android Geliştirme Araçları'na getirmek için bir yöntem gösterilecek, özellikle Eclipse IDE'yi hedefleyecek
. Bununla birlikte, bu kılavuzda anlatılacak adımlar Google'ın yeni ayaklanma geliştirme ortamı Android Studio'ya da uyarlanabilir. JetBrains'in popüler IntelliJ Idea IDE'nin topluluk sürümüne dayanmaktadır ve yakın zamanda bu kılavuz yazılmadan biraz önce, 2014 yılının Temmuz ayında Google tarafından 'beta' sürümüne yükseltilmiştir. Eclipse en azından bir süre önde gelen geliştirme ortamı olarak kalacak ve çoğu Android projesinin Eclipse kullanılarak geliştirildiği göz önüne alındığında, lambda ifadeleri gibi yeni Java 8 özelliklerini ADT'ye getirmek için bir yöntem geliştiriciler için oldukça yararlı görünüyor.
Android Geliştirme, 2011 yılında sonlandırılan Apache Harmony Project adlı özel bir Java uygulamasına dayanmaktadır. Android Geliştirme'de en sık kullanılan Java sözdizimi Java 6 (v1.6) ve Java 7 (v1.7) de kısmen desteklenmektedir. KitKat sürümü (Android 4.4. +). Bu nedenle, lambda ifadeleri gibi Java 8 özellikleri, geliştirme araçlarına bazı değişiklikler uygulamadan doğrudan Android Uygulama Geliştirme'de kullanılamaz. Neyse ki, bu yapılar temel olarak geliştiricilere 'anonim sınıflar' gibi şeylerin eksikliklerini veren bazı 'sözdizimsel şeker' geliştirmeleridir ve Java 6 veya Java 7 sınıflarına çevrilebilirler.
Java 8 kaynak kodunu daha düşük Java sürümlerine çevirmek için yakın tarihli bir yaklaşıma RetroLambda denir . Bu kütüphane, geliştiricilerin Java 7 kodunu lambda ifadeleriyle Java 7 veya daha düşük bir sürümde çalıştırmasını sağlar. Ne yazık ki, lambda ifadeleri dışındaki Java 8 özellikleri şu anda RetroLambda tarafından desteklenmemektedir, ancak lambda ifadeleri kavramı Java 8 platformunda en büyük sıçramadır ve yine de Android geliştiricileri için harika bir araçtır.
Bu kütüphane hakkında ayrıntılar GitHub sayfasında bulunabilir:
https://github.com/orfjackal/retrolambda#getting-started
Ayrıca, başka bir geliştirici tarafından oluşturulan RetroLambda için bir Gradle eklentisi, Gradle tabanlı yapıların Java veya Android Projelerinde uygulanmasına izin verir. Ancak, geliştirici yalnızca bu eklentiyi Android Studio ortamına entegre etmekten bahsediyor. Ayrıntılar GitHub sayfasında bulunabilir:
https://github.com/evant/gradle-retrolambda
Bu altyapıların Eclipse tabanlı bir geliştirme ortamında kullanılması doğrudan ele alınamaz, ancak yapılabilir ve bu kılavuzda gösterilecektir.
Hazırlık
Bu kılavuz, okuyucunun Android Geliştirme hakkında temel bir anlayışa sahip olduğunu ve ADT sürüm 22.6.2'yi temel aldığını varsayar, çünkü yeni ADT sürüm 23.0.2'de düzen klasörü oluşturma gibi sorunlar var gibi görünüyor. Bu sorunla ilgili ayrıntılar aşağıdaki bağlantıda bulunabilir:
http://code.google.com/p/android/issues/detail?id=72591
Bu kılavuzdaki adımlar Windows 8.1, 64 bit geliştirme makinesi için verilecektir , ancak diğer platformlara kolayca uyarlanabilirler. Yeni derleme sistemi Gradle
derleme / temizleme işlemleri için kullanılacak ve kurulum prosedürü de sağlanacaktır. Ayrıca, hem JDK 8
ve JDK 7
geliştirme makinede birlikte gerekir. Bunları kurmak için aşağıdaki adımlar izlenmelidir:
- JDK 8 erken erişim önizleme sayfasına gidin http://jdk8.java.net
- JDK 8u20'yi indirin ve yükleyin. JRE 8 kurulumu gerekli değildir ve atlanabilir
- JDK 7'nin son kararlı sürüm sayfasına gidin http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- JDK 7u65'i indirin ve yükleyin. JRE 7 kurulumu tekrar gerekli değildir ve atlanabilir
- JDK 8 ana klasörünü ve JDK 8
bin
klasörünü%PATH%
değişkeninize
JAVA_HOME
JDK 8 giriş klasörü yolunun değeriyle yeni bir ortam değişkeni oluşturma
JAVA8_HOME
JDK 8 giriş klasörü yolunun değeriyle yeniden yeni bir ortam değişkeni oluşturun
JAVA7_HOME
JDK 7 giriş klasörü yolunun değeriyle yeni bir ortam değişkeni oluşturma
- Bir terminal penceresi açın ve
java -version
komutu çalıştırın ve Java 8'in çalışır durumda olduğunu doğrulayın
javac -version
Komutu aynı pencerede çalıştırın ve JDK 8 Java derleyicisinin de çalışır durumda olduğunu doğrulayın
Şimdi, ADT-22.6.2 aşağıdaki bağlantıdan indirilmelidir:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- ADT'yi indirin ve içeriğini bir klasöre açın, ör.
D:\adt
ANDROID_HOME
ADT yükleme klasörünüzün yolunun değeri ile çağrılan yeni bir ortam değişkeni tanımlayın , örn.D:\adt\sdk
- Senin ekleyin
Andoid SDK Platform Tools
ve Andoid SDK Tools
klasörler, örneğin D:\adt\sdk\tools
ve D:\adt\sdk\platform-tools
sizin için, %PATH%
değişken
- İsterseniz Eclipse IDE için bir kısayol oluşturun. ADT kurulum klasörünüzün altında bulunur, örn.
D:\adt\eclipse
- Eclipse IDE'yi çalıştırın ve bir çalışma alanı oluşturun, örn.
D:\adt\workspace
Android SDK Manager
Araç çubuğunda bulunan düğmeyi tıklayın
- Seçin
Android SDK Build tools Rev. 19.1
ve Android Support Library
sadece. Diğer her şeyin seçimini kaldırın ve bu iki paketi yükleyin.
Her şey yolunda giderse, ADT çalışır durumda olacaktır.
Aşağıdaki araçların montajı da şiddetle tavsiye edilir:
Eclipse Kepler Java 8 Desteği: Eclipse'in yeni Java 8 sözdizimi uzantılarını tanımasını sağlar ve red dots
Java kod düzenleyicinizde can sıkıcılardan kurtulmanızı sağlar . Help -> Install New Software
Eclipse içine kurulabilir . Enter http://download.eclipse.org/eclipse/updates/4.3-P-builds/ içine Work with
alan ve onu takmaya devam edin.
Nodeclipse / Enide Gradle: Çoğunlukla Groovy dil anahtar kelimelerini vurgulamak için kullanılır. Groovy, Gradle derlemesi için DSL komut dosyaları olarak kullanılır. Bu eklenti üzerinden kurulabilir Eclipse Marketplace
. Bununla birlikte, ADT-22.6.2 içindeki Eclipse ile birlikte gelmez Eclipse Marketplace Client
. Bu nedenle, öncelikle yüklemeniz gerekir Eclipse Marketplace Client
vasıtasıyla Install New Software
Eclipse aracı. Work with
Alana http //: download.eclipse.org/mpc/kepler/ girin ve yüklemeye devam edin. Yükledikten sonra Eclipse Marketplace Client
, Nodeclipse/Enide Gradle
içinde arayabilir Eclipse Marketplace Client
ve yükleyebilirsiniz.
Genymotion Sanal Cihaz: Android Virtual Device
ADT ile birlikte gelen varsayılanın yerini almıştır . AVD rahatsız edici derecede hantal ve sebepsiz yere çökmeye devam ediyor. Genymotion, Oracle VirtualBoxCyanogenMod
tarafından yürütülen görüntüleri kullanarak Android VD'leri hazırlamanızı sağlar . Tek kullanıcı lisansı ücretsizdir ve http://www.genymotion.com adresinden indirilebilir . Sadece bir giriş gereklidir ve Eclipse'e entegre edilebilir. Detaylar şurada bulunabilir:
https://cloud.genymotion.com/page/doc/#collapse8
Aşağıda Android 4.3 tabanlı CyanogenMod sanal cihazının ekran görüntüsü,
X86 veya x64 tabanlı bir kişisel bilgisayarda çalışan tam kapsamlı bir Android cihaz olarak düşünülebilir. Google PlayStore
Bu sanal cihazdaki gibi Google hizmetlerini kullanmak gapps
için, kullandığı Android sürümü için bir görüntünün cihaza yanıp sönmesi gerekir. gapps
CyanogenMod web sitesinden cihaz için uygun bir resim indirilebilir:
http://wiki.cyanogenmod.org/w/Google_Apps
Gradle kurulumu isteğe bağlıdır, çünkü Android SDK tarafından da sağlanır, ancak ayrı kurulumu şiddetle tavsiye edilir. Kurulumu aşağıdaki adımlar izlenerek gerçekleştirilebilir:
Demo Uygulaması
Önceki bölümde açıklanan araçların kullanımını göstermek için basit bir uygulama oluşturulacaktır. Android Geliştirici Araçları'nda lambda ifadelerini kullanma hakkında bilgi edinmek için aşağıdaki adımları uygulamanız yeterlidir:
- Eclipse IDE'yi çalıştırın ve seçerek yeni bir Android Uygulaması oluşturun
File -> New -> Other -> Android -> Android Application Project
- Aşağıda gösterilen formu doldurun:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- Un-select
Project -> Build Automatically
menü seçeneği
- Projeye sağ tıklayın ve
Properties -> Builders
ADT tarafından sağlanan tüm varsayılan oluşturucuları seçip seçimini kaldırın
New
Aynı pencerede düğmesine tıklayın Program
veOK
- Yeni oluşturucu yapılandırma penceresi görünecektir. Sekmelerini aşağıdaki gibi doldurun:
Main
Yeni Oluşturucu Yapılandırmasının Sekmesi
Refresh
Yeni Oluşturucu Yapılandırmasının Sekmesi
Environment
Yeni Oluşturucu Yapılandırmasının Sekmesi
Build Options
Yeni Oluşturucu Yapılandırmasının Sekmesi
- Programı olarak
Gradle_Post_Build
kullanılan ikinci oluşturucuyu oluşturun gradle_post_build.cmd
. Bu oluşturucunun diğer tüm ayarları, önceden oluşturulmuş oluşturucuyla tamamen aynı olmalıdır. Bu oluşturucu, oluşturma işlemi tarafından oluşturulan yapay nesnelerin bin
klasöre kopyalanmasından sorumlu olacaktır .
- Programı olarak
Gradle_Cleaner
kullanan üçüncü oluşturucuyu oluşturun gradle_clean.cmd
. Yalnızca Run the builder
son sekmedeki ayarlar olarak ayarlanmalıdır During a Clean
. Bu oluşturucunun diğer tüm ayarları, ilk oluşturucu ile tamamen aynı olmalıdır. Bu oluşturucu, adından da anlaşılacağı gibi, oluşturma işlemi tarafından oluşturulan yapay nesnelerin temizlenmesinden sorumlu olacaktır.
HelloLambda
Projenin Yeni Üreticileri
- Projeye sağ tıklayın ve
Export
- Seçin
Android -> Generate Gradle Build Files
ve tıklayınNext
- Bir sonraki pencerede projeyi seçin ve tıklayın
Finish
- Projenizin kök klasörüne gidin ve dosyaları silmek
gradlew
ve gradlew.bat
. Ayrıca gradle
klasörü sil
- Tutulmaya geri dönün ve
Project -> Clean
menü seçeneğini seçin . Aşağıdaki gibi görünen formu doldurun:
Clean Project
pencere
- Tıklayın
OK
ve temizleme işlemi tamamlanana kadar bekleyin
- Sınıfınızdaki
setContentView
işlev çağrısından hemen sonra aşağıda verilen Java kod snippet'ini ekleyin MainActivity
:
build.gradle
Dosyanın başlangıcını sourceCompatibility
aşağıdaki bölüme kadar değiştirin :
- Projeye sağ tıklayın ve
Properties -> Java Compiler
seçeneği belirleyin ve tüm uyumluluk düzeylerini Java 8 olarak ayarlayın. Bu, Eclipse'in lambda ifadeleri gibi yeni Java 8 yapılarını tanımasını sağlar.
No
Bildirim penceresini tıklayın
- Projeye sağ tıklayın ve seçin
Build project
. Eclipse projeyi inşa etmeye başlayacak.
Derleme Süreci
Eclipse artık tanıyabilecek R.java
ve dosyalayabilecek ve projenin kaynak dosyalarıyla ilgili hataları gösteren buildConfig.java
herhangi bir görüntüyü red dots
göstermeyecektir.
Run Configuration
Projeye sağ tıklayıp ardından öğesini seçerek Android hedef platformunuz için yeni bir tane oluşturun Run As -> Run Configurations
. Örneğin, bu demo uygulaması Genymotion VD'de aşağıda gösterildiği gibidir:
HelloLambda Uygulaması
LogCat
Pencerede, basit bir lambda ifadesine sahip kod pasajının düzgün çalıştığını gözlemleyebilirsiniz.
Kaynak: Android Geliştirici Araçları'nda Java 8 Lambda İfadelerini Kullanma