建築物 J2ObjC

需求條件

  • Apple Mac OS X 系統
  • 最新版 Xcode
  • 已安裝 JDK JDK 11
  • Apache Maven
  • (建議但非必要) Google 通訊協定緩衝區來源

Mac 設定

  • 執行下列指令,安裝 Xcode 指令列工具:
sudo xcode-select --install
  • 新增到您的 .bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 11`

建立 J2ObjC 專案的分支

如要建立 J2ObjC 專案分支,請開啟其主頁面,然後按一下 Fork 按鈕:

分支

選取您的 GitHub 帳戶名稱,系統將在幾秒內建立分支。

接下來,請將分支副本複製到本機系統進行開發。首先,點選 [Clone or 下載] 按鈕,然後按一下「Copy to Clipboard」按鈕:

複製

然後複製到本機目錄:

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

安裝 protobuf

您必須先安裝 protobuf C++,才能建構 J2ObjC。

如要安裝 protobuf 二進位檔套件,請使用 Homebrew:

brew install protobuf

您必須將 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 full distribution (including frameworks)
make frameworks

# 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 通訊協定緩衝區和執行階段需要安裝通訊協定緩衝區 (至少 3.21.3):

  • 通訊協定緩衝區 3.21.7 版本下載原始碼。
  • 按照 README 提供的 C++ 安裝操作說明進行。請留意 --prefix 選項來指定安裝位置,
  • 定義 PROTOBUF_ROOT_DIR 環境變數以指向通訊協定緩衝區的安裝位置。

發布 Java 8 語言功能。

請參閱公告。 除了上一節中的步驟以外,您還必須使用 JDK 11 建構 JRE 模組:

JAVA_HOME=`/usr/libexec/java_home -v 11` \
make -C jre_emul/ -f java.mk emul_module_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」n是並行任務的數量上限。最大值取決於系統的速度/效能,建議您從 -j4 開始。如果系統能夠處理,請增加數字來縮短建構時間;若系統發生錯誤,則減少此數字。

建構處理器架構

自 j2objc 2.3 版起,32 位元 iOS 架構 (「iphone」和「simulator」) 並未包含在公開發布中。您可以先指定 J2OBJC_ARCHS 環境變數,以便使用這些項目建構 j2objc:

$ export J2OBJC_ARCHS="iphone simulator macosx iphone64 watchv7k watch64 watchsimulator simulator64"
$ make -j8 all_dist

這也可以僅指定應用程式所需的架構,藉此加快建構速度。如果只要建構 64 位元 iOS (「iphone64」) 和相關模擬器 (「simulator64」),例如,請在執行 make 前先定義 J2OBJC_ARCHS="iphone64 simulator64"