ช่วงนี้ทั้งพล และพวกเราที่ใช้ Flutter เวลาอัพโหลดแอพขึ้น Google Play Store ก็จะเจอคำเตือนเด่นๆ มาว่า
The 64-bit requirement: what it means for developers
Starting August 1, 2019:
All new apps and app updates that include native code are required to provide 64-bit versions in addition to 32-bit versions when publishing to Google Play.
Extension: Google Play will continue to accept 32-bit only updates to existing games that use Unity 5.6.6 or older until August 2021.
Starting August 1, 2021:
Google Play will stop serving apps without 64-bit versions on 64-bit capable devices, meaning they will no longer be available in the Play Store on those devices.
This will include games built with Unity 5.6.6 or older.
ที่มา – https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
มาจากการที่ Google จะพยายามให้นักพัฒนาแอพหันมารองรับการทำงานแบบ 64 bit แทน 32 bit ครับ
ซึ่งเราก็ไม่มีปัญหาอะไรหรอก… แต่คนใช้ Flutter ตอนนี้โดนกันทุกคนหน่ะสิ!? แก้ยังไงดี?
ปัจจุบัน สถาการณ์ และสาเหตุมาจากอะไร มาดูกัน
ทีม Flutter รับเรื่องแล้ว
ตอนนี้ สมาชิกของทีม Flutter ออกจากรับทราบแล้ว โดยชี้แจงว่าเกิดจากกลไกของ Play Store ที่เริ่มแจ้งเตือนกับแอพที่ build จากขั้นตอนที่แนะนำในเว็บของ Flutter เอง
ซึ่งก็ได้แนะนำว่าให้ใช้วิธี build APK แบบ แยก เวอร์ชั่น 64 bit และ 32 bit ไปก่อน
และทีมงานกำลังหาวิธีแก้ไขโดยการอัพเดตเครื่องมือรวมถึงเทมเพลตต่างๆ เพื่อหลีกเลี่ยงปัญหานี้
หวังว่าจะออกมาเร็วๆ ครับ
วิธีแก้ไขไปพลางๆ: แยก APK สำหรับ 32 bit และ 64 bit
หากพวกเราจำเป็นต้องรีบส่งงานที่สร้างด้วย Flutter ขึ้น Play Store จริงๆ ให้ลองทำตามขั้นตอนนี้ไปพลางๆ ก่อนได้ครับ พลลองก็ชัวร์แล้ว ลองทำกันดูครับ
- เพิ่มโค้ดด้านล่างนี้ เข้าไปในไฟล์
android/app/build.gradle
android {
...
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for armeabi-v7a and arm64-v8a.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
}
2. รันคำสั่งต่อไปนี้
flutter build apk --release --target-platform=android-arm
เราจะได้ไฟล์ build/app/output/apk/release/app-armabi-v7a-release.apk
3. อัพโหลดไฟล์ app-armeabi-v7a-release.apk
ขี้น Play Store
4. ปรับเพิ่มเลข versionCode
4. รันคำสั่ง
flutter build apk --release --target-platform=android-arm64
5. อัพโหลดไฟล์ app-arm64-v8a-release.apk
ไปที่ Play Store
ด้วยวิธีการนี้ จะทำให้ Play Store เลือกจ่ายแอพเวอร์ชั่นที่เหมาะสมกับอุปกรณ์พกพาที่จะดาวน์โหลดแอพเราไปใช้ ทั้งรุ่น 64 bit และ 32 bit ครับ
หนำซ้ำยังไฟล์มีขนาดใกล้เคียงกับของเดิมด้วย ถ้าไปใช้วิธีที่ทำให้ไฟล์เดียวรองรับทั้ง 64 bit และ 32 bit ขนาดไฟล์จะเพิ่มขึ้น 10 กว่าเมกเลยทีเดียว
เอาว่าเป็นทางเลือกแล้วกัน
อันนี้มีอัพเดตในกลุ่มเรียนรู้ Google Flutter Developer ของคอร์สที่พลจัดอบรมเล็กๆ อยู่ด้วย สนใจคลิกดูรายละเอียดได้นะครับ
คอร์สออนไลน์เริ่มต้นสร้าง Mobile App ด้วย Google Flutter
เหมาะผู้เริ่มต้น และนักพัฒนาเว็บ, เข้าใจง่าย, ใช้ได้จริง
สอบถาม หรือติดต่อจัดอบรมโทร 083-071-3373