XCode 5.1 เพิ่งอัพเดตได้ไม่กี่วัน ก็อาจจะก่อปัญหาให้คนที่ใช้ PhoneGap เวอร์ชั่นรุ่น 3.4 และต่ำกว่าได้ มาดูกันดีกว่าว่าเรามีปัญหาอะไร และจะแก้ไขอย่างไร
ปัญหาที่คุณจะเจอ
1. CB-6150 – objc_msgSend ทำให้เกิด EXC_BAD_ACCESS (arm64)
2. CB-6223 – Build/linker errors
3. ios-sim ไม่ทำงาน
1. วิธีแก้ EXC_BAD_ACCESS
วิธีแก้คือคุณต้องเอาไฟล์เพิ่มเติมมาใส่ใน platforms/ios/CordovaLib/Classes ที่อยู่ในโปรเจคแอพ PhoneGap ของคุณ
- สำหรับ PhoneGap 3.4: ให้ download ไฟล์นี้ และ ไฟล์นี้ ไปใส่ใน folder ดังกล่าว
- สำหรับ PhoneGap รุ่นที่ต่ำกว่า 3.4: ให้ download 2 ไฟล์ด้านบน และ ไฟล์นี้ ไปใส่ใน folder ดังกล่าว
2. วิธีแก้ Build/Linker errors
วิธีนี้ต้องไปแก้ Build Setting ใน XCode Project ของเรา
- คลิกเลือกไอคอน Project
- เลือก Build Setting
- ใน “Architectures” ให้เลือก $ARCHS_STANDARD – Standard architectures (armv7, armv7s, arm64)
- ใน “Valid Architectures” เพิ่ม arm64 เข้าไปในรายการ
- คลิกเลือกไอคอน CordovaLib.xcodeproj
- เลือก Build Setting สำหรับ Project
- ให้ลบ delete *all* conditional architecture settings ทั้งหมด (ลบได้โดยการเอาเม้าส์ไปชี้แต่ละตัว จะมีเครื่องหมายลบแสดงขึ้นมา) อ้างอิงจาก Xcode 5.1 Release Notes ของ Apple
- ใน “Architectures” ให้เลือก $ARCHS_STANDARD – Standard architectures (armv7, armv7s, arm64)
- ใน “Valid Architectures” เพิ่ม arm64 เข้าไปในรายการ
- เลือก Build Setting สำหรับ Target แล้วทำแบบเดียวกับ Build Setting ของ Project
3. วิธีแก้ ios-sim ให้ทำงานเหมือนเดิม
แก้ไขโดยการอัพเดต ios-sim ให้เป็นเวอร์ชั่น 1.9.0 ขึ้นไปครับ
ให้เปิด Command line (Windows) หรือ Terminal (OS X) ขึ้นมาแล้วใช้คำสั่งต่อไปนี้
// ติดตั้ง ios-sim เป็นเวอร์ชั่นล่าสุดใหม่ npm install -g ios-sim // เช็คเวอร์ชั่น ios-sim ios-sim --version
ปัญหาทั้งหมดจะได้รับการแก้ไขใน PhoneGap รุ่นต่อไป
วิธีการข้างบนเป็นวิธีที่ดีที่สุดสำหรับคนที่กำลังสร้าง iOS Application ด้วย PhoneGap เวอร์ชั่น 3.0 – 3.4 นะครับ ถ้ายังไม่รีบร้อน ข้อผิดพลาดทั้งหมดที่เกิดกับแอพ iOS ที่ทำงานกับ XCode 5.1 จะได้รับการแก้ไขใน PhoneGap 3.5 ที่กำลังจะออกมาเร็วๆ นี้
สนใจเรื่อง Web Design, Adobe for Web, และ PhoneGap ฝาก Email รับบทความใหม่ๆ จากผมได้ที่นี่ครับ
ดูเนื้อหารวมเรื่อง PhoneGap ได้ที่ nextflow.in.th/phonegap
Thank you Shazron & friend for this useful solution
[sc:Promo-below-post ]