Я хочу включить рекламу Google в свою игру libgdx. В android это работает просто. Однако в iOS есть некоторые сложности:
Я обновил файл Info.plist.xml
своим рекламным идентификатором. Затем я добавил следующие записи в файл robovm. xml:
в элемент <frameworks>
:
<!--AdMob-->
<framework>GoogleAppMeasurement</framework>
<framework>GoogleMobileAds</framework>
<framework>GoogleUtilities</framework>
<framework>nanopb</framework>
перед элементом <frameworks>
:
<frameworkPaths>
<path>libs</path>
</frameworkPaths>
В основном файле gradle.build
я добавил запись allProjects.ext.robopodsVersion = "2.2.3"
и добавил в раздел проекта iOS implementation "com.mobidevelop.robovm:robopods-google-mobile-ads-ios:$robopodsVersion"
, чтобы этот раздел выглядел так:
project(":ios") {
apply plugin: "java-library"
apply plugin: "robovm"
dependencies {
implementation project(":core")
implementation "com.mobidevelop.robovm:robopods-google-mobile-ads-ios:$robopodsVersion"
api "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
api "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
api "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
api "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"
}
}
Затем я загрузил googlemobileadssdkios.zip
и поместите его содержимое в папку libs
проекта iOS. Содержимое ios / libs выглядит следующим образом:
|- nanopb.xcframework
|- Info.plist
|- ios-armv7_arm64
|- ...
|- ios-i386_x86_64-simulator
|- ...
|- ios-x86_64-maccatalyst
|- ...
|- PromisesObjC.xcframework
|- Info.plist
|- ios-armv7_arm64
|- ...
|- ios-i386_x86_64-simulator
|- ...
|- ios-x86_64-maccatalyst
|- ...
|- Licenses
|- ...
|- GoogleUtilities.xcframework
|- Info.plist
|- ios-armv7_arm64
|- ...
|- ios-i386_x86_64-simulator
|- ...
|- ios-x86_64-maccatalyst
|- ...
|- GoogleMobileAds.framework
|- GoogleMobileAds
|- ...
|- Headers
|- ...
|- Modules
|- ...
|- GoogleAppMeasurement.framework
|- GoogleAppMeasurement
|- ...
|- Modules
|- ...
Итак, вкратце: под каждым каталогом .xcframework, помимо этого файла Info.plist
, находятся каталоги os-armv7_arm64
, ios-i386_x86_64-simulator
и ios-x86_64-maccatalyst
.
Когда я пытаюсь запустить приложение на симуляторе из Android Studio (используя плагин robovm android studio idea-2.3.10-SNAPSHOT.zip
), я получаю следующую ошибку:
[ERROR] 09:12:34.831 ld: framework not found GoogleUtilities
[ERROR] 09:12:34.832 clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app
У меня было подозрение, что это как-то связано с xcframework
, которые используются GoogeUtilities, и было подтверждено открытой проблемой https://github.com/MobiVM/robovm/issues/468, которая в основном говорит о том, что в настоящее время нет поддержки xcframworks, но связывается для выпуска https://github.com/MobiVM/robovm/pull/483, который короткими словами описывает, что теперь variant
можно указать в элементе элемента <frameworkPaths>
.
Теперь для меня вопрос: как продолжить работу с библиотеками и как определить варианты пути, чтобы он мог работать как на устройстве iOS, так и в симуляторе?