"ความตั้งใจสร้างได้ทุกอย่าง ความไม่ตั้งใจทำลายได้ทุกสิ่ง"
รู้จักกันแต่เนิ่นๆ "Jack and Jill" Android Toolchain ตัวใหม่ กับการพยายามทำให้แอพฯแอนดรอยด์ Build เร็วขึ้น
12 Dec 2014 15:20   [6035 views]

ถึงแอนดรอยด์จะอยู่ในระดับที่ค่อนข้างเสถียรแล้ว (เอาจริงๆรู้สึกได้ว่าเสถียรกว่า iOS มาสักพักละ) แต่ก็ยังมีการพัฒนาประสิทธิภาพเพิ่มอยู่อย่างต่อเนื่อง อย่างเช่น Runtime ก็ออกตัวใหม่อย่าง Android Runtime (ART) มาจนถึงขั้นใช้งานจริงเรียบร้อยบน Android 5.0 Lollipop

คราวนี้ก็มาฝั่งนักพัฒนาบ้าง หลายต่อหลายทีการ Build แอพฯนั้นใช้เวลานานมาก นานกว่าที่ควรจะเป็น ฝั่งทีมพัฒนาแอนดรอยด์ก็เห็นว่ามันยังเป็นปัญหาที่ควรได้รับการแก้ไขอยู่ จึงกำลังซุ่มพัฒนา Android Toolchain ตัวใหม่นามว่า "Jack and Jill" หวังจะทำให้ทุกอย่างดีขึ้นและช่วยลดเวลาการ Build แอพฯลง (ซึ่งถ้าทำได้นี่นักพัฒนาจะมีความสุขมาก)

Jack ย่อมาจาก Java Android Compiler Kit เป็น Toolchain ที่ใช้คอมไพล์โค้ด Java ให้เป็นไฟล์ Dex (รู้จักกันอยู่แล้วช่ะ) โดยใน Jack นี้จะมีไฟล์สกุลใหม่ปรากฏออกมาคือ .jack เป็น Library File ที่ถูกคอมไพล์มาจากไฟล์ประเภทอื่น ก่อนจะมาประกอบรวมกันเป็น Dex อีกที

ส่วน Jill ย่อมาจาก Jack Intermediate Library Linker เป็นตัวแปลง Library ที่มีอยู่แล้วทั้งในรูปแบบ Library Module ใน Android Studio หรือแม้กระทั่งไฟล์ .aar และ .jar ให้กลายเป็น .jack ก่อนจะส่งให้ Jack ไปคอมไพล์เป็น Dex

จะเห็นว่า Jill จริงๆก็แค่ส่วนที่เตรียมพร้อมโน่นนี่ให้ Jack แต่พระเอกจริงๆของเราคือ Jack ด้วยเหตุนี้เราจึงเรียกเจ้า Toolchain ตัวใหม่นี้กันสั้นๆว่า Jack

Diagram การทำงานโดยรวมจะเป็นแบบนี้

โดย Jack ถูกออกแบบมาให้ Minify Bytecode ได้ด้วยในตัวเดียว ไม่ว่าจะเป็น Repackaging, Shrinking, Obfuscation และ Multidex เท่าที่อ่านดูคือไม่ได้ใช้ Proguard แต่สามารถใช้ Rule ตามใน Proguard Configuration File โยนเข้าไปให้ Jack จัดการได้เลย

ทางด้าน Repackaging ยังจำกัดประเภท Rule ให้ใช้ได้เฉพาะ rule เท่านั้น แต่ zap และ keep ยังใช้ไม่ได้ (แต่ Request ได้ถ้าอยากใช้ ถ้าเรียกร้องมากๆทางนั้นจะทำให้ ... น่ารักมะ)

ข้อจำกัดของ Jack ที่ดูอาจจะทำให้มีปัญหาสุดในตอนนี้คือยังใช้ Annotation Processing ไม่ได้ แต่คงทำได้ในอนาคตแหละนะ

Jack สามารถใช้งานได้แล้วตั้งแต่ Build Tools เวอร์ชั่น 21.1.1 เป็นต้นไป การเปิดใช้ Jack ทำได้บน Gradle Script ดังนี้

android {    ...    buildToolsRevision ‘21.1.2’    defaultConfig {      // Enable the experimental Jack build tools.      useJack = true    }    ...}

อย่างไรก็ตาม Jack ยังอยู่ในช่วง Experimental อยู่ นี่เป็นเพียง Build แรก จึงมีบั๊กตูมและการ Build ไม่ได้เร็วกว่าแต่อย่างใด ฟีเจอร์โน่นนี้ก็ยังใช้ไม่ได้ แต่เค้าก็เชียร์ให้คนใช้ "ทดสอบ" กันได้เลยเพราะทางทีมพัฒนาอยากเก็บข้อมูลและอยากได้ Bug Report เพื่อไปพัฒนาสู่จุดที่ใช้งานจริงได้ ซึ่งถ้าถามว่าเราสามารถใช้ Jack ในการทำ Production ได้รึยังในนาทีนี้? ตอบว่า "ยังไม่ได้" นะครับ นี่เอาไว้ทดลองและจิ้มเล่นเฉยๆ

ก็เป็นแค่การเอามาแนะนำให้รู้จักกัน จากนี้คงจะได้เห็นมันพัฒนาขึ้นเรื่อยๆ ถึงวันนึงถ้าใช้งานจริงได้แล้วจะเอามาบอกเล่าเก้าสิบให้ฟังอีกทีพร้อมจะหลอกล่อให้เปลี่ยนเองถ้ามันพร้อมจ้า 555

หากเห็นว่า Build Tools ถูกปล่อยอัพเดตมาเรื่อยๆก็ไม่ต้องสงสัย ... อิ Jack and Jill นี่แหละที่เป็นตัวอัพเดต =)

ข้อมูลเพิ่มเติม: Experimental New Android Tool Chain - Jack and Jill

บทความที่เกี่ยวข้อง

Dec 8, 2014, 03:51
18862 views
ทำความรู้จัก ProGuard เครื่องมือที่จะทำให้แอพฯแอนดรอยด์คุณเล็กลงกว่าครึ่งและยัง Reverse Engineer ยากขึ้น
Dec 4, 2014, 03:11
23396 views
สารพันเรื่องราวของ "Thread" บนแอนดรอยด์ การปะทะกันของ Thread, AsyncTask, AsyncTaskLoader และ IntentService
0 Comment(s)
Loading