Google Flutter

วิธีกำหนดค่า JDK บน Mac สำหรับ Android Studio Arctic Fox (2020.3 เป็นต้นไป)

เรื่องที่เกี่ยวข้อง - ,

เทคโนโลยีนั้นมีการปรับเปลี่ยนตลอดเวลา เมื่อถึงเวลา วิธีการใช้งานเดิมๆ ก็อาจจะไม่ได้ผลอีกต่อไป กับ Android Studio ก็เช่นกันครับ

แน่นอนว่าพลมีการแนะนำวิธีการติดตั้ง JDK สำหรับเป็นส่วนหนึ่งของคอร์สเริ่มต้นเรียนรู้ทำแอพด้วย Ionic Framework หรือ Google Flutter มาแล้ว แต่วิธีการนั้นก็อาจจะต้องเปลี่ยน เพราะการมาถึงของ Android Studio เวอร์ชั่น Arctic Fox ครับ

ส่วนนี้จะถูกแนะนำแทนที่คลิปเดิมในคอร์ส Google Flutter และ Ionic Framework ด้วยเช่นกันครับ

Android Studio Arctic Fox

จริงๆ แล้ว Android Studio Arctic Fox ก็ไม่ได้เป็นอย่างอื่นนอกจากเวอร์ชั่นปรับปรุงของ Android Studio ที่แก้ไขข้อผิดพลาดในเวอร์ชั่นปัจจุบัน และเสริมความสามารถใหม่ๆ เข้ามา แต่ก็มีส่วนที่น่าสนใจดังนี้ครับ

  • รองรับ Apple M1 ชิปทำเองของ Apple แทน Intel ที่ใช้กันมานาน
  • ระบบการจัดการและสร้าง UI ใหม่ Compose

ปัญหาที่เกิดขึ้นหลังจากอัพเดต Android Studio เป็น Arctic Fox

ทีนี้ในคอร์สออนไลน์ทั้งแบบสอนสด และแบบเรียนผ่านวิดีโอออนไลน์ มีหลายคนที่อัพเดตไปใช้ Arctic Fox แล้วเจอปัญหาแล้ว จากการรันคำสั่ง flutter doctor ประมาณด้านล่าง

[!] Android Studio (version 2020.3)
    ✗ Unable to find bundled Java version.

แก้ปัญหา

วิธีแก้ปัญหามี 5 ขั้นตอน ทำตามง่ายๆ ด้านล่างเลย

1. ติดตั้ง Java Development Kit (JDK)

ติดตั้ง Homebrew

สำหรับการติดตั้ง Java Development Kit หรือ JDK พลยังแนะนำให้ใช้ Homebrew เหมือนเดิม

ใครยังไม่มี Homebrew จัดไปตามคลิปสอนด้านล่าง แปปเดียวมีแน่นอน

ติดตั้ง JDK

เปิดโปรแกรม Terminal และรันคำสั่งด้านล่างทีละคำสั่ง

brew update
brew install cask
brew tap adoptopenjdk/openjdk
// ระหว่างคำสั่งด้านล่างทำงาน จะมีการถามรหัสผ่าน ให้กรอกลงไปได้เลย (ตอนกรอกจะไม่มีอะไรแสดงขึ้นมานะ ต้องมั่นใจ และกด enter
brew install adoptopenjdk8

เพิ่มเติม ถ้าต้องการติดตั้งเป็น JDK 11 ให้รันคำสั่งด้านล่างแทน ต้องเลือกตัวใดตัวหนึ่งระหว่าง 8 กับ 11 นะ จะได้ไม่สับสน

brew install adoptopenjdk11

จากนั้นทดสอบรันคำสั่ง ด้านล่าง

java -version

น่าจะได้เวอร์ชั่นประมาณด้านล่าง แสดงขึ้นมา (เวอร์ชั่นด้านหน้าเป็น 11 ถือว่าโอเค)

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)

2. ตรวจสอบที่อยู่ของ Java

ให้เปิด Terminal และทำการรันคำสั่ง

/usr/libexec/java_home

จะมีการแสดงที่อยู่ของ Java ขึ้นมาประมาณด้านล่าง แตกต่างไปตามเครื่อง และเวอร์ชั่นของ Java นะ แต่มันควรขึ้นที่อยู่มาแบบนี้ล่ะ

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

3. เช็คก่อน Terminal ของเราเป็นตัวไหน

ในที่นี้ Terminal ของ MacOS จะมี 2 แบบคือแบบ bash หรือ zsh ต้องให้รู้แน่ว่าเราใช้ตัวไหนกันด้วยการรันคำสั่งด้านล่าง

ps -p $$

// จะได้ข้อความประมาณด้านล่าง อย่างของพลจะเป็น zsh ตามข้อมูล
  PID TTY           TIME CMD
49273 ttys005    0:00.20 /bin/zsh

4. กำหนด PATH

อย่างแรก ถ้าเราไม่มีการสร้าง profile ของ Terminal มาก่อน เราสามารถสร้างได้โดยใช้คำสั่งด้านล่าง (แยกตามประเภท Terminal)

// zsh
touch ~/.zshrc

// bash
touch ~/.bashprofile

และรันคำสั่งเพื่อเปิดไฟล์ (แยกตามประเภท Terminal)

// zsh
open -e ~/.zshrc

// bash
open -e ~/.bashprofile

ไฟล์นี้อาจจะมีการสร้างไว้ก่อนหน้านี้อยู่แล้ว เราไม่จำเป็นต้องแก้ไขข้อมูลเดิมที่มีอยู่ในไฟล์

แต่ให้ลงมาด้านล่างสุดของไฟล์ เพื่อเติมคำสั่งด้านล่างลงไป

export JAVA_HOME=$(/usr/libexec/java_home)

จากนั้นบันทึกไฟล์ให้เรียบร้อย

กลับมาที่ Terminal และรันคำสั่งด้านล่าง เพื่อให้ Terminal ทำการอ่านค่าที่เราเพิ่มเข้าไปในไฟล์

// zsh
source ~/.zshrc

// bash
source ~/.bashprofile 

จากนั้นทดสอบรันคำสั่งด้านล่าง เพื่อให้แสดงค่า JAVA_HOME ที่อยู่ในระบบขึ้นมา ควรจะได้ที่อยู่เดียวกับขั้นตอนที่ 2

echo $JAVA_HOME

// ควรได้แบบเดียวกับขั้นตอนที่ 2 
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

5. รันคำสั่งสุดท้าย

หลังจากผ่านขั้นตอนทั้งหมดแล้ว เราจะรันคำสั่งด้านล่างทีละคำสั่งในโปรแกรม Terminal

cd /Applications/Android\ Studio.app/Contents/jre

ln -s ../jre jdk

ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk

เสร็จแล้วให้รันคำสั่ง flutter doctor เช็คอีกที ปัญหาควรจะหายไปแล้วครับ เย้ๆ 🎉🎉🎉

อ้างอิง

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Menu