Cómo compilar J2ObjC

Requisitos

  • Sistema Apple Mac OS X
  • La versión más reciente de Xcode
  • Se instaló el JDK JDK 11.
  • Apache Maven
  • Fuente del búfer de protocolo de Google (opción recomendada, pero no obligatoria)

Configuración de Mac

  • Ejecuta el siguiente comando para instalar las herramientas de línea de comandos de Xcode:
sudo xcode-select --install
  • Agrega a .bash_profile:
export JAVA_HOME=`/usr/libexec/java_home -v 11`

Crea una bifurcación del proyecto J2ObjC

Para bifurcar el proyecto J2ObjC, abre su página principal y haz clic en el botón Bifurcación:

Fork

Selecciona el nombre de tu cuenta de GitHub; la bifurcación se creará en unos segundos.

A continuación, clona una copia de la 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 en el portapapeles:

Clonar

Luego, clona en un directorio local:

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

Instala protobuf

Debes tener instalado protobuf C++ antes de compilar J2ObjC.

Para instalar el paquete binario protobuf, usa Homebrew:

brew install protobuf

Debes configurar PROTOBUF_ROOT_DIR en la raíz en la que está instalado protobuf. Normalmente, ese 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.

Edificio J2ObjC

Para compilar desde una línea de comandos en una ventana de terminal, ejecuta el siguiente comando:

# 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

Configuración opcional para los búferes de protocolo

El compilador y el entorno de ejecución de los búferes de protocolo J2ObjC requieren que se instalen los búferes de protocolo (al menos la versión 3.21.3):

  • Descarga el código fuente de la versión Protocol Buffers 3.21.7.
  • Sigue las instrucciones de instalación de C++ del archivo README. Presta atención a la opción --prefix para especificar la ubicación de instalación.
  • Define la variable de entorno PROTOBUF_ROOT_DIR para que apunte a la ubicación de instalación de los búferes de protocolo.

Publicar funciones del lenguaje Java 8

Consulta el anuncio. Además de los pasos de la sección anterior, se debe compilar un módulo JRE con el JDK 11:

JAVA_HOME=`/usr/libexec/java_home -v 11` \
make -C jre_emul/ -f java.mk emul_module_dist

Prueba J2ObjC

Para realizar pruebas desde una línea de comandos en una ventana de terminal, ejecuta el siguiente comando:

# Run translator and library unit tests
make test

# Run all unit tests, including for protocol buffers
make test_all

Cómo limpiar o restablecer una compilación

# Remove all files generated by the build
make clean

Compilaciones en paralelo

La compilación 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 qué tan rápido o potente sea tu sistema. Te sugerimos que comiences con -j4. Aumenta el número para acortar los tiempos de compilación si tu sistema puede controlarlo y disminúyelo si se producen errores de sistema.

Cómo compilar arquitecturas de procesadores

A partir de la versión 2.3 de j2objc, las arquitecturas de iOS de 32 bits ("iphone" y "simulador") no se incluyen en la distribución pública. Puedes compilar j2objc con estos valores especificando primero la variable de entorno J2OBJC_ARCHS:

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

Esto también se puede usar para acelerar la compilación especificando solo las arquitecturas que necesita tu app. Para compilar solo la versión de iOS de 64 bits (“iphone64”) y su simulador asociado (“simulator64”), por ejemplo, define J2OBJC_ARCHS="iphone64 simulator64" antes de ejecutar make.