การสร้าง J2ObjC

ข้อกำหนด

  • ระบบ Apple Mac OS X
  • Xcode เวอร์ชันล่าสุด
  • ติดตั้ง JDK 21 แล้ว
  • Apache Maven
  • (แนะนำ แต่ไม่บังคับ) แหล่งที่มาของ Google Protocol Buffer

การตั้งค่า Mac

  • ติดตั้งเครื่องมือบรรทัดคำสั่ง Xcode โดยเรียกใช้คำสั่งต่อไปนี้
sudo xcode-select --install
  • วิธีเพิ่มลงใน.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 21`
  • หากไม่ได้ติดตั้ง Maven (ลองใช้ mvn -version ในเทอร์มินัล) ให้ใช้ Homebrew โดยทำดังนี้
brew install maven

สร้าง Fork ของโปรเจ็กต์ J2ObjC

หากต้องการ Fork โปรเจ็กต์ J2ObjC ให้ เปิดหน้าหลัก แล้วคลิกปุ่ม Fork

แตกเนื้อหา

เลือกชื่อบัญชี GitHub แล้วระบบจะสร้าง Fork ในไม่กี่วินาที

จากนั้นโคลนสำเนาของ Fork ไปยังระบบในเครื่องเพื่อทำการพัฒนา ก่อนอื่น ให้ คลิก[ปุ่มโคลนหรือดาวน์โหลด] แล้วคลิกปุ่มคัดลอกไปยังคลิปบอร์ด

โคลน

จากนั้นโคลนลงในไดเรกทอรีในเครื่อง

git clone (Command-V)  # Paste the copied URL

ติดตั้ง Protobuf และ Abseil

คุณต้องติดตั้ง protobuf C++ ก่อนจึงจะสร้าง J2ObjC ได้

หากต้องการติดตั้งแพ็กเกจไบนารี protobuf ให้ใช้ Homebrew

brew install protobuf

ตอนนี้การสร้าง Protobuf C++ ขึ้นอยู่กับไลบรารี Abseil ดังนั้นให้ติดตั้งไลบรารีดังกล่าวด้วย

brew install abseil

คุณต้องตั้งค่า PROTOBUF_ROOT_DIR เป็นรูทที่ติดตั้ง Protobuf โดยปกติแล้วจะเป็นค่าเริ่มต้นของ Homebrew /usr/local เพิ่มรายการต่อไปนี้ใน .bash_profile

export PROTOBUF_ROOT_DIR=/usr/local # or your custom Homebrew dir

หากต้องการยืนยัน ให้เรียกใช้ $PROTOBUF_ROOT_DIR/bin/protoc --version

การสร้าง J2ObjC

หากต้องการสร้างจากบรรทัดคำสั่งในหน้าต่างเทอร์มินัล ให้เรียกใช้คำสั่งต่อไปนี้

# Build just the translator and libraries
make dist

# Build the protocol buffer compiler and runtime for J2ObjC
make protobuf_dist

# Build everything that is included in the project's
distribution bundles
make all_dist

การทดสอบ J2ObjC

หากต้องการทดสอบจากบรรทัดคำสั่งในหน้าต่างเทอร์มินัล ให้เรียกใช้คำสั่งต่อไปนี้

# Run translator and library unit tests
make test

# Run all unit tests, including for protocol buffers
make test_all

การล้างข้อมูลบิลด์

# Remove all files generated by the build
make clean

การสร้างแบบคู่ขนาน

การสร้าง J2ObjC รองรับการสร้างแบบขนาน ซึ่งระบุได้โดยใช้แฟล็ก -j<n> โดยที่ n คือจำนวนงานที่เกิดขึ้นพร้อมกันสูงสุด ค่าสูงสุด ขึ้นอยู่กับความเร็วของระบบ เราขอแนะนำให้เริ่มต้นด้วย -j4 เพิ่มจำนวนเพื่อลดเวลาในการบิลด์หากระบบรองรับได้ และลดจำนวนหากการบิลด์ล้มเหลวเนื่องจากข้อผิดพลาดของระบบ

การสร้างสถาปัตยกรรม iOS แบบ 32 บิต

ระบบจะไม่สร้างสถาปัตยกรรม iOS แบบ 32 บิต ("iphone" และ "simulator") โดยค่าเริ่มต้น คุณสามารถสร้าง j2objc ด้วยสิ่งเหล่านี้ได้โดยระบุสิ่งเหล่านี้ก่อน ในตัวแปรสภาพแวดล้อม J2OBJC_ARCHS

$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist

โดยทั่วไป การระบุสถาปัตยกรรมย่อยที่รองรับจะช่วยเพิ่มความเร็ว ในการสร้างในเครื่องได้ด้วยการระบุเฉพาะสถาปัตยกรรมที่แอปต้องการ หากต้องการสร้างเฉพาะ iOS 64 บิต ("iphone64") และโปรแกรมจำลองที่เชื่อมโยง ("simulator64") ให้กำหนด J2OBJC_ARCHS="iphone64 simulator64" ก่อนเรียกใช้ make

การสร้างการเผยแพร่แบบเต็มรูปแบบ

แม้ว่าทีม j2objc จะไม่ได้โพสต์การเผยแพร่ที่สร้างไว้ล่วงหน้าไปยัง GitHub อีกต่อไป เนื่องจากข้อจำกัดด้านขนาดไฟล์ แต่คุณยังคงใช้สคริปต์ "สร้างทุกอย่างในขั้นตอนเดียว" ได้

$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR

สคริปต์นี้ใช้เวลานานในการเรียกใช้เนื่องจากมีการสร้างสถาปัตยกรรมทุกรายการสำหรับแพ็กเกจ j2objc ทุกแพ็กเกจ อย่างไรก็ตาม การดำเนินการนี้มีประโยชน์มากหากเกิดข้อผิดพลาดในการสร้างทั่วไป เนื่องจากจะสร้างโดยใช้ตัวแปรสภาพแวดล้อมชุดขั้นต่ำเท่านั้น หากสคริปต์ build_distribution ทำงานสำเร็จ แต่ขั้นตอนการบิลด์ปกติไม่สำเร็จ ให้ตรวจสอบว่ามีการตั้งค่าตัวแปรสภาพแวดล้อมในเครื่องอย่างไม่ถูกต้องหรือไม่