Requisitos
- Sistema Apple Mac OS X
- La versión más reciente de Xcode
- JDK 17 instalado
- Apache Maven
- (Recomendado, pero no obligatorio) Fuente de Protocol Buffer de Google
Configuración de Mac
- Para instalar las herramientas de línea de comandos de Xcode, ejecuta el siguiente comando:
sudo xcode-select --install
- Agrega a
.bash_profile
:
export JAVA_HOME=`/usr/libexec/java_home -v 17`
- Si Maven no está instalado (prueba
mvn -version
en una terminal), usa Homebrew:
brew install maven
Crea una bifurcación del proyecto J2ObjC
Para bifurcar el proyecto de J2ObjC, abre su página principal y haz clic en el botón Fork:
Selecciona el nombre de tu cuenta de GitHub y la bifurcación se creará en unos segundos.
A continuación, clona una copia de tu bifurcación en tu sistema local para el desarrollo. Primero, haz clic en el [botón Clonar o descargar] y, luego, en el botón Copiar al portapapeles:
Luego, clona en un directorio local:
git clone (Command-V) # Paste the copied URL
Instala protobuf y abseil
Debes tener instalado protobuf C++ antes de poder compilar J2ObjC.
Para instalar el paquete binario de protobuf, usa Homebrew:
brew install protobuf
La compilación de C++ de Protobuf ahora depende de la biblioteca de Abseil, por lo que también debes instalarla:
brew install abseil
Debes establecer PROTOBUF_ROOT_DIR
en la raíz donde está instalado protobuf.
Por lo general, es el valor predeterminado de Homebrew /usr/local
. Agrega lo siguiente a tu .bash_profile
:
export PROTOBUF_ROOT_DIR=/usr/local # or your custom Homebrew dir
Para verificarlo, ejecuta $PROTOBUF_ROOT_DIR/bin/protoc --version
.
Cómo compilar J2ObjC
Para compilar desde una línea de comandos en una ventana de Terminal, ejecuta lo siguiente:
# 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
Prueba de J2ObjC
Para realizar pruebas desde una línea de comandos en una ventana de Terminal, ejecuta lo siguiente:
# Run translator and library unit tests
make test
# Run all unit tests, including for protocol buffers
make test_all
Cómo limpiar una compilación
# Remove all files generated by the build
make clean
Compilaciones en paralelo
La compilación de J2ObjC admite compilaciones paralelas, que se especifican con la marca -j<n>
, en la que n es la cantidad máxima de tareas simultáneas. El máximo depende de la velocidad de tu sistema. Te sugerimos que comiences con -j4
.
Aumenta la cantidad para reducir los tiempos de compilación si tu sistema puede controlarlo y disminúyela si make falla con errores del sistema.
Compilación de arquitecturas de iOS de 32 bits
Las arquitecturas de iOS de 32 bits ("iphone" y "simulator") no se compilan de forma predeterminada. Para compilar j2objc con estos, primero debes especificarlos en la variable de entorno J2OBJC_ARCHS:
$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist
Especificar un subconjunto de arquitecturas compatibles generalmente se puede usar para acelerar las compilaciones locales, ya que solo se especifican las arquitecturas que necesita tu app.
Por ejemplo, para compilar solo el iOS de 64 bits (“iphone64”) y su simulador asociado (“simulator64”), define J2OBJC_ARCHS="iphone64 simulator64"
antes de ejecutar make.
Cómo compilar la distribución completa
Aunque el equipo de j2objc ya no publica distribuciones prediseñadas en GitHub debido a sus limitaciones de tamaño de archivo, aún se puede usar la secuencia de comandos "compilar todo en un solo paso":
$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR
Esta secuencia de comandos tarda mucho en ejecutarse porque se compila cada arquitectura para cada paquete de j2objc. Sin embargo, es muy útil si hay errores generales de compilación, ya que se compila solo con el conjunto mínimo de variables de entorno. Si la secuencia de comandos build_distribution se ejecuta correctamente, pero los pasos de compilación normales no, revisa si alguna variable de entorno local está configurada de forma incorrecta.