बिल्डिंग J2ObjC

ज़रूरी शर्तें

  • Apple Mac OS X सिस्टम
  • Xcode का नया वर्शन
  • JDK 21 इंस्टॉल किया गया हो
  • Apache Maven
  • (सुझाया गया है, लेकिन ज़रूरी नहीं है) Google प्रोटोकॉल बफ़र सोर्स

Mac पर सेट अप करना

  • Xcode कमांड लाइन टूल इंस्टॉल करने के लिए, यह कमांड चलाएं:
sudo xcode-select --install
  • अपने .bash_profile में जोड़ें:
export JAVA_HOME=`/usr/libexec/java_home -v 21`
  • अगर Maven इंस्टॉल नहीं है (टर्मिनल में mvn -version आज़माएं), तो Homebrew का इस्तेमाल करें:
brew install maven

J2ObjC प्रोजेक्ट का फ़ोर्क बनाना

J2ObjC प्रोजेक्ट को फ़ोर्क करने के लिए, उसका मुख्य पेज खोलें और फ़ोर्क करें बटन पर क्लिक करें:

फ़ोर्क

अपने GitHub खाते का नाम चुनें. इसके बाद, कुछ ही सेकंड में फ़ोर्क बन जाएगा.

इसके बाद, डेवलपमेंट के लिए अपने फ़ोर्क की कॉपी को अपने लोकल सिस्टम पर क्लोन करें. सबसे पहले, [क्लोन या डाउनलोड करें] बटन पर क्लिक करें. इसके बाद, क्लिपबोर्ड पर कॉपी करें बटन पर क्लिक करें:

क्लोन

इसके बाद, इसे किसी लोकल डायरेक्ट्री में क्लोन करें:

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

protobuf और abseil इंस्टॉल करना

J2ObjC बनाने से पहले, आपको protobuf C++ इंस्टॉल करना होगा.

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 से शुरुआत करें. अगर आपका सिस्टम इसे हैंडल कर सकता है, तो बिल्ड के समय को कम करने के लिए, इस संख्या को बढ़ाएं. अगर सिस्टम की गड़बड़ियों की वजह से मेक फ़ेल हो जाता है, तो इसे कम करें.

32-बिट iOS आर्किटेक्चर बनाना

32-बिट वाले iOS आर्किटेक्चर ("iphone" और "simulator") डिफ़ॉल्ट रूप से नहीं बनाए जाते. इनकी मदद से j2objc बनाया जा सकता है. इसके लिए, सबसे पहले इन्हें J2OBJC_ARCHS एनवायरमेंट वैरिएबल में तय करें:

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

आम तौर पर, काम करने वाले आर्किटेक्चर के सबसेट को तय करने का इस्तेमाल, लोकल बिल्ड को तेज़ करने के लिए किया जा सकता है. इसके लिए, सिर्फ़ उन आर्किटेक्चर को तय करें जिनकी आपके ऐप्लिकेशन को ज़रूरत है. सिर्फ़ 64-बिट iOS ("iphone64") और उससे जुड़े सिम्युलेटर ("simulator64") को बनाने के लिए, उदाहरण के लिए, make चलाने से पहले J2OBJC_ARCHS="iphone64 simulator64" को तय करें.

फ़ुल डिस्ट्रिब्यूशन बनाना

j2objc टीम, फ़ाइल के साइज़ की सीमाओं की वजह से, अब GitHub पर पहले से तैयार किए गए डिस्ट्रिब्यूशन पोस्ट नहीं करती है. हालांकि, "एक ही चरण में सब कुछ बनाएं" स्क्रिप्ट का इस्तेमाल अब भी किया जा सकता है:

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

इस स्क्रिप्ट को चलने में ज़्यादा समय लगता है, क्योंकि हर j2objc पैकेज के लिए हर आर्किटेक्चर बनाया जाता है. हालांकि, अगर बिल्ड करने में सामान्य तौर पर समस्याएं आ रही हैं, तो यह बहुत काम का है. ऐसा इसलिए, क्योंकि यह सिर्फ़ एनवायरमेंट वैरिएबल के कम से कम सेट के साथ बिल्ड होता है. अगर build_distribution स्क्रिप्ट काम करती है, लेकिन सामान्य बिल्ड के चरण पूरे नहीं होते हैं, तो देखें कि क्या कोई लोकल एनवायरमेंट वैरिएबल गलत तरीके से सेट किया गया है.