Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

เมื่อความสามารถของ Java 8 ถูก Build-in เข้ามาใน Android

$
0
0

จากการที่ทีมพัฒนา 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 ครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles