ฉันจะเพิ่ม 2 เซ็นต์ของฉันที่นี่ (ในทางที่น่ากลัวน้อยกว่า :-) ฉันพบไลบรารี่จำนวนมากจากผู้จัดจำหน่ายที่ (ด้วยเหตุผลบางอย่าง) ไม่ทำงานตามปกติโดยเพิ่มลงในFrameworks
ไดเรกทอรีตามเอกสารของ Apple วิธีเดียวที่เราสามารถทำให้มันทำงานได้คือการดึง.framekwork
สิทธิ์ลงในไดเรกทอรีโครงการและเชื่อมโยงEmbedded Frameworks
และLink Binary with Libraries
ด้วยตนเองในการตั้งค่าการสร้าง สิ่งนี้ดูเหมือนว่าจะทำงานได้โดยไม่มีปัญหาใด ๆ เช่นเดียวกับห้องสมุดที่มีไขมันพวกเขามาพร้อมกับ Simulator Simulator ภายนอกi386
และx86_64
พร้อมกับarm
สถาปัตยกรรม
วิธีที่รวดเร็วในการตรวจสอบสถาปัตยกรรมในไลบรารีไขมันคือ
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
ซึ่งควรคายเอาท์พุทแบบนี้
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
สิ่งนี้เป็นการยืนยันว่าคุณจะต้อง "ตัดแต่งไขมัน" (คือi386
& x86_64
) จากเฟรมเวิร์กของคุณก่อนที่จะอัปโหลด iTunesConnect Archival ซึ่งไม่อนุญาตให้มีสถาปัตยกรรมเหล่านี้ (เนื่องจากไม่รองรับ iOS)
ตอนนี้คำตอบทั้งหมด (หรืออย่างน้อยคำตอบบางส่วน) ที่นี่ให้สคริปต์เรียกใช้ที่ยอดเยี่ยมเหล่านี้ที่ฉันแน่ใจว่าทำงานได้ดีจริงๆ แต่เฉพาะในกรณีที่ Framework ของคุณอยู่ในFrameworks
ไดเรกทอรี ตอนนี้ถ้าคุณไม่ใช่เชลล์สคริปต์ junkie สคริปต์เหล่านั้นที่ไม่มีการแก้ไขจะไม่ทำงานกับสถานการณ์ที่ฉันอธิบายข้างต้น อย่างไรก็ตามมีวิธีที่ง่ายมากในการกำจัดi386
& x86_64
สถาปัตยกรรมออกจากกรอบ
เปิดเทอร์มินัลในไดเรกทอรีโครงการของคุณ
เปลี่ยนไดเรกทอรีโดยตรงเป็น.framekwork
เช่น
cd YourProjectDir/YourProject/YourLibrary.framework
เรียกใช้ชุดคำสั่งที่แสดงด้านล่าง -
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
บางสิ่งที่ควรทราบที่นี่ - lipo -remove
ต้องทำหนึ่งครั้งเพื่อให้แต่ละสถาปัตยกรรมลบออก lipo
ไม่ได้ปรับเปลี่ยนแฟ้มใส่มันเพียง แต่ผลิตไฟล์เพื่อให้คุณมีการเรียกใช้lipo -remove
ครั้งเดียวสำหรับการและx86_64
i386
คำสั่งด้านบนเป็นเพียงการทำเช่นนั้นโดยการเปลี่ยนชื่อไฟล์ปฏิบัติการเป็นครั้งแรกจากนั้นในที่สุดก็ลบอาร์คที่ต้องการแล้วทำความสะอาดไฟล์ที่เหลือ และนั่นคือตอนนี้คุณควรเห็นเครื่องหมายถูกสีเขียวใน Application Loader Archival ที่อัปโหลดไปยัง iTunesConnect
สิ่งที่ควรทราบ : ขั้นตอนข้างต้นควรทำในขณะที่การสร้างการผลิตเนื่องจาก.framework
จะถูกถอดออกจากสถาปัตยกรรมจำลองการสร้างบนเครื่องจำลองจะหยุดทำงาน (ซึ่งคาดว่า) ในสภาพแวดล้อมการพัฒนาไม่จำเป็นต้องตัดสถาปัตยกรรมออกจาก.framework
ไฟล์เนื่องจากคุณต้องการทดสอบทั้ง Simulator และอุปกรณ์ทางกายภาพ หากห้องสมุดไขมันของคุณอยู่ในFrameworks
โฟลเดอร์ในโครงการโปรดดูคำตอบที่ยอมรับ