要求
- Apple Mac OS X 系统
- 最新版本的 Xcode
- 安装了 JDK 11
- Apache Maven
- (推荐,但不是必需)Google Protocol Buffer 源代码
Mac 设置
- 运行以下命令来安装 Xcode 命令行工具:
sudo xcode-select --install
- 添加到您的
.bash_profile
:
export JAVA_HOME=`/usr/libexec/java_home -v 11`
- 如果未安装 Maven(请在终端中尝试
mvn -version
),请使用 Homebrew:
brew install maven
创建 J2ObjC 项目的分支
如需分叉 J2ObjC 项目,请打开其主页面,然后点击“Fork”按钮:
选择您的 GitHub 账号名称,系统会在几秒钟内创建分支。
接下来,将分支的副本克隆到本地系统进行开发。首先,点击 [克隆或下载] 按钮,然后点击“复制到剪贴板”按钮:
然后,克隆到本地目录:
git clone (Command-V) # Paste the copied URL
安装 protobuf 和 abseil
您需要先安装 protobuf C++,然后才能构建 J2ObjC。
如需安装 protobuf 二进制软件包,请使用 Homebrew:
brew install protobuf
Protobuf C++ build 现在依赖于 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
清理 build
# Remove all files generated by the build
make clean
并行构建
J2ObjC build 支持并行 build,并行 build 使用 -j<n>
标志指定,其中 n 是并发任务的数量上限。上限取决于系统的运行速度;我们建议从 -j4
开始。如果您的系统可以处理,请增加该值以缩短构建时间;如果 make 因系统错误而失败,请减小该值。
构建 32 位 iOS 架构
默认情况下,系统不会构建 32 位 iOS 架构(“iphone”和“simulator”)。您可以先在 J2OBJC_ARCHS 环境变量中指定这些架构,然后使用这些架构构建 j2objc:
$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist
通常,只指定应用所需的架构即可加快本地 build 的速度,即指定支持的架构的子集。例如,如需仅构建 64 位 iOS(“iphone64”)及其关联的模拟器(“simulator64”),请在运行 make 之前定义 J2OBJC_ARCHS="iphone64 simulator64"
。
构建完整分发
虽然 j2objc 团队不再将预构建的软件包发布到 GitHub(因为文件大小受限),但您仍然可以使用“一步构建所有内容”脚本:
$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR
此脚本需要很长时间才能运行完毕,因为它会构建每个 j2objc 软件包的每个架构。不过,如果出现常规构建失败,此方法非常有用,因为它只使用一组最少的环境变量进行构建。如果 build_distribution 脚本成功,但正常的构建步骤失败,请检查是否有任何本地环境变量设置有误。