Acerca del uso de Unity para exportar el proyecto XCode con el complemento Admob en el lado de Windows y luego empaquetarlo en el lado de Mac

Recientemente, la empresa necesita colocar una aplicación de Android anterior en Apple Store, por lo que debe estudiar el proceso de subcontratación de Mac.
Sin embargo, debido a algunas razones, no es posible exportar directamente el paquete a través de Unity en la Mac, por lo que la alternativa que se me ocurre es exportar primero el proyecto XCode desde Windows, luego sincronizarlo con la Mac a través de SVN, y luego exporte el paquete.

Utilice el software de la siguiente manera:

  • TortoiseSVN (SVN en Windows)
  • Piedra angular (SVN en Mac)

Al sincronizar a través de SVN, debe tener cuidado si hay archivos que no se han cargado. Al menos, la configuración predeterminada de TortoiseSVN en mi computadora ignorará .alos archivos con el nombre del sufijo, lo que resultará en el error de que se pierde la DLL del paquete total. cuando el proyecto XCode está empaquetado al principio. Después de modificar la configuración, será normal.


Debido a la diferencia entre la versión del paquete en el lado de Mac y en el lado de Android, es necesario reescribir la lógica anterior relacionada con la publicidad. Por lo tanto, todos los complementos publicitarios se eliminaron cuando se empaquetó por primera vez, y todo el proceso fue relativamente fluido.
El proceso de empaquetado básico puede consultar el contenido de este artículo .

Sin embargo, el problema ocurrió después de volver a agregar el complemento publicitario.
De acuerdo con la documentación oficial de Admob, debe .xcworkspaceabrir el proyecto XCode con una extensión de archivo llamada para compilar correctamente. Sin embargo, no existe tal archivo en el paquete exportado por Windows, solo un .xcodeprojarchivo con un nombre de sufijo.Si no usa un complemento como Admob, puede .xcodeprojusar el archivo directamente para exportar el paquete normalmente, pero como use otros complementos, solo puede encontrar una manera de obtener este .xcworkspacearchivo.

1. El principio de todo, instalar CocoaPods

Para generar este .xcworkspacearchivo, se debe instalar CocoaPods (un administrador de dependencias a nivel de aplicación).
Si ya ha instalado esta cosa en su Mac antes, felicidades, el obstáculo más grande ha sido barrido.
Es mejor conectarse a la red externa durante todo el proceso y asegurarse de que la red sea fluida. Porque a veces verá algunos registros de errores de instalación extraños, que en realidad pueden deberse a razones de red.Finalmente lo instalé correctamente con suficiente ancho de banda después de que todos los demás en la empresa estaban fuera del trabajo.
La razón por la que esto es el mayor obstáculo es que si desea instalar CocoaPods, primero debe instalar el entorno Ruby. Aunque Mac tiene un Ruby incorporado, al menos lo intenté varias veces y fallé, así que para instala la nueva versión de Ruby, primero debes instalarla, ve a instalar un RVM (administrador de versiones de Ruby).
Y es muy probable que necesite usar operaciones relacionadas con VIM para editar el archivo durante todo el proceso. Como novato, solo buscar estos materiales es un gran dolor de cabeza.
Después de instalar CocoaPods, puede continuar con el siguiente paso.

2. Modificar Podfile

El proyecto XCode exportado desde el lado de Windows debe contener un Podfile. Si no, cree uno usted mismo. El contenido es más o menos el siguiente:

source 'https://github.com/CocoaPods/Specs'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'

target 'Unity-iPhone' do
  pod 'Google-Mobile-Ads-SDK', '~>9.0'
end
use_frameworks!

Entre ellos pod 'Google-Mobile-Ads-SDK', '~>9.0'está la dependencia de admb sdk.
Después de confirmar el Podfile, debemos ingresar al directorio donde se encuentra el archivo (es decir, el directorio raíz del proyecto XCode del proyecto actual) a través de la terminal y luego ejecutar el siguiente comando:

pod install

En este momento se puede reportar un error cuando el programa termina de ejecutarse, lo que probablemente significa que está relacionado con la versión de la que depende este admob, la solución es eliminar '~>9.0'.
La dependencia modificada se convierte en pod 'Google-Mobile-Ads-SDK', simplemente vuelva a ejecutar en este momento , y después de que el programa termine de ejecutarse, pod installse generará un .xcworkspacearchivo con el nombre del sufijo en el directorio raíz del proyecto XCode actual.


Nuevo problema al empaquetar MapFileParse.sh: Permiso denegado

Para conocer la solución, consulte este registro oficial de comentarios .
El texto original es el siguiente:

NOTA DE RESOLUCIÓN (VERSIÓN FIJA 2021.2):
MapFileParser se eliminará de la versión 2021.1+
Para versiones anteriores:
De forma predeterminada, la configuración SMB en el dispositivo Mac no permite establecer un indicador ejecutable por razones de seguridad.
Una forma de evitar esto es hacer que Xcode lo configure por usted.
Abra el proyecto Xcode generado, vaya a UnityFramework target / Build Phases / Run Script
en la línea 1 y agregue:
chmod +x "$PROJECT_DIR/MapFileParser.sh"
línea 2 de lo que estaba en la línea 1:
"$PROJECT_DIR/MapFileParser.sh"
puede hacerlo:

  • a mano
  • con BuildPostProcessor a través de la API de PBXProject
  • o si desea realizar este cambio para todos los proyectos generados por iOS/tvOS, cambie Unity-iPhone.xcodeproj en la instalación de Unity Editor para los módulos de soporte de la plataforma iOS/tvOS Carpeta Trampoline

pd Para compilar directamente en la carpeta compartida de Mac, puede Mapear la unidad de red en Windows y usarla como destino para generar el proyecto Xcode.

Probablemente significa que esto está a punto de eliminarse en la nueva versión, por lo que debe configurarlo manualmente y agregar la siguiente configuración en Build Phases -> Run Script:

chmod +x "$PROJECT_DIR/MapFileParser.sh"

Entonces puedes pasarlo sin problemas.


Error de máquina virtual de empaquetado XCode: no se conoce un método de instancia para el selector 'presentDrawable: afterMinimumDuration

Al ver el sitio web oficial de Unity, los comentarios relevantes son los siguientes:

somos conscientes de los problemas al compilar/ejecutar en el simulador xcode beta No hay ETA por ahora para una solución completa
Nota: la versión de Unity del emisor es 2019.4 LTS

En otras palabras, este es un error sin corregir en la versión de Unity 2019.
Soluciones factibles proporcionadas por los internautas a continuación:
Primero encuentre la ubicación del error.

Cambiar línea de error

[UnityCurrentMTLCommandBuffer() presentDrawable: surface->drawable afterMinimumDuration: 1.0 / targetFPS]; // Error is here

a

[UnityCurrentMTLCommandBuffer() presentDrawable: surface->drawable];

Supongo que te gusta

Origin blog.csdn.net/EverNess010/article/details/123679211
Recomendado
Clasificación