อันนี้เป็นเกร็ดเล็กๆ น้อยๆ ที่ได้ระหว่างการติดโฆษณา Admob เข้ากับแอพพลิเคชั่นที่สร้างด้วย Flutter ครับ
เพราะว่าพอได้เอา package Firebase_admob มาใช้ในโปรเจค iOS แล้ว เกิด error ขึ้นตอน Build ใช้งานนั่นเอง ในที่นี้ถ้าเรา build ผ่าน Xcode จะทำให้เราสังเกต error ได้ง่ายขึ้น
โดย Error ที่เป็นเบาะแสแรกคือ
error: 'GULHeartbeatDateStorage.h' file not found
และนำไปสู่ Error ด้านล่าง
include of non-modular header inside framework module FirebaseCore
วิธีการแก้ไขปัญหาค่อนข้างง่าย
แต่ให้แน่ใจก่อนว่า เราได้ทำการรันคำสั่งกับโปรเจคของเราตามขั้นตอนด้านล่างแล้ว
- เคลียร์ cache ของ Cocoapod ก่อน ด้วยคำสั่ง
pod cache clean --all
(รันในโฟลเดอร์ ios) - คลีนโปรเจค flutter ด้วยคำสั่ง
flutter clean
(รันในโฟลเดอร์โปรเจค flutter) - ติดตั้ง package ใหม่ ด้วยคำสั่ง
flutter pub get
(รันในโฟลเดอร์โปรเจค flutter) - ติดตั้ง pod ใหม่ทั้งหมด ด้วยคำสั่ง
pod install
(รันในโฟลเดอร์ ios)
ขั้นตอนต่อไปคือ การตั้งค่าใน Xcode
ให้ทำตามขั้นตอนด้านล่างได้เลย
- จากโปรเจค ให้เลือก Targets
- แล้วเลือกส่วน Build Setting
- ค้นหาส่วนตั้งค่าที่ชื่อว่า Allow Non-modular Includes in Framework Modules และปรับค่าเป็น Yes
หลังจากทำส่วนนี้เสร็จ ก็ให้ปิด และเปิด Xcode ใหม่ และให้ทดสอบ build และรันทดสอบอีกครั้ง ตรงนี้ปัญหาควรถูกแก้ไขได้แล้วครับ
เริ่มต้นเรียนรู้สร้างแอพ iOS และ Android ด้วย Google Flutter ไปกับโค้ชพล
✅ เหมาะสำหรับผู้เริ่มต้น
✅ เขียนครั้งเดียว ใช้ได้ทั้งระบบ iOS และ Android ประหยัดเวลา
✅ เรียนได้ทุกเวลา ไม่มีวันหมดอายุ
✅ ได้รู้ตั้งแต่วิธีติดตั้งโปรแกรม จนเอาขึ้นApp Store และ Play Store
✅ ได้ทำแอพของจริง เริ่มต้นจาก 0 ทุกโปรเจค มีระบบถามตอบ กรณีติดปัญหา
อ้างอิง – StackOverflow 1, 2