ROBOVM + robopods + admob ios переплет
Я пытался связать свой проект, используя это, но я не смог достичь, поэтому я получаю ошибки, какnoClassDefFoundFor NSObject
я также пытался добавить более старую версию, т.е. это, но здесь я не могу связать модуль admob с моей ошибкой модуля ios, которую я получаю в этом случае: нет конфигурации для 'default'
Я использую последнюю версию LibGDX.
фрагмент журнала:
ava.lang.NoClassDefFoundError: org/robovm/apple/foundation/NSObject$Handle
at org.robovm.pods.google.mobileads.GADRequest.<init>(GADRequest.java)
at com.blurpixel.arcpop.ViewController.createAndLoadBanner(ViewController.java)
at com.blurpixel.arcpop.ViewController.intializeAds(ViewController.java)
at com.blurpixel.arcpop.ViewController.showAds(ViewController.java)
at com.blurpixel.arcpop.Menu.show(Menu.java)
at com.badlogic.gdx.Game.setScreen(Game.java)
at com.blurpixel.arcpop.GameClass.create(GameClass.java)
at com.badlogic.gdx.backends.iosrobovm.IOSGraphics.draw(IOSGraphics.java)
at com.badlogic.gdx.backends.iosrobovm.IOSGraphics$1.draw(IOSGraphics.java)
at com.badlogic.gdx.backends.iosrobovm.IOSGraphics$1.$cb$drawRect$(IOSGraphics.java)
at org.robovm.apple.uikit.UIApplication.main(Native Method)
at org.robovm.apple.uikit.UIApplication.main(UIApplication.java)
at com.blurpixel.arcpop.IOSLauncher.main(IOSLauncher.java)
и что я делаю в своем коде:
adView = new GADBannerView(GADAdSize.SmartBannerPortrait());
adView.setAdUnitID("xxxxxxxxxxxxxxx");
adView.setRootViewController(UIApplication.getSharedApplication().getKeyWindow().getRootViewController());
UIApplication.getSharedApplication().getKeyWindow().getRootViewController().getView().addSubview(adView);
GADRequest request = new GADRequest();//this line is creating this error if i am commenting this line + the adview.loadAd line i am getting my game running without ads.
request.setTestDevices(Arrays.asList(GADRequest.getSimulatorID()));
adView.setDelegate(new GADBannerViewDelegateAdapter() {
@Override
public void didReceiveAd(GADBannerView view) {
super.didReceiveAd(view);
}
@Override
public void didFailToReceiveAd(GADBannerView view, GADRequestError error) {
super.didFailToReceiveAd(view, error);
System.out.println("Failed to recieve ");
}
});
adView.loadRequest(request);
Gradle файлы:
IOS Gradle:
sourceSets.main.java.srcDirs = ["src/"]
sourceCompatibility = '1.7'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
ext {
mainClassName = "com.blurpixel.arcpop.IOSLauncher"
}
launchIPhoneSimulator.dependsOn build
launchIPadSimulator.dependsOn build
launchIOSDevice.dependsOn build
createIPA.dependsOn build
eclipse.project {
name = appName + "-ios"
natures 'org.robovm.eclipse.RoboVMNature'
}
dependencies {
compile "org.robovm:robopods-google-mobile-ads-ios:1.13.1-SNAPSHOT"
compile "org.robovm:robopods-google-apis-ios:1.13.1-SNAPSHOT"
}
build.gradle:
buildscript {
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter()
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.2.0-SNAPSHOT'
}
}
allprojects {
apply plugin: "eclipse"
apply plugin: "idea"
version = '1.2'
ext {
appName = "ArcPOP"
gdxVersion = '1.9.2'
roboVMVersion = '1.14.0'
robopodsVersion = '1.13.1'
box2DLightsVersion = '1.4'
ashleyVersion = '1.7.0'
aiVersion = '1.8.0'
admobVersion = '9.0.1'
}
repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
}
}
project(":desktop") {
apply plugin: "java"
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
}
}
project(":android") {
apply plugin: "android"
configurations { natives }
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"
compile 'com.google.android.gms:play-services-ads:9.0.1'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
}
}
project(":ios") {
apply plugin: "java"
apply plugin: "robovm"
dependencies {
compile project(":core")
compile "org.robovm:robovm-rt:$roboVMVersion"
compile "org.robovm:robovm-cocoatouch:$roboVMVersion"
compile "org.robovm:robopods-google-mobile-ads-ios:$robopodsVersion-SNAPSHOT"
compile "org.robovm:robopods-google-apis-ios:$robopodsVersion-SNAPSHOT"
compile "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"
}
}
project(":html") {
apply plugin: "gwt"
apply plugin: "war"
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
compile "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources"
}
}
project(":core") {
apply plugin: "java"
dependencies {
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
}
}
tasks.eclipse.doLast {
delete ".project"
}
dependencies {
}
Пожалуйста, помогите и спасибо заранее.
1 ответ
Проблема в ваших файлах Gradle. Прежде всего вы используете плагин mobidevelop с официальным robovm. Это может создать проблемы.
тогда вы добавляете зависимости в 2 местах. Это не должно делать ничего плохого, но это не нужно и может вызвать проблемы, если вы поменяете один из них.
Примените следующие изменения, пересоберите gradle (не забудьте --refresh-dependencies) и пересоберите ваш проект. Если по-прежнему не удается очистить кэш снова.
менять:
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.2.0-SNAPSHOT'
в
classpath 'org.robovm:robovm-gradle-plugin:1.14.0'
а также
robopodsVersion = '1.13.1'
в
robopodsVersion = '1.14.0'
Также может потребоваться изменить:
gdxVersion = '1.9.2'
в
gdxVersion = '1.9.0'
Вам также может понадобиться удалить "-SNAPSHOT" из версии robopod. не уверен на 100%, что они существуют (и если вы хотите, чтобы те)
Удалить:
dependencies {
compile "org.robovm:robopods-google-mobile-ads-ios:1.13.1-SNAPSHOT"
compile "org.robovm:robopods-google-apis-ios:1.13.1-SNAPSHOT"
}
из ios build.gradle (эти области уже определены в вашем основном build.gradle)