বিল্ডিং J2ObjC

প্রয়োজনীয়তা

  • অ্যাপল ম্যাক ওএস এক্স সিস্টেম
  • এক্সকোডের সর্বশেষ সংস্করণ
  • JDK JDK 11 ইনস্টল করা হয়েছে
  • অ্যাপাচি মাভেন
  • (প্রস্তাবিত কিন্তু প্রয়োজন নেই) গুগল প্রোটোকল বাফার উৎস

ম্যাক সেটআপ

  • চালানোর মাধ্যমে Xcode কমান্ড লাইন সরঞ্জাম ইনস্টল করুন:
sudo xcode-select --install
  • আপনার .bash_profile এ যোগ করুন:
export JAVA_HOME=`/usr/libexec/java_home -v 11`
  • যদি মাভেন ইনস্টল না করা থাকে (টার্মিনালে mvn -version চেষ্টা করুন), Homebrew ব্যবহার করুন:
brew install maven

J2ObjC প্রকল্পের একটি ফর্ক তৈরি করুন

J2ObjC প্রজেক্টকে ফর্ক করতে, এর মূল পৃষ্ঠাটি খুলুন এবং ফর্ক বোতামে ক্লিক করুন:

কাঁটা

আপনার GitHub অ্যাকাউন্টের নাম নির্বাচন করুন, এবং কাঁটা কয়েক সেকেন্ডের মধ্যে তৈরি হবে।

এর পরে, বিকাশের জন্য আপনার স্থানীয় সিস্টেমে আপনার ফর্কের একটি অনুলিপি ক্লোন করুন। প্রথমে, [ক্লোন বা ডাউনলোড বোতাম] ক্লিক করুন, তারপর ক্লিপবোর্ডে অনুলিপি বোতামে ক্লিক করুন:

ক্লোন

তারপর একটি স্থানীয় ডিরেক্টরিতে ক্লোন করুন:

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

protobuf এবং abseil ইনস্টল করুন

আপনি J2ObjC তৈরি করার আগে আপনাকে প্রোটোবাফ C++ ইনস্টল করতে হবে।

প্রোটোবাফ বাইনারি প্যাকেজ ইনস্টল করতে, হোমব্রু ব্যবহার করুন:

brew install protobuf

Protobuf C++ বিল্ড এখন Abseil লাইব্রেরির উপর নির্ভর করে, তাই এটিও ইনস্টল করুন:

brew install abseil

আপনাকে PROTOBUF_ROOT_DIR সেই রুটে সেট করতে হবে যেখানে প্রোটোবাফ ইনস্টল করা আছে। সাধারণত, এটি 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-বিট আইওএস আর্কিটেকচার তৈরি করা

32-বিট iOS আর্কিটেকচার ("iphone" এবং "সিমুলেটর") ডিফল্টরূপে নির্মিত হয় না। আপনি প্রথমে J2OBJC_ARCHS এনভায়রনমেন্ট ভেরিয়েবলে উল্লেখ করে এগুলো দিয়ে j2objc তৈরি করতে পারেন:

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

সমর্থিত আর্কিটেকচারের একটি উপসেট নির্দিষ্ট করা সাধারণত স্থানীয় বিল্ডগুলির গতি বাড়ানোর জন্য ব্যবহার করা যেতে পারে, শুধুমাত্র আপনার অ্যাপের প্রয়োজনীয় আর্কিটেকচারগুলি নির্দিষ্ট করে৷ শুধুমাত্র 64-বিট iOS ("iphone64") এবং এর সাথে সম্পর্কিত সিমুলেটর ("simulator64") তৈরি করতে, উদাহরণস্বরূপ, মেক চালানোর আগে J2OBJC_ARCHS="iphone64 simulator64" সংজ্ঞায়িত করুন।

সম্পূর্ণ বিতরণ বিল্ডিং

যদিও j2objc দল তার ফাইলের আকারের সীমাবদ্ধতার কারণে GitHub-এ আর প্রি-বিল্ট ডিস্ট্রিবিউশন পোস্ট করে না, "এক ধাপে সবকিছু তৈরি করুন" স্ক্রিপ্টটি এখনও ব্যবহার করা যেতে পারে:

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

এই স্ক্রিপ্টটি চলতে অনেক সময় নেয় কারণ প্রতিটি j2objc প্যাকেজের জন্য প্রতিটি আর্কিটেকচার তৈরি করা হয়। যাইহোক, সাধারণ বিল্ড ব্যর্থতা থাকলে এটি খুবই কার্যকর, কারণ এটি শুধুমাত্র ন্যূনতম পরিবেশ ভেরিয়েবলের সেট দিয়ে তৈরি করে। বিল্ড_ডিস্ট্রিবিউশন স্ক্রিপ্ট সফল হলে কিন্তু স্বাভাবিক বিল্ড ধাপ না হলে, স্থানীয় পরিবেশের ভেরিয়েবল ভুলভাবে সেট করা হয়েছে কিনা তা পর্যালোচনা করুন।