จากการที่ทีมพัฒนา Android ได้ประกาศหยุดการพัฒนา
Jack toolchain
นั่นหมายความว่าการใช้ความสามารถของ Java 8 ในการพัฒนา Android app จะเปลี่ยนไป
ซึ่งล่าสุดได้ประกาศวิธีการออกมาแล้ว
Support Java 8 support
นั่นคือยัด feature ของ Java 8 เข้ามาให้เลย (Build-in)
แต่ใช้ได้บาง feature เท่านั้น !!
ปล. แต่ในปัจจุบันการพัฒนา Android app ด้วยความสามารถของ Java 8
มันยังคงเป็นเพียงทางเลือกหนึ่งเท่านั้นนะครับ
ดังนั้นเราไม่จำเป็นต้องใช้ก็ได้
หรือไม่พอใจก็เปิดความสามารถนี้เองได้
มาดูการใช้งานและการ migrate กันหน่อย
ถ้าต้องการใช้งาน Java 8 ตามแนวทางใหม่นั้น
สิ่งแรกเลยต้อง download Android Studio 2.4 Preview 4 ขึ้นไปมาใช้ก่อน (ตอนนี้ Preview 5 แล้ว)
ต่อมาต้องเปลี่ยนมาใช้ Android plugin for Gradle 2.4.0 alpha5 ขึ้นไป
ยังไม่พอนะต้องปรับแต่ compileOptions ในไฟล์ build.gradle
ให้เป็น Java 8 ด้วย
ยังไม่พอนะหลาย ๆ feature ต้องกำหนด minSdkVersion เป็น API level 24 ขึ้นไปอีกด้วย
[gist id="99c0c5f115a9992afa4caf0339ac6d91" file="build.gradle"]
มาดูขั้นตอนการทำงานบ้าง
แสดงการทำงานดังรูป
โดยจะมีสิ่งที่เรียกว่า desugar เป็นตัวแปลง bytecode
เมื่อลองทำการ builld ด้วย gradle จะพบว่า
มีขั้นตอนการทำงานดังนี้
ซึ่งเป็นไปตามรูปข้างบนเลย
นั่นคือทำการแปลง ไฟล์ class ด้วย desugar ก่อนที่จะแปลงเป็นไฟล์ dex ต่อไป
[gist id="99c0c5f115a9992afa4caf0339ac6d91" file="step.txt"]
ปล. เพิ่มขั้นตอนในการ build เข้ามา
แน่นอนว่าต้องใช้เวลาในการ build มากขึ้น !!
ถ้าใครต้องการอ่าน source code ของ desugar tool
สามารถอ่านและศึกษาเพิ่มเติมได้ที่
ส่วนใครที่ใช้งาน Jack toolchain และ Retrolambda อยู่
ก็เพียงลบมันทิ้งไปเท่านั้นเองนะ
ส่วนใครที่ต้องการปิด Java 8 support แล้ว
สามารถกำหนดได้ในไฟล์ gradle.properties ได้ดังนี้
[code]
android.enableDesugar=false
[/code]
ขอให้สนุกกับการ coding ครับ