Giter VIP home page Giter VIP logo

robovm-robopods's People

Contributors

alex-dorokhov avatar badlogic avatar blueriverinteractive avatar clydebarrow avatar cmcdougall avatar coderbaron avatar ericnondahl avatar fechy avatar florianf avatar guillerodriguez avatar intrigus avatar julienvillegas avatar kali-gandaki avatar keesvandieren avatar ntherning avatar obigu avatar piotr-j avatar ramiws avatar tom-ski avatar willcalderwood avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

robovm-robopods's Issues

Monitor network reachability. Problems in wifi local status

Hello!
I am making a connectivity monitor for an application I am implementing.
I'm doing some tests to see how it works and I've run into some problems.
The code is simple and I am only monitoring the status of the local wifi and the internet connection.

Code test: https://github.com/avazquezdev/samples-robovm/tree/master/Monitor

  1. When I disable wifi (settings), the listener does not receive any notification "unreachable"
  2. If I am connected to a Wifi Network and I switch to another Wifi Network, this change is not notified

Regards!

Firebase iOS Messaging update

Hi,
please update Firebase iOS Messaging. There were following changes:

Removed deprecated delegate property remoteMessageDelegate, use delegate instead.
Removed deprecated method messaging:didRefreshRegistrationToken: defined in FIRMessagingDelegate protocol, use messaging:didReceiveRegistrationToken: instead.
Removed deprecated method applicationReceivedRemoteMessage: defined in FIRMessagingDelegate protocol, use messaging:didReceiveMessage: instead.

Admob Bindings update

Hi,
I was trying to use Admob with using Ad content filtering (https://developers.google.com/admob/ios/targeting#Ad_content_filtering) and set the maxAdContentRating parameter regarding the age of the user (which I got from him by using Neutral Age Screen). There is used GADRequestConfiguration class for that. Unfortunately it cannot be resolved.

Do you plan to update the Admob bindings?

All the best,
Apelt

PS: thank you for your effort and MobiVM project - it really is outstanding!

Install firebase iOS messaging framework failed for gradle

As per the readme instructions, I've added: compile "com.mobidevelop.robovm:robopods-google-mobile-ads-ios:$robopodsVersion" to my build.gradle but it yields this error:
"Error:Failed to resolve: com.mobidevelop.robovm:robopods-firebase-ios-messaging:2.2.1"

Any ideas?

Incomaptible robopods librarries - AppODeal, YandexMetrica, GoogleMobileAds

Trying to launch iOS game with YandexMetrica, AppoDeal and GoogleMobileAds all together. It doesn't complie.

duplicate symbol _OBJC_IVAR_$_PodYandexMobileMetrica_FMStatement._query in: /ios/libs/YandexMobileMetrica.framework/YandexMobileMetrica(FMDatabase.o) /ios/libs/Appodeal.framework/Appodeal(FMDatabase.o)

I've cleared the cache, but doesn't work.

linker command failed with exit code 1 using Facebook, Google ads and possibly others.

I spent a day struggling with this trying to work out what's going on with this on my game - and failed. So I decided to start from scratch with a freshly created libgdx project to see if I could recreate the issue.

I created a new project using the setup program and ran it on an iOS device and all worked as expected. I then added the dependency.

    compile 'com.mobidevelop.robovm:robopods-facebook-ios:2.2.1'

and reran. This produced the following error. (I also tried with the google ads binding with the same issue.)

21:03:42: Executing external task 'launchIOSDevice'...
Configuration on demand is an incubating feature.
:core:compileJava UP-TO-DATE
:core:processResources UP-TO-DATE
:core:classes UP-TO-DATE
:core:jar UP-TO-DATE
warning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
:ios:compileJava
:ios:processResources UP-TO-DATE
:ios:classes
:ios:jar UP-TO-DATE
:ios:assemble UP-TO-DATE
:ios:compileTestJava UP-TO-DATE
:ios:processTestResources UP-TO-DATE
:ios:testClasses UP-TO-DATE
:ios:test UP-TO-DATE
:ios:check UP-TO-DATE
:ios:build UP-TO-DATE
:ios:launchIOSDevice
Classpath entry /Users/WillCalderwood/Downloads/test/ios/build/resources/main does not exist
ld: framework not found FBSDKCoreKit
clang: error: linker command failed with exit code 1 (use -v to see invocation)
:ios:launchIOSDevice FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':ios:launchIOSDevice'.
> Failed to launch IOS Device

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 14.646 secs
Command '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /Users/WillCalderwood/Downloads/test/ios/build/robovm.tmp/IOSLauncher -arch armv7 -Wl,-filelist,/Users/WillCalderwood/Downloads/test/ios/build/robovm.tmp/objects0 -L /Users/WillCalderwood/.m2/repository/com/mobidevelop/robovm/robovm-dist/2.3.0/unpacked/robovm-2.3.0/lib/vm/ios/thumbv7 -ObjC -exported_symbols_list /Users/WillCalderwood/Downloads/test/ios/build/robovm.tmp/exported_symbols -Wl,-no_implicit_dylibs -Wl,-dead_strip -fPIC -miphoneos-version-min=7.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk -lrobovm-bc -force_load /Users/WillCalderwood/.m2/repository/com/mobidevelop/robovm/robovm-dist/2.3.0/unpacked/robovm-2.3.0/lib/vm/ios/thumbv7/librobovm-rt.a -lrobovm-debug -lrobovm-core -lgc -lpthread -ldl -lm -lz -liconv -lsqlite3 -framework Foundation -framework FBSDKCoreKit -framework Bolts -framework AVFoundation -framework CoreGraphics -framework CoreMedia -framework CoreMotion -framework StoreKit -framework FBSDKLoginKit -framework FBSDKMessengerShareKit -framework FBNotifications -framework ImageIO -framework UIKit -framework FBSDKShareKit -framework OpenGLES -framework QuartzCore -framework OpenAL -framework AudioToolbox -force_load /Users/WillCalderwood/.robovm/cache/ios/thumbv7/release/Users/WillCalderwood/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.5/80fed8c3dbf915df8e93c0ed8943e2e5e569e513/gdx-platform-1.9.5-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a -force_load /Users/WillCalderwood/.robovm/cache/ios/thumbv7/release/Users/WillCalderwood/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.5/80fed8c3dbf915df8e93c0ed8943e2e5e569e513/gdx-platform-1.9.5-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libObjectAL.a -lz -framework MobileCoreServices -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks' failed (Exit value: 1)
21:03:57: External task execution finished 'launchIOSDevice'.

This was just a bog standard libgdx setup with no changes, running Xcode 8.2.1.

I'm amazed no one else is reporting this error, so I'm wondering if I'm doing something really stupid here? But I can't see what I might have messed up with a new project and just adding a single dependency.

Robopod Ironsource binding for Ironsource.loadBanner() is wrong

Hello all,

The generated bindings for Ironsource.loadBanner() are not correct. The function is defined as:

@Method(selector = "loadBannerWithViewController:size:")
    public static native void loadBanner(UIViewController viewController, ISBannerSize size); 

However , calling the function as following returns following error.

IronSource.loadBanner(UIApplication.getSharedApplication().getKeyWindow().getRootViewController(), ISBannerSize.BANNER);

API: loadBannerWithViewController size is nil
2019-01-20 18:22:24.184 SpellingGo[41429:1371569] [info] ios: ERROR-API-loadBannerWithViewController size is nil 

Could someone please check what needs to be done to fix this?

The actual function is defined in Ironsource.h as:

+ (void)loadBannerWithViewController:(UIViewController *)viewController size:(ISBannerSize *)size;

where IBannerSize usually is one of the defined constants as follows:


#define ISBannerSize_BANNER [[ISBannerSize alloc] initWithDescription:@"BANNER"]
#define ISBannerSize_LARGE [[ISBannerSize alloc] initWithDescription:@"LARGE"]
#define ISBannerSize_RECTANGLE [[ISBannerSize alloc] initWithDescription:@"RECTANGLE"]
#define ISBannerSize_SMART [[ISBannerSize alloc] initWithDescription:@"SMART"]

@interface ISBannerSize : NSObject

- (instancetype)initWithWidth:(NSInteger)width andHeight:(NSInteger)height;
- (instancetype)initWithDescription:(NSString *)description;

@property (readonly) NSString* sizeDescription;
@property (readonly) NSInteger width;
@property (readonly) NSInteger height;

@end

Thanks,

Arsalan

Chartboost robopod not compatible with latest chartboost SDK 6.5.1

Unfortunately, the chartboost robopod is not compatible with the latest version of chartboost SDK (6.5.1). 6.5.1 brings compatibility for iOS 10.

Errors when building:

Undefined symbols for architecture armv7:
"_SecPolicyCreateSSL", referenced from:
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecTrustSetPolicies", referenced from:
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecCertificateCopyData", referenced from:
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecTrustGetCertificateCount", referenced from:
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecTrustGetCertificateAtIndex", referenced from:
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecCertificateCreateWithData", referenced from:
-[Chartboost_AFSecurityPolicy setPinnedCertificates:] in Chartboost(AFSecurityPolicy.o)
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecPolicyCreateBasicX509", referenced from:
-[Chartboost_AFSecurityPolicy setPinnedCertificates:] in Chartboost(AFSecurityPolicy.o)
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecTrustCreateWithCertificates", referenced from:
-[Chartboost_AFSecurityPolicy setPinnedCertificates:] in Chartboost(AFSecurityPolicy.o)
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecTrustSetAnchorCertificates", referenced from:
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
"_SecTrustEvaluate", referenced from:
-[Chartboost_AFSecurityPolicy setPinnedCertificates:] in Chartboost(AFSecurityPolicy.o)
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
_AFServerTrustIsValid in Chartboost(AFSecurityPolicy.o)
"_SecTrustCopyPublicKey", referenced from:
-[Chartboost_AFSecurityPolicy setPinnedCertificates:] in Chartboost(AFSecurityPolicy.o)
-[Chartboost_AFSecurityPolicy evaluateServerTrust:forDomain:] in Chartboost(AFSecurityPolicy.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
:ios:launchIOSDevice FAILED

Push Notification

how about push notification?
I have reading facebook notification and parse
how i can use that for my game? Do you have any sample for that?

Unable to use facebook robopod

Hello ,
I am unable to use facebook . I am using the latest version of robopod and robovm . I get the following error during compilation

[ERROR] ld: framework not found Bolts
[ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app

Libgdx Version 1.9.5
robovm version 2.3.0
robopod version 2.2.1-SNAPSHOT

Robopods for Admob + iOS 12, freezing

My game suffer from random freezes when using iOS 12. I know that there was a bug with robovm and iOS 12 but I use the most recent version of robovm (2.3.5) and robopods-google-mobile-ads-ios (2.2.2).
I've created sample app with banner ad (I use admob test banner ad unit id) and some code to run garbage collector. If I disable 'causeGC()' method or do not initialize ads everything works fine. To run a sample project you have to download Google Mobile Ads SDK for iOS (https://developers.google.com/admob/ios/download) and place it in folder 'ios/libs/'. Link to sample app: https://github.com/Berobasket/TestLibgdxGame . It takes from 2 to 70 seconds to freeze on my IPhone SE.

Presenting AdMob Interstitial & Reward ads in fullscreen using iOS 13, Xcode 11

I just updated my Xcode to 11.1 and tried to run my app on a iOS 13 device.

I have an issue with Admob interstitial & Reward ads not being presented in fullscreen. Attach a screenshot to demonstrate, and you can see the top of adView isn't located at the top.

IMG_2747

Dependency that I'm using :

Under mobidevelop group :

  • robovm-gradle-plugin = 2.3.7 / 2.3.8-SNAPSHOT
  • roboVMVersion = 2.3.7 / 2.3.8-SNAPSHOT
  • robopodsVersion= 2.2.3-SNAPSHOT

and

  • gdxVersion = 1.9.10
  • GoogleMobileAds.framework = 7.33.1
  • iPhoneOS = 13.1

Also I saw this thread, according to this we need to update GoogleMobileAds.framework to latest 7.50.0 version.

Disable / enable analytics collection

Hi there,

thanks for the bindings! Is there a way to enable analytics collection from code (after initially disabling it in the plist using FIREBASE_ANALYTICS_COLLECTION_ENABLEDNO)? This is the normal process after consent for data collection is given by your users. The iOS SDK has a method AnalyticsConfiguration.shared().setAnalyticsCollectionEnabled(true) for this... but can't find it in the bindings.

Thank you and greetings,
Gerhard

Firebase Analytics: Undefined symbols for architecture armv7

After adding the Firebase Analytics SDK, I see this error when I try to create an IPA (./gradlew createIPA in libGDX project):

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_SKProductsRequest", referenced from:
      objc-class-ref in GoogleAppMeasurement(APMProductsRequest_b4c5e1bd5d891440f37102f602e113af.o)
  "_OBJC_CLASS_$_SKPaymentQueue", referenced from:
      objc-class-ref in GoogleAppMeasurement(APMAnalytics_7a75c1c1ea2dc414eaa5c0403a160869.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I'm still able to build and run successfully using Android Studio with the RoboVM plugin.

Firebase SDK: 6.3.0
RoboPods: 2.2.3-SNAPSHOT
RoboVM: 2.3.5
robopod.xml: https://pastebin.com/nj2MLYAE

Fix documentation

@Override public boolean didFinishLaunching(UIApplication application, UIApplicationLaunchOptions launchOptions) { FIRApp.configure() return true; }

please add call to super.didFinishLaunching otherwise app will crash with
com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.didBecomeActive

Update Facebook sdk

Hi i integrated the Facebook pod in my game and now in Facebook developer panel i see a warning : Your Facebook SDK is out-of-date. Please upgrade to v5.0 for access to new privacy features.
Please make facebook robopod using Facebook V5.0 sdk.
Thanks.

GADRewardBasedVideoAd crashes

I have problem with Rewarded video ads.
I'm getting instance from getSharedInstance method and load request like that:
gadRewardBasedVideoAd.loadRequest(request, "ca-app-pub-3940256099942544/1712485313", "ca-app-pub-3940256099942544~1458002511");

this is my stack trace

2017-07-13 13:57:36.626 IOSLauncher[1683:49796] -[GADRewardBasedVideoAd loadRequest:withAdUnitID:userID:]: unrecognized` selector sent to instance 0x7fe74852f250

2017-07-13 13:57:36.774 IOSLauncher[1683:49796] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GADRewardBasedVideoAd loadRequest:withAdUnitID:userID:]: unrecognized selector sent to instance 0x7fe74852f250'
*** First throw call stack:
(
0 CoreFoundation 0x000000011219dd85 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000011177cdeb objc_exception_throw + 48
2 CoreFoundation 0x00000001121a6d3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x00000001120eccfa forwarding + 970
4 CoreFoundation 0x00000001120ec8a8 _CF_forwarding_prep_0 + 120
5 IOSLauncher 0x000000010a30dd65 [J]org.robovm.pods.google.mobileads.GADRewardBasedVideoAd.$m$loadRequest$withAdUnitID$userID$(Lorg/robovm/pods/google/mobileads/GADRewardBasedVideoAd;Lorg/robovm/objc/Selector;Lorg/robovm/pods/google/mobileads/GADRequest;Ljava/lang/String;Ljava/lang/String;)V + 229
6 IOSLauncher 0x000000010a30d649 [J]org.robovm.pods.google.mobileads.GADRewardBasedVideoAd.loadRequest(Lorg/robovm/pods/google/mobileads/GADRequest;Ljava/lang/String;Ljava/lang/String;)V + 110
7 IOSLauncher 0x000000010a32a5bf [J]pl.dzwonk.game.IOSLauncher.didFinishLaunching(Lorg/robovm/apple/uikit/UIApplication;Lorg/robovm/apple/uikit/UIApplicationLaunchOptions;)Z + 284
8 IOSLauncher 0x00000001098cc7dd [J]com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.$cb$application$didFinishLaunchingWithOptions$(Lcom/badlogic/gdx/backends/iosrobovm/IOSApplication$Delegate;Lorg/robovm/objc/Selector;Lorg/robovm/apple/uikit/UIApplication;Lorg/robovm/apple/uikit/UIApplicationLaunchOptions;)Z + 34
9 IOSLauncher 0x00000001098cc0f8 [j]com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.$cb$application$didFinishLaunchingWithOptions$(Lcom/badlogic/gdx/backends/iosrobovm/IOSApplication$Delegate;Lorg/robovm/objc/Selector;Lorg/robovm/apple/uikit/UIApplication;Lorg/robovm/apple/uikit/UIApplicationLaunchOptions;)Z[callback] + 229
10 UIKit 0x000000010f4fa9ac -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 272
11 UIKit 0x000000010f4fbc0d -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3415
12 UIKit 0x000000010f502568 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1769
13 UIKit 0x000000010f4ff714 -[UIApplication workspaceDidEndTransaction:] + 188
14 FrontBoardServices 0x0000000113c638c8 FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 24
15 FrontBoardServices 0x0000000113c63741 -[FBSSerialQueue _performNext] + 178
16 FrontBoardServices 0x0000000113c63aca -[FBSSerialQueue _performNextFromRunLoopSource] + 45
17 CoreFoundation 0x00000001120c3301 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
18 CoreFoundation 0x00000001120b922c __CFRunLoopDoSources0 + 556
19 CoreFoundation 0x00000001120b86e3 __CFRunLoopRun + 867
20 CoreFoundation 0x00000001120b80f8 CFRunLoopRunSpecific + 488
21 UIKit 0x000000010f4fef21 -[UIApplication _run] + 402
22 UIKit 0x000000010f503f09 UIApplicationMain + 171
23 IOSLauncher 0x000000010a187b40 [J]org.robovm.apple.uikit.UIApplication.main(ILorg/robovm/rt/bro/ptr/BytePtr$BytePtrPtr;Ljava/lang/String;Ljava/lang/String;)I + 195
24 IOSLauncher 0x000000010a18704b [J]org.robovm.apple.uikit.UIApplication.main([Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)V + 944
25 IOSLauncher 0x000000010a186124 [j]org.robovm.apple.uikit.UIApplication.main([Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)V[clinit] + 68
26 IOSLauncher 0x000000010a32a725 [J]pl.dzwonk.game.IOSLauncher.main([Ljava/lang/String;)V + 74
27 IOSLauncher 0x000000010a3b560e _call0 + 142
28 IOSLauncher 0x000000010a3aa9e4 callVoidMethod + 104

29  IOSLauncher                         0x000000010a3ad0f0 rvmCallVoidClassMethodA + 269
30  IOSLauncher                         0x000000010a3ad1c4 rvmCallVoidClassMethod + 134
31  IOSLauncher                         0x000000010a3a5513 rvmRun + 217
32  IOSLauncher                         0x000000010a39d1e3 main + 301
33  libdyld.dylib                       0x000000011141692d start + 1
34  ???                                 0x0000000000000002 0x0 + 2

)`

How to use Game Center in ios project?

How to use Game Center in ios project?
I play some games on iphone 5s (ios 10.3.1) from the App Store, I still see the leaderboard score from Game Center.
BlueRiverInteractive /robovm-ios-bindings/gamecenter is Deprecated.

Thanks,

[Solver] Game Center not working on iOS 10, work well on iOS 9.3

I build my game with:
gdxVersion = '1.9.6'
roboVMVersion = '2.3.0'
robopodsVersion = '2.2.1'
box2DLightsVersion = '1.4'
ashleyVersion = '1.7.0'
aiVersion = '1.8.0'
(xCode 8.3.3, MobiVM 2.3.1 release) and publish on App Store.
Link game on Store: https://itunes.apple.com/app/coby-shy/id1255778488

I test on iOS 9.3 then Game Center work well, but on iOS 10 then Game Center not working. Please check for me !

Code i use in my game. The same source code in BlueRiverInteractive /robovm-ios-bindings/gamecenter

IOSLauncher.java
`package com.knstudios.cobyshy;

import com.badlogic.gdx.Application;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.iosrobovm.IOSApplication;
import com.badlogic.gdx.backends.iosrobovm.IOSApplicationConfiguration;
import com.badlogic.gdx.utils.Logger;
import com.knstudios.cobyshy.admob.AdHandler;

import org.robovm.apple.foundation.NSArray;
import org.robovm.apple.foundation.NSAutoreleasePool;
import org.robovm.apple.foundation.NSBundle;
import org.robovm.apple.foundation.NSDictionary;
import org.robovm.apple.foundation.NSError;
import org.robovm.apple.foundation.NSObject;
import org.robovm.apple.foundation.NSString;
import org.robovm.apple.foundation.NSURL;
import org.robovm.apple.gamekit.GKAchievement;
import org.robovm.apple.gamekit.GKLeaderboard;
import org.robovm.apple.uikit.UIActivityViewController;
import org.robovm.apple.uikit.UIApplication;
import org.robovm.apple.uikit.UIApplicationLaunchOptions;

import java.util.ArrayList;

public class IOSLauncher extends IOSApplication.Delegate implements AdHandler {
private static final Logger log = new Logger(IOSLauncher.class.getName(), Application.LOG_DEBUG);
private IOSApplication iosApplication;

private GameCenterManager gcManager;


@Override
protected IOSApplication createApplication() {
    IOSApplicationConfiguration config = new IOSApplicationConfiguration();
    config.orientationLandscape = false;
    config.orientationPortrait = true;
    return new IOSApplication(new CobyShy(this), config);
}

public static void main(String[] argv) {
    NSAutoreleasePool pool = new NSAutoreleasePool();
    UIApplication.main(argv, null, IOSLauncher.class);
    pool.close();
}

@Override
public boolean didFinishLaunching(UIApplication application, UIApplicationLaunchOptions launchOptions) {
    super.didFinishLaunching(application, launchOptions);

    gcManager = new GameCenterManager(application.getKeyWindow(), new GameCenterListener() {
        @Override
        public void playerLoginFailed (NSError error) {
            log.debug("playerLoginFailed. error: " + error);
        }

        @Override
        public void playerLoginCompleted () {
            log.debug("playerLoginCompleted");
        }

        @Override
        public void achievementReportCompleted () {
            log.debug("achievementReportCompleted");
        }

        @Override
        public void achievementReportFailed (NSError error) {
            log.debug("achievementReportFailed. error: " + error);
        }

        @Override
        public void achievementsLoadCompleted (ArrayList<GKAchievement> achievements) {
            log.debug("achievementsLoadCompleted: " + achievements.size());
        }

        @Override
        public void achievementsLoadFailed (NSError error) {
            log.debug("achievementsLoadFailed. error: " + error);
        }

        @Override
        public void achievementsResetCompleted () {
            log.debug("achievementsResetCompleted");
        }

        @Override
        public void achievementsResetFailed (NSError error) {
            log.debug("achievementsResetFailed. error: " + error);
        }

        @Override
        public void scoreReportCompleted () {
            log.debug("scoreReportCompleted");
        }

        @Override
        public void scoreReportFailed (NSError error) {
            log.debug("scoreReportFailed. error: " + error);
        }

        @Override
        public void leaderboardsLoadCompleted (ArrayList<GKLeaderboard> scores) {
            log.debug("scoresLoadCompleted: " + scores.size());
        }

        @Override
        public void leaderboardsLoadFailed (NSError error) {
            log.debug("scoresLoadFailed. error: " + error);
        }

        @Override
        public void leaderboardViewDismissed () {
            log.debug("leaderboardViewDismissed");
        }

        @Override
        public void achievementViewDismissed () {
            log.debug("achievementViewDismissed");
        }
    });

    return true;
}


@Override
public void gcSignIn() {
    gcManager.login();

}

@Override
public void submitScore(int highScore) {
    gcManager.reportScore(leaderboardId, (long)highScore);
}

@Override
public void showLeaderboard() {
    gcManager.showLeaderboardView(leaderboardId);
}

}`

CobyShy.java
@Override public void create () { mAdHandler.gcSignIn(); }

GameCenterManager.java

`package com.knstudios.cobyshy;

import com.badlogic.gdx.Application;
import com.badlogic.gdx.utils.Logger;

import org.robovm.apple.foundation.NSArray;
import org.robovm.apple.foundation.NSError;
import org.robovm.apple.foundation.NSErrorUserInfo;
import org.robovm.apple.gamekit.GKAchievement;
import org.robovm.apple.gamekit.GKGameCenterControllerDelegateAdapter;
import org.robovm.apple.gamekit.GKGameCenterViewController;
import org.robovm.apple.gamekit.GKGameCenterViewControllerState;
import org.robovm.apple.gamekit.GKLeaderboard;
import org.robovm.apple.gamekit.GKLocalPlayer;
import org.robovm.apple.gamekit.GKScore;
import org.robovm.apple.uikit.UIDevice;
import org.robovm.apple.uikit.UIViewController;
import org.robovm.apple.uikit.UIWindow;
import org.robovm.objc.block.VoidBlock1;
import org.robovm.objc.block.VoidBlock2;

import java.util.ArrayList;

@SuppressWarnings("deprecation")
public class GameCenterManager {
private static final Logger log = new Logger(GameCenterManager.class.getName(), Application.LOG_DEBUG);
public static final String GCM_DOMAIN = GameCenterManager.class.getSimpleName();
public static final long GCM_ERROR_NOT_AUTHENTICATED = -1024;

private static final int IOS_6 = 6;
private static final int IOS_7 = 7;

private final UIWindow keyWindow;
private final GameCenterListener listener;

/** Constructor.
 * @param keyWindow KeyWindow can't be accessed from the Delegates sometimes, so we need to save a reference
 * @param listener */
public GameCenterManager(UIWindow keyWindow, GameCenterListener listener) {
    this.keyWindow = keyWindow;
    this.listener = listener;
}

/** Do the login logic. If the user has never loged, a dialog will be shown. */
public void login () {
    log.debug("GameCenterManager login");
    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
        GKLocalPlayer.getLocalPlayer().setAuthenticateHandler(new VoidBlock2<UIViewController, NSError>() {
            @Override
            public void invoke (UIViewController viewController, NSError error) {
                log.debug("GameCenterManager invoke");
                // If the device does not have an authenticated player, show the login dialog
                if (viewController != null) {
                    log.debug("GameCenterManager viewController != null");
                    keyWindow.getRootViewController().presentViewController(viewController, true, null);
                }
                // If the viewController is null and the player is authenticated, the login is completed
                else if (GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
                    log.debug("GameCenterManager GKLocalPlayer.getLocalPlayer().isAuthenticated()");
                    listener.playerLoginCompleted();
                }
                // If the viewController is null and the player is not authenticated the login has failed
                else {
                    log.debug("GameCenterManager else");
                    listener.playerLoginFailed(error);
                }
            }
        });
    }

// else { // If iOS version is 5 or less we use the deprecated method
// GKLocalPlayer.getLocalPlayer().authenticate(new VoidBlock1() {
// @OverRide
// public void invoke (NSError error) {
// if (GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
// listener.playerLoginCompleted();
// } else {
// listener.playerLoginFailed(error);
// }
// }
// });
// }
}

/** Report an achievement completed (100 as percentComplete)
 *
 * @param identifier */
public void reportAchievement (String identifier) {
    reportAchievement(identifier, 100);
}

/** Report an achievement with a percentComplete
 *
 * @param identifier
 * @param percentComplete */
public void reportAchievement (String identifier, double percentComplete) {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        listener.achievementReportFailed(buildUnauthenticatedPlayerError());
        return;
    }

    GKAchievement achievement = new GKAchievement(identifier);
    achievement.setPercentComplete(percentComplete);
    achievement.setShowsCompletionBanner(true);

    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
        // Create an array with the achievement
        NSArray<GKAchievement> achievements = new NSArray<GKAchievement>(achievement);

        GKAchievement.reportAchievements(achievements, new VoidBlock1<NSError>() {
            @Override
            public void invoke (NSError error) {
                if (error != null) {
                    listener.achievementReportFailed(error);
                } else {
                    listener.achievementReportCompleted();
                }
            }
        });
    }

// else { // If iOS version is 5 or less we use the deprecated method
// achievement.reportAchievement(new VoidBlock1() {
// @OverRide
// public void invoke (NSError error) {
// if (error != null) {
// listener.achievementReportFailed(error);
// } else {
// listener.achievementReportCompleted();
// }
// }
// });
// }
}

/** Load all the achievements for the local player */
public void loadAchievements () {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        listener.achievementsLoadFailed(buildUnauthenticatedPlayerError());
        return;
    }

    GKAchievement.loadAchievements(new VoidBlock2<NSArray<GKAchievement>, NSError>() {
        @Override
        public void invoke (NSArray<GKAchievement> array, NSError error) {
            if (error != null) {
                listener.achievementsLoadFailed(error);
            } else {
                ArrayList<GKAchievement> achievements = new ArrayList<GKAchievement>();
                for (GKAchievement achievement : array) {
                    achievements.add(achievement);
                }
                listener.achievementsLoadCompleted(achievements);
            }
        }
    });
}

/** Reset the achievements progress for the local player. All the entries for the local player are removed from the server. */
public void resetAchievements () {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        listener.achievementsResetFailed(buildUnauthenticatedPlayerError());
        return;
    }

    GKAchievement.resetAchievements(new VoidBlock1<NSError>() {
        @Override
        public void invoke (NSError error) {
            if (error != null) {
                listener.achievementsResetFailed(error);
            } else {
                listener.achievementsResetCompleted();
            }
        }
    });
}

/** Report a score to GameCenter
 * @param identifier
 * @param score */
public void reportScore (String identifier, long score) {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        listener.scoreReportFailed(buildUnauthenticatedPlayerError());
        return;
    }

    GKScore scoreReporter = new GKScore();
    scoreReporter.setValue(score);

    // If iOS version is 7 or more we use the new method
    if (getIosVersion() >= IOS_7) {
        scoreReporter.setLeaderboardIdentifier(identifier);
        NSArray<GKScore> scores = new NSArray<GKScore>(scoreReporter);

        GKScore.reportScores(scores, new VoidBlock1<NSError>() {
            @Override
            public void invoke (NSError error) {
                if (error != null) {
                    listener.scoreReportFailed(error);
                } else {
                    listener.scoreReportCompleted();
                }
            }
        });
    }

// else { // If iOS version is 6 or less we use the deprecated method
// scoreReporter.setCategory(identifier);
// scoreReporter.reportScore(new VoidBlock1() {
// @OverRide
// public void invoke (NSError error) {
// if (error != null) {
// listener.scoreReportFailed(error);
// } else {
// listener.scoreReportCompleted();
// }
// }
// });
// }
}

/** Load all the Leaderboards for the Game. Warning: If using iOS5 or less the Leaderboard object will only include the
 * Category (identifier) */
public void loadLeaderboards () {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        listener.leaderboardsLoadFailed(buildUnauthenticatedPlayerError());
        return;
    }

    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
        GKLeaderboard.loadLeaderboards(new VoidBlock2<NSArray<GKLeaderboard>, NSError>() {
            @Override
            public void invoke (NSArray<GKLeaderboard> array, NSError error) {
                if (error != null) {
                    listener.leaderboardsLoadFailed(error);
                } else {
                    ArrayList<GKLeaderboard> leaderboards = new ArrayList<GKLeaderboard>();
                    for (GKLeaderboard leaderboard : array) {
                        leaderboards.add(leaderboard);
                    }
                    listener.leaderboardsLoadCompleted(leaderboards);
                }
            }
        });
    }

// else { // If iOS version is 6 or less we use the deprecated method
// GKLeaderboard.loadCategories(new VoidBlock3<NSArray, NSArray, NSError>() {
// @OverRide
// public void invoke (NSArray array, NSArray array2, NSError error) {
// if (error != null) {
// listener.leaderboardsLoadFailed(error);
// } else {
// ArrayList leaderboards = new ArrayList();
// for (NSString category : array) {
// GKLeaderboard leaderboard = new GKLeaderboard();
// leaderboard.setCategory(category.toString());
//
// leaderboards.add(leaderboard);
// }
// listener.leaderboardsLoadCompleted(leaderboards);
// }
// }
// });
// }
}

/** Return the id of a leaderboard (category or identifier, depending on iOS version)
 * @param leaderboard
 * @return */
public String getLeaderboardId (GKLeaderboard leaderboard) {
    if (getIosVersion() >= IOS_7) {
        return leaderboard.getIdentifier();
    } else {
        return leaderboard.getCategory();
    }
}

/** Shows GameCenter standard interface for Achievements */
public void showAchievementsView () {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        return;
    }

    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
        GKGameCenterViewController gameCenterView = new GKGameCenterViewController();
        gameCenterView.setGameCenterDelegate(new GKGameCenterControllerDelegateAdapter() {
            @Override
            public void didFinish (GKGameCenterViewController gameCenterViewController) {
                dismissViewControllerAndNotifyListener(gameCenterViewController, GKGameCenterViewControllerState.Achievements);
            }
        });
        gameCenterView.setViewState(GKGameCenterViewControllerState.Achievements);
        keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
    }

// else { // If iOS version is 6 or less we use the deprecated method
// GKAchievementViewController gameCenterView = new GKAchievementViewController();
// gameCenterView.setAchievementDelegate(new GKAchievementViewControllerDelegateAdapter() {
// @OverRide
// public void didFinish (GKAchievementViewController viewController) {
// dismissViewControllerAndNotifyListener(viewController, GKGameCenterViewControllerState.Achievements);
// }
// });
// keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
// }
}

/** Shows GameCenter standard interface for Leaderboards */
public void showLeaderboardsView () {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        return;
    }

    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
        GKGameCenterViewController gameCenterView = new GKGameCenterViewController();
        gameCenterView.setGameCenterDelegate(new GKGameCenterControllerDelegateAdapter() {
            @Override
            public void didFinish (GKGameCenterViewController gameCenterViewController) {
                dismissViewControllerAndNotifyListener(gameCenterViewController, GKGameCenterViewControllerState.Leaderboards);
            }
        });
        gameCenterView.setViewState(GKGameCenterViewControllerState.Leaderboards);
        // gameCenterView.setLeaderboardIdentifier("CgkI4OvQqOcSEAIQBg");
        keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
    }

// else { // If iOS version is 6 or less we use the deprecated method
// GKLeaderboardViewController gameCenterView = new GKLeaderboardViewController();
// gameCenterView.setTimeScope(GKLeaderboardTimeScope.AllTime);
// gameCenterView.setLeaderboardDelegate(new GKLeaderboardViewControllerDelegateAdapter() {
// @OverRide
// public void didFinish (GKLeaderboardViewController viewController) {
// dismissViewControllerAndNotifyListener(viewController, GKGameCenterViewControllerState.Leaderboards);
// }
// });
// keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
// }
}

/** Shows GameCenter standard interface for one Leaderboard
 * @param identifier */
public void showLeaderboardView (String identifier) {
    log.debug("GameCenterManager showLeaderboardView");
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
        log.debug("GameCenterManager isAuthenticated()");
        return;
    }

    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
        log.debug("GameCenterManager getIosVersion() >= IOS_6");
        GKGameCenterViewController gameCenterView = new GKGameCenterViewController();
        gameCenterView.setGameCenterDelegate(new GKGameCenterControllerDelegateAdapter() {
            @Override
            public void didFinish (GKGameCenterViewController gameCenterViewController) {
                dismissViewControllerAndNotifyListener(gameCenterViewController, GKGameCenterViewControllerState.Leaderboards);
            }
        });
        gameCenterView.setViewState(GKGameCenterViewControllerState.Leaderboards);
        if (getIosVersion() >= IOS_7)
            gameCenterView.setLeaderboardIdentifier(identifier);
        else
            gameCenterView.setLeaderboardCategory(identifier);

        keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
    } else {
        log.debug("GameCenterManager getIosVersion() < IOS_6");
    }

// else { // If iOS version is 6 or less we use the deprecated method
// GKLeaderboardViewController gameCenterView = new GKLeaderboardViewController();
// gameCenterView.setCategory(identifier);
// gameCenterView.setTimeScope(GKLeaderboardTimeScope.AllTime);
// gameCenterView.setLeaderboardDelegate(new GKLeaderboardViewControllerDelegateAdapter() {
// @OverRide
// public void didFinish (GKLeaderboardViewController viewController) {
// dismissViewControllerAndNotifyListener(viewController, GKGameCenterViewControllerState.Leaderboards);
// }
// });
//
// keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
// }
}

/** Dismiss the {@link UIViewController} and invoke the appropriate callback on the {@link #listener}.
 *
 * @param viewController the {@link UIViewController} to dismiss
 * @param viewControllerState the type of the View Controller being dismissed */
private void dismissViewControllerAndNotifyListener (UIViewController viewController,
                                                     final GKGameCenterViewControllerState viewControllerState) {
    viewController.dismissViewController(true, new Runnable() {
        @Override
        public void run () {
            switch (viewControllerState) {
                case Achievements:
                    listener.achievementViewDismissed();
                    break;
                case Leaderboards:
                    listener.leaderboardViewDismissed();
                    break;
                default:
                    break;
            }
        }
    });
}

/** Returns the iOS version of the current device
 *
 * @return */
private int getIosVersion () {
    String systemVersion = UIDevice.getCurrentDevice().getSystemVersion();
    int version = Character.getNumericValue(systemVersion.charAt(0));
    return version;
}

/** Generate an {@link NSError} indicating that the local player is unauthenticated.
 *
 * @return {@link NSError} */
private NSError buildUnauthenticatedPlayerError () {
    NSErrorUserInfo info = new NSErrorUserInfo().setLocalizedDescription("Local player is unauthenticated");
    return new NSError(GCM_DOMAIN, GCM_ERROR_NOT_AUTHENTICATED, info);
}

}`

GameCenterListener.java

`public interface GameCenterListener {

public void playerLoginCompleted();

public void playerLoginFailed(NSError error);

public void achievementReportCompleted();

public void achievementReportFailed(NSError error);

public void achievementsLoadCompleted(ArrayList<GKAchievement> achievements);

public void achievementsLoadFailed(NSError error);

public void achievementsResetCompleted();

public void achievementsResetFailed(NSError error);

public void scoreReportCompleted();

public void scoreReportFailed(NSError error);

public void leaderboardsLoadCompleted(ArrayList<GKLeaderboard> scores);

public void leaderboardsLoadFailed(NSError error);

public void leaderboardViewDismissed();

public void achievementViewDismissed();

}`

Failed to resolve: com.mobidevelop.robovm:robopods-firebase-ios-analytics:2.3.3

I'm trying to add Firebase analytics to my project but there is some error. It's very possible that I'm doing something wrong.

I add this line in my gradle

project(":core") {
    apply plugin: "java"


    dependencies {
       .............
        compile "com.mobidevelop.robovm:robopods-firebase-ios-analytics:$robopodsVersion"
   }
}

AndroidStudio gives me the next error
Failed to resolve: com.mobidevelop.robovm:robopods-firebase-ios-analytics:2.3.3

Sorry if my question is too dumb (

Robopods Google Cloud Messaging

Hey,

Is this being worked on? Would think a lot of apps need push notifications? :) Unfortunately I only have it on the Android version of my game, so iOS almost seems a bit broken.

FBSDKShare - Crash when implemented the share delegate.

I want to get the callback results after posting on facebook.
I follow the instructions to share photo on facebook. It works when the is not implemented share delegate . It's work with call cmd:
FBSDKShareDialog.show (viewController, content, null);

I implemented Share Delegate as follows:

  1. Declare global variable:
    private FBSDKSharingDelegate sharingDelegate;

  2. In didFinishLaunching () method add:
    sharingDelegate = new FBSDKSharingDelegate () {
    ย ย ย ย ย ย ย ย ย ย ย ย @OverRide
    ย ย ย ย ย ย ย ย ย ย ย ย public void didComplete (FBSDKSharing sharer, NSDictionary results) {
    ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย log.debug ("IOSLauncher FBSDKSharingDelegate -> didComplete");
    ย ย ย ย ย ย ย ย ย ย ย ย }

ย ย ย ย ย ย ย ย ย ย ย ย @OverRide
ย ย ย ย ย ย ย ย ย ย ย ย public void didFail (FBSDKSharing sharer, NSError error) {
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย log.debug ("IOSLauncher FBSDKSharingDelegate -> didFail");
ย ย ย ย ย ย ย ย ย ย ย ย }

ย ย ย ย ย ย ย ย ย ย ย ย @OverRide
ย ย ย ย ย ย ย ย ย ย ย ย public void didCancel (FBSDKSharing sharer) {
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย log.debug ("IOSLauncher FBSDKSharingDelegate -> didCancel");
ย ย ย ย ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย ย ย };

  1. And call show:
    FBSDKShareDialog.show (viewController, content, sharingDelegate);

-> It is crash.
Where do I implemented the wrong share delegate ?
Please help me. Thanks.

Maven not installing Chartboost correctly

I'm trying to get Chartboost via maven with the following commands:

git clone https://github.com/MobiDevelop/robovm-robopods
cd robovm-robopods
mvn -N install
mvn install

But the only libraries that get installed are:
robopods-google-apis-ios robopods-google-mobile-ads-ios robopods-parent
robopods-google-apis-parent robopods-google-mobile-ads-parent

I'm guessing theres something missing in the pom file?

Outdated firebase/ios-analytics install instructions

The current version of the Google Analytics Framework contains additional libraries that are not described in the README. I thought that the messaging robopod does not need them, so I left them out (compiling was still possible, which confused me).

Here ist the list of frameworks which are needed to use the ios-messaging/ios-analytics robopod:

    <framework>FIRAnalyticsConnector</framework>
    <framework>FirebaseAnalytics</framework>
    <framework>FirebaseCore</framework>
    <framework>FirebaseCoreDiagnostics</framework>
    <framework>FirebaseInstallations</framework> <!-- !-->
    <framework>FirebaseMessaging</framework>
    <framework>GoogleAppMeasurement</framework>
    <framework>GoogleDataTransport</framework> <!-- ! -->
    <framework>GoogleDataTransportCCTSupport</framework> <!-- ! -->
    <framework>GoogleUtilities</framework>
    <framework>nanopb</framework>
    <framework>PromisesObjC</framework>
    <framework>Protobuf</framework>

Frameworks missing in the repo readme are marked with a line comment

Google Admob Banner on Bottom doesn't work

I want to set my Banner to the Bottom of the Screen but it doesn't work.

I tried: adview.setFrame(new CGRect(100,100,100,100)); and adview.setCenter(100,100)

But the X and Y Position is always 0,0

Users report issues with closing interstitial Ads

I am having few users report to me that the interstitial ad is not responsive (cannot click the x button to close the ad) or that they get a black screen only. I have tried to reproduce it in simulators and on my iOS devices but I was not able to. I was hoping someone else might have had such issues and could help me resolve it.

Here's some additional information.

  • Device tested on: iPod touch 7th gen v13.1.3 and iPhone 4 v9.3.5
  • User device where issue occured: iPhone 6 v12.4.6
  • I am using the libGDX framework to develop my app for iOS.

IOSLauncher: How to check build config is Development or Distribution provisioning profile.

I want to get current build config is Development or Distribution provisioning profile. To use ID Ads test for Development environment and my ID Ads for Distribution environment.
With Android platform, it very very easy. With iOS: How to check build config in IOSLauncher?

And, please share for me file Mobile Ads SDK version 7.42.2. I can't download this version because only download latest version.

Thanks you!

Undefined symbols for architecture x86_64 when compiling with GoogleMobileAds framework

Issue details

i'm having an error when compiling the app with admob ads

`Undefined symbols for architecture x86_64:
   "_OBJCCLASS$_WKWebView", referenced from:
       objc-class-ref in GoogleMobileAds(GADOMIDJSExecutorFactory_72b26b7bf73ad99b8affc15d39583171.o)
       objc-class-ref in GoogleMobileAds(GADOMIDAdSessionContext_3a914c7dff81beb3460cff945047d5d7.o)
ld: symbol(s) not found for architecture x86_64`

Full error : https://pastebin.com/raw/XswaKQv4
Robovm.xml : https://pastebin.com/raw/etddYdD5

GoogleMobileAds framework is installed (in the libs folder)
mobivm ios bindings are installed

compile "com.mobidevelop.robovm:robopods-google-mobile-ads-ios:2.2.2"

i followed this tutorial : https://github.com/MobiVM/robovm-robopods/tree/master/google-mobile-ads/ios#display-ads

Build Tools:

  • RoboVM Intellij IDEA Plugin v2.3.5
  • Gradle (Android studio 3.2.1)

Versions:

  • Robovm: 2.3.3
  • XCode: latest
  • JDK: latest

app crash by GADAdSizeFromNSValue

Application received signal SIGSEGV
(null)
((
	0   CoreFoundation                      0x000000018c6beff8 <redacted> + 148
	1   libobjc.A.dylib                     0x000000018b120538 objc_exception_throw + 56
	2   CoreFoundation                      0x000000018c6bef28 <redacted> + 0
	3   IOSLauncher                         0x100f2fbe8 _unhidden_GADAdSizeFromNSValue + 740652
	4   libsystem_platform.dylib            0x000000018b77d30c _sigtramp + 36
	5   IOSLauncher                         0x1005fd91c IOSLauncher + 6281500
	6   IOSLauncher                         0x1005fd91c IOSLauncher + 6281500
	7   IOSLauncher                         0x1005fd5d8 IOSLauncher + 6280664
	8   IOSLauncher                         0x100f3d840 _unhidden_GADAdSizeFromNSValue + 797060
	9   IOSLauncher                         0x100f3efac _unhidden_GADAdSizeFromNSValue + 803056
	10  libdispatch.dylib                   0x000000018b5769e0 <redacted> + 24
	11  libdispatch.dylib                   0x000000018b5769a0 <redacted> + 16
	12  libdispatch.dylib                   0x000000018b57b5e8 _dispatch_main_queue_callback_4CF + 996
	13  CoreFoundation                      0x000000018c66d0c8 <redacted> + 12
	14  CoreFoundation                      0x000000018c66ace4 <redacted> + 1572
	15  CoreFoundation                      0x000000018c59ada4 CFRunLoopRunSpecific + 424
	16  GraphicsServices                    0x000000018e004074 GSEventRunModal + 100
	17  UIKit                               0x000000019284e058 UIApplicationMain + 208
	18  IOSLauncher                         0x100bd9910 IOSLauncher + 12425488
	19  IOSLauncher                         0x100bd8cc8 IOSLauncher + 12422344
	20  IOSLauncher                         0x100bd7e00 IOSLauncher + 12418560
	21  IOSLauncher                         0x100514ff4 IOSLauncher + 5328884
	22  IOSLauncher                         0x100dc1f00 IOSLauncher + 14425856
	23  IOSLauncher                         0x100db7f2c IOSLauncher + 14384940
	24  IOSLauncher                         0x100dba84c IOSLauncher + 14395468
	25  IOSLauncher                         0x100dba8e8 IOSLauncher + 14395624
	26  IOSLauncher                         0x100db27e0 IOSLauncher + 14362592
	27  IOSLauncher                         0x100da7e00 IOSLauncher + 14319104
	28  libdyld.dylib                       0x000000018b5a959c <redacted> + 4
)

dSYM UUID: ACC8CD7F-2FB7-317C-9BF2-8BFB882794EF
CPU Type: arm64
Slide Address: 0x0000000100000000
Binary Image: IOSLauncher
Base Address: 0x0000000100060000

Fabric not working with latest version

I installed the lasted version of Fabric (3.8.4) and my app start with this error:
java.lang.UnsatisfiedLinkError: Failed to resolve native function 'CLSLog' for method public static native void org.robovm.pods.fabric.crashlytics.Crashlytics.log(java.lang.String,org.robovm.apple.foundation.NSObject,org.robovm.apple.foundation.NSObject,org.robovm.apple.foundation.NSObject,org.robovm.apple.foundation.NSObject,org.robovm.apple.foundation.NSObject) with @bridge annotation @org.robovm.rt.bro.annotation.Bridge(symbol=CLSLog, dynamic=false, optional=false) in library @org.robovm.rt.bro.annotation.Library(value=internal)
at org.robovm.rt.bro.Runtime.resolveBridge(Runtime.java)
at org.robovm.rt.bro.Bro.bind(Bro.java)
at org.robovm.objc.ObjCRuntime.bind(ObjCRuntime.java)
at org.robovm.pods.fabric.crashlytics.Crashlytics.(Crashlytics.java)
at com.clbbandao.game.ios.IOSLauncher.didFinishLaunching(IOSLauncher.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.$cb$application$didFinishLaunchingWithOptions$(IOSApplication.java)
at org.robovm.apple.uikit.UIApplication.main(UIApplication.java)
at org.robovm.apple.uikit.UIApplication.main(UIApplication.java)
at com.clbbandao.game.ios.IOSLauncher.main(IOSLauncher.java)

Google Play Game Services roboPods - required file gpg.framework is no longer available.

According to instructions, the Google Play Game Services robopods requires the gpg gramework version 5.1.1

Unfortunately this SDK is no longer supported by Google and is no longer available for download.
See: https://developers.google.com/games/services/downloads/sdks

Using the updated version provided results in the following error:

[ERROR] Undefined symbols for architecture x86_64:
[ERROR]   "_OBJC_CLASS_$_GPPSignIn", referenced from:
[ERROR]       objc-class-ref in gpg(GPGManager.o)
[ERROR]       objc-class-ref in gpg(GPGPlayerPickerViewControllerDelegateMock.o)
[ERROR]       objc-class-ref in gpg(GPGService.o)
[ERROR]       objc-class-ref in gpg(GPGPlayerServiceMock.o)
[ERROR]       objc-class-ref in gpg(libgpg.a-x86_64-master.o)
[ERROR] ld: symbol(s) not found for architecture x86_64
[ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app
org.apache.commons.exec.ExecuteException: Command '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /Users/julienvillegas/ios_sample_google_signin/ios/robovm-build/tmp/ios/ios/x86_64/IOSLauncher -arch x86_64 -Wl,-filelist,/Users/julienvillegas/ios_sample_google_signin/ios/robovm-build/tmp/ios/ios/x86_64/objects0 -L /Users/julienvillegas/.robovm-sdks/robovm-2.2.1-SNAPSHOT/lib/vm/ios/x86_64 -ObjC -Xlinker -alias_list -Xlinker /Users/julienvillegas/ios_sample_google_signin/ios/robovm-build/tmp/ios/ios/x86_64/aliased_symbols -exported_symbols_list /Users/julienvillegas/ios_sample_google_signin/ios/robovm-build/tmp/ios/ios/x86_64/exported_symbols -Wl,-no_implicit_dylibs -Wl,-dead_strip -F/Users/julienvillegas/ios_sample_google_signin/ios/libs -fPIC -mios-simulator-version-min=7.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.1.sdk -lrobovm-bc -force_load /Users/julienvillegas/.robovm-sdks/robovm-2.2.1-SNAPSHOT/lib/vm/ios/x86_64/librobovm-rt.a -lrobovm-debug -lrobovm-core -lgc -lpthread -ldl -lm -lz -liconv -lsqlite3 -framework Foundation -framework GoogleSignIn -framework GoogleAppUtilities -framework GoogleAuthUtilities -framework GoogleNetworkingUtilities -framework GoogleSymbolUtilities -framework GoogleUtilities -framework AddressBook -framework AssetsLibrary -framework CoreLocation -framework CoreMotion -framework CoreGraphics -framework CoreText -framework MediaPlayer -framework SafariServices -framework Security -framework SystemConfiguration -framework gpg -framework GoogleOpenSource -framework CoreData -framework CoreTelephony -framework QuartzCore -framework UIKit -framework OpenGLES -framework OpenAL -framework AudioToolbox -framework AVFoundation -lc++ -lz -force_load /Users/julienvillegas/.robovm/cache/ios/x86_64/release/Users/julienvillegas/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.4/934c60d5c1a1bd8fcf3583e3566e20b5a87184dd/gdx-platform-1.9.4-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a -force_load /Users/julienvillegas/.robovm/cache/ios/x86_64/release/Users/julienvillegas/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.4/934c60d5c1a1bd8fcf3583e3566e20b5a87184dd/gdx-platform-1.9.4-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libObjectAL.a -force_load /Users/julienvillegas/.robovm/cache/ios/x86_64/release/Users/julienvillegas/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-box2d-platform/1.9.4/434e3bea761fc709d546477d0b3913f5049e2bb8/gdx-box2d-platform-1.9.4-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx-box2d.a -force_load /Users/julienvillegas/.robovm/cache/ios/x86_64/release/Users/julienvillegas/.gradle/caches/modules-2/files-2.1/com.mobidevelop.robovm/robopods-google-apis-ios/2.2.1-SNAPSHOT/cfc68dd61b54fbb14063177b20114eb42af32a20/robopods-google-apis-ios-2.2.1-SNAPSHOT.jar.extracted/META-INF/robovm/ios/libs/libGGLCore.a -framework MobileCoreServices -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks' failed (Exit value: 1)
	at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:346)
	at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149)
	at org.robovm.compiler.util.Executor.exec(Executor.java:344)
	at org.robovm.compiler.util.ToolchainUtil.link(ToolchainUtil.java:371)
	at org.robovm.compiler.target.AbstractTarget.doBuild(AbstractTarget.java:269)
	at org.robovm.compiler.target.ios.IOSTarget.doBuild(IOSTarget.java:327)
	at org.robovm.compiler.target.AbstractTarget.build(AbstractTarget.java:263)
	at org.robovm.compiler.Linker.link(Linker.java:421)
	at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:467)
	at org.robovm.compiler.AppCompiler.build(AppCompiler.java:776)
	at org.robovm.idea.compilation.RoboVmCompilerThread.doCompile(RoboVmCompilerThread.java:60)
	at org.robovm.idea.compilation.RoboVmCompilerThread.run(RoboVmCompilerThread.java:66)

AdMob Native ads are not working

Hi!

I'm successfully using Google Mobile Ads robopod for banner, interstitial and rewarded ads.

While trying to set up native ads with:

NSMutableArray<GADAdLoaderOptions> optionsArray = new NSMutableArray<>();
optionsArray.add(videoOptions);

List <GADAdLoaderAdType> adTypes = new ArrayList<>();
adTypes.add(GADAdLoaderAdType.UnifiedNative);

adLoader = new GADAdLoader(TEST_ID, rootViewController, adTypes, optionsArray);

I get an error:

java.lang.Error: java.lang.reflect.InvocationTargetException
	at org.robovm.rt.bro.LazyGlobalValue.value(LazyGlobalValue.java:95)
	at org.robovm.apple.foundation.GlobalValueEnumeration.value(GlobalValueEnumeration.java:29)
	at org.robovm.pods.google.mobileads.GADAdLoaderAdType$AsListMarshaler.toNative(GADAdLoaderAdType.java:85)
	at org.robovm.pods.google.mobileads.GADAdLoader.$m$initWithAdUnitID$rootViewController$adTypes$options$(Native Method)
	at org.robovm.pods.google.mobileads.GADAdLoader.init(GADAdLoader.java)
	at org.robovm.pods.google.mobileads.GADAdLoader.<init>(GADAdLoader.java:52)
	at com.match.three.game.IOSNativeAds.updateLoader(IOSNativeAds.java:48)
	at com.teskin.NativeAd.updateLoader(NativeAd.java:72)
	at com.match.three.game.screens.NewMenuScreen.init(NewMenuScreen.java:147)
	at com.match.three.game.screens.NewMenuScreen.prepare(NewMenuScreen.java:59)
	at com.match.three.game.asset.MetaAssets.init(MetaAssets.java:14)
	at com.match.three.game.screen.splash.SplashScreen.onLevelsProgressLoaded(SplashScreen.java:36)
	at com.match.three.game.screen.splash.SplashScreen.render(SplashScreen.java:57)
	at com.badlogic.gdx.Game.render(Game.java:46)
	at com.badlogic.gdx.backends.iosrobovm.IOSGraphics.draw(IOSGraphics.java:354)
	at com.badlogic.gdx.backends.iosrobovm.IOSGraphics$1.draw(IOSGraphics.java:229)
	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:428)
	at com.match.three.game.IOSLauncher.main(IOSLauncher.java:33)
Caused by: java.lang.reflect.InvocationTargetException
	at java.lang.reflect.Method.internalInvoke(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:591)
	at org.robovm.rt.bro.LazyGlobalValue.value(LazyGlobalValue.java:89)
	... 19 more
Caused by: java.lang.UnsatisfiedLinkError: Optional @GlobalValue method org/robovm/pods/google/mobileads/GADAdLoaderAdType$Values.UnifiedNative()Lorg/robovm/apple/foundation/NSString; not bound
	at org.robovm.pods.google.mobileads.GADAdLoaderAdType$Values.UnifiedNative(Native Method)
	... 22 more

It looks like the problem is related to passing GADAdLoaderAdType's list to the GADAdLoader constructor.

I've tried few different admob framework versions with the same results.

Is it a robopod bug or am I doing something wrong?

Google mobile ads framework: 7.31.0
Robopods: 2.2.3-SNAPSHOT
RoboVM: 2.3.7

Robopods compatibility TODO

Robopods need to be backported and tested against the fork of RoboVM. Some also can do with some updates, and possibly remove some of the deprecated platforms.

Backport:

  • bolts
  • chartboost
  • fabric
  • facebook
  • flurry
  • google-analytics
  • google-apis
  • google-mobile-ads
  • google-play-games
  • google-signin
  • heyzap
  • parse
  • plugins
  • reachability

Test

  • bolts
  • chartboost
  • fabric
  • facebook
  • flurry
  • google-analytics
  • google-apis
  • google-mobile-ads
  • google-play-games
  • google-signin
  • heyzap
  • parse
  • plugins
  • reachability

Several unrecognized selectors

I tested this on an iPhone 7 with arm64. I'm using the pods version 2.2.1-SNAPSHOT. I downloaded the Play Games C++ SDK Version 2.1 and google sign in 4.0.0 and the google+ sdk 1.7.1.

I think the snapshots are not working. I am getting this error:
unrecognized selector sent to instance xxxxxxx
when I call this method:
GPGManager.getSharedInstance().setSnapshotsEnabled(true);
I looked through the bindings and everything looks correct. So I am at a loss to explain this.

I couldn't find the source of the second unrecognized selector but it happened after I succeeded logging in (the success callback was called but I left it blank to isolate the actual method call as the source of the issue and not something else in my code)
Here was the crash log:
Last Exception Backtrace: 0 CoreFoundation 0x1911451b8 __exceptionPreprocess + 124 1 libobjc.A.dylib 0x18fb7c55c objc_exception_throw + 56 2 CoreFoundation 0x19114c268 -[NSObject(NSObject) doesNotRecognizeSelector:] + 140 3 CoreFoundation 0x191149270 ___forwarding___ + 916 4 CoreFoundation 0x19104280c _CF_forwarding_prep_0 + 92 5 IOSLauncher 0x10162b20c -[GSDK_GTMSessionFetcherService fetcherDidCreateSession:] + 132 6 IOSLauncher 0x10161a990 -[GSDK_GTMSessionFetcher beginFetchMayDelay:mayAuthorize:] + 2580 7 IOSLauncher 0x101619f6c -[GSDK_GTMSessionFetcher beginFetchWithDelegate:didFinishSelector:] + 60 8 IOSLauncher 0x101449100 -[GIPNetworkImage fetchThumbnail] + 444 9 IOSLauncher 0x10144b420 -[GIPNetworkImageView setNetworkImage:] + 424 10 IOSLauncher 0x10158d6e8 -[GPGNetworkImageView loadNetworkImage] + 376 11 IOSLauncher 0x10158d4b8 -[GPGNetworkImageView setFrame:] + 464 12 UIKit 0x1970116d0 -[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] + 600 13 CoreFoundation 0x191031414 __53-[__NSArrayM enumerateObjectsWithOptions:usingBlock:]_block_invoke + 132 14 CoreFoundation 0x191031310 -[__NSArrayM enumerateObjectsWithOptions:usingBlock:] + 312 15 UIKit 0x197000178 -[UIView(Geometry) resizeSubviewsWithOldSize:] + 152 16 UIKit 0x196ff422c -[UIView(Geometry) setFrame:] + 968 17 IOSLauncher 0x101568394 -[GPGChipView setFrame:] + 164 18 UIKit 0x1970116d0 -[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] + 600 19 CoreFoundation 0x191031414 __53-[__NSArrayM enumerateObjectsWithOptions:usingBlock:]_block_invoke + 132 20 CoreFoundation 0x191031310 -[__NSArrayM enumerateObjectsWithOptions:usingBlock:] + 312 21 UIKit 0x197000178 -[UIView(Geometry) resizeSubviewsWithOldSize:] + 152 22 UIKit 0x196ff422c -[UIView(Geometry) setFrame:] + 968 23 IOSLauncher 0x1015d1164 -[GPGWelcomeBackToastView layoutSubviews] + 136 24 UIKit 0x196ff7a80 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1196 25 QuartzCore 0x1944a59d8 -[CALayer layoutSublayers] + 148 26 QuartzCore 0x19449a4cc CA::Layer::layout_if_needed(CA::Transaction*) + 292 27 QuartzCore 0x19449a38c CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32 28 QuartzCore 0x1944173e0 CA::Context::commit_transaction(CA::Transaction*) + 252 29 QuartzCore 0x19443ea68 CA::Transaction::commit() + 512 30 QuartzCore 0x19443f488 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 120 31 CoreFoundation 0x1910f20c0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 32 CoreFoundation 0x1910efcf0 __CFRunLoopDoObservers + 372 33 CoreFoundation 0x1910f0180 __CFRunLoopRun + 1024 34 CoreFoundation 0x19101e2b8 CFRunLoopRunSpecific + 444 35 GraphicsServices 0x192ad2198 GSEventRunModal + 180 36 UIKit 0x1970657fc -[UIApplication _run] + 684 37 UIKit 0x197060534 UIApplicationMain + 208 38 IOSLauncher 0x100eef410 [J]org.robovm.apple.uikit.UIApplication.main(ILorg/robovm/rt/bro/ptr/BytePtr$BytePtrPtr;Ljava/lang/String;Ljava/lang/String;)I + 212 39 IOSLauncher 0x100eee7c8 [J]org.robovm.apple.uikit.UIApplication.main([Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)V + 824 40 IOSLauncher 0x100eed900 [j]org.robovm.apple.uikit.UIApplication.main([Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)V[clinit] + 84 41 IOSLauncher 0x10085aa74 [J]ilmfinity.evocreo.main.IOSLauncher.main([Ljava/lang/String;)V + 136 42 IOSLauncher 0x10112e808 _call0 + 84 43 IOSLauncher 0x1011245f8 callVoidMethod + 92 44 IOSLauncher 0x101126e5c rvmCallVoidClassMethodA + 264 45 IOSLauncher 0x101126ef0 rvmCallVoidClassMethod + 28 46 IOSLauncher 0x10111ed54 rvmRun + 248 47 IOSLauncher 0x101114110 main + 276 48 libdyld.dylib 0x1900015b8 start + 4

I'm trying to work through this but any insight would be appreciated

Firebase Crashlytics and RoboVM

Does anyone manage to get Firebase Crashlytics work with RoboVM? The Fabric version is deprecated and moving towards Firebase Crashlytics.

GoogleMobileAds, file was built for unsupported file format

I am attempting to setup google-mobile-ads with my libgdx project. While attempting to create the IPA I get the following error:

Classpath entry /Users/imac/jenkins/workspace/Sight_Words_Racing_iOS/ios/build/resources/main does not exist
Classpath entry /Users/imac/jenkins/workspace/Sight_Words_Racing_iOS/ios/build/resources/main does not exist
Root pattern com.badlogic.gdx.physics.bullet.** matches no classes
ld: warning: ignoring file /Users/imac/jenkins/workspace/Sight_Words_Racing_iOS/ios/libs/GoogleMobileAds.framework/GoogleMobileAds, file was built for unsupported file format ( 0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74 ) which is not the architecture being linked (armv7): /Users/imac/jenkins/workspace/Sight_Words_Racing_iOS/ios/libs/GoogleMobileAds.framework/GoogleMobileAds
ld: warning: undefined base symbol '_GADAdSizeFromNSValue' for alias '__unhidden_GADAdSizeFromNSValue'
ld: warning: undefined base symbol '_IsGADAdSizeValid' for alias '__unhidden_IsGADAdSizeValid'
ld: warning: undefined base symbol '_CGSizeFromGADAdSize' for alias '__unhidden_CGSizeFromGADAdSize'
ld: warning: undefined base symbol '_kGADAdSizeSmartBannerLandscape' for alias '__unhidden_kGADAdSizeSmartBannerLandscape'
ld: warning: undefined base symbol '_GADAdSizeFullWidthPortraitWithHeight' for alias '__unhidden_GADAdSizeFullWidthPortraitWithHeight'
ld: warning: undefined base symbol '_GADAdSizeFromCGSize' for alias '__unhidden_GADAdSizeFromCGSize'
ld: warning: undefined base symbol '_GADAdSizeEqualToSize' for alias '__unhidden_GADAdSizeEqualToSize'
ld: warning: undefined base symbol '_kGADAdSizeSkyscraper' for alias '__unhidden_kGADAdSizeSkyscraper'
ld: warning: undefined base symbol '_kGADAdSizeSmartBannerPortrait' for alias '__unhidden_kGADAdSizeSmartBannerPortrait'
ld: warning: undefined base symbol '_kGADAdSizeLargeBanner' for alias '__unhidden_kGADAdSizeLargeBanner'
ld: warning: undefined base symbol '_kGADAdSizeBanner' for alias '__unhidden_kGADAdSizeBanner'
ld: warning: undefined base symbol '_GADAdSizeFullWidthLandscapeWithHeight' for alias '__unhidden_GADAdSizeFullWidthLandscapeWithHeight'
ld: warning: undefined base symbol '_kGADAdSizeFullBanner' for alias '__unhidden_kGADAdSizeFullBanner'
ld: warning: undefined base symbol '_NSStringFromGADAdSize' for alias '__unhidden_NSStringFromGADAdSize'
ld: warning: undefined base symbol '_kGADSimulatorID' for alias '__unhidden_kGADSimulatorID'
ld: warning: undefined base symbol '_kGADAdSizeInvalid' for alias '__unhidden_kGADAdSizeInvalid'
ld: warning: undefined base symbol '_kDFPSimulatorID' for alias '__unhidden_kDFPSimulatorID'
ld: warning: undefined base symbol '_kGADAdLoaderAdTypeNativeCustomTemplate' for alias '__unhidden_kGADAdLoaderAdTypeNativeCustomTemplate'
ld: warning: undefined base symbol '_kGADErrorDomain' for alias '__unhidden_kGADErrorDomain'
ld: warning: undefined base symbol '_kGADAdLoaderAdTypeNativeAppInstall' for alias '__unhidden_kGADAdLoaderAdTypeNativeAppInstall'
ld: warning: undefined base symbol '_NSValueFromGADAdSize' for alias '__unhidden_NSValueFromGADAdSize'
ld: warning: undefined base symbol '_kGADAdLoaderAdTypeNativeContent' for alias '__unhidden_kGADAdLoaderAdTypeNativeContent'
ld: warning: undefined base symbol '_kGADAdSizeMediumRectangle' for alias '__unhidden_kGADAdSizeMediumRectangle'
ld: warning: undefined base symbol '_kGADAdSizeLeaderboard' for alias '__unhidden_kGADAdSizeLeaderboard'
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_GADInterstitial", referenced from:
      objc-class-ref in libGGLAdMob.a(GGLContext+AdMob.o)
  "_OBJC_CLASS_$_GADBannerView", referenced from:
      objc-class-ref in libGGLAdMob.a(GGLContext+AdMob.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
:ios:createIPA FAILED

Here is my robovm.xml file:

<config>
  <executableName>${app.executable}</executableName>
  <mainClass>${app.mainclass}</mainClass>
  <os>ios</os>
  <arch>thumbv7</arch>
  <target>ios</target>
  <iosInfoPList>Info.plist.xml</iosInfoPList>
  <resources>
    <resource>
      <directory>../android/assets</directory>
      <includes>
        <include>**</include>
      </includes>
      <skipPngCrush>true</skipPngCrush>
    </resource>
    <resource>
      <directory>resources</directory>
    </resource>
  </resources>
  <forceLinkClasses>
    <pattern>com.badlogic.gdx.scenes.scene2d.ui.*</pattern>
    <pattern>com.badlogic.gdx.physics.bullet.**</pattern>
    <pattern>com.android.okhttp.HttpHandler</pattern>
    <pattern>com.android.okhttp.HttpsHandler</pattern>
    <pattern>com.android.org.conscrypt.**</pattern>
    <pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std</pattern>
    <pattern>com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi</pattern>
    <pattern>com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL</pattern>
    <pattern>org.apache.harmony.security.provider.cert.DRLCertFactory</pattern>
    <pattern>org.apache.harmony.security.provider.crypto.CryptoProvider</pattern>
    <pattern>com.badlogic.gdx.pay.ios.apple.PurchaseManageriOSApple</pattern>
  </forceLinkClasses>
  <libs>
    <lib>z</lib>
  </libs>
  <frameworkPaths>
    <path>libs</path>
  </frameworkPaths>
  <frameworks>
    <framework>UIKit</framework>
    <framework>OpenGLES</framework>
    <framework>QuartzCore</framework>
    <framework>CoreGraphics</framework>
    <framework>OpenAL</framework>
    <framework>AudioToolbox</framework>
    <framework>AVFoundation</framework>
    <framework>GoogleMobileAds</framework>
    <framework>GLKit</framework>
    <framework>CoreVideo</framework>
    <framework>CoreBluetooth</framework>
    <framework>CoreMotion</framework>
    <framework>SafariServices</framework>
    <framework>EventKit</framework>
    <framework>EventKitUI</framework>
  </frameworks>
  <weakFrameworks>
    <framework>AdSupport</framework>
    <framework>StoreKit</framework>
  </weakFrameworks>
</config>

I have put GoogleMobileAds.framework directory inside of ios/libs. I have tried both 7.11 and 7.12.1 of the GoogleMobileAds.framework. Both give the same error. I am running the 2.2.1-SNAPSHOT.

build.gradle:

    project.ext.roboVMVersion = "2.2.1-SNAPSHOT"
    project.ext.roboVMGradleVersion = "2.2.1-SNAPSHOT"
    project.ext.robopodsVersion = "2.2.1-SNAPSHOT"

Google Play Game Services RoboVM integration fails (GPGManager signIn:didSignInForUser:withError:]:[main] FAILED LOGGING INTO GOOGLE PLUS GAMES Error Domain=com.google.GIDSignIn)

I have created a sample application using MobiDevelope's Robopod to ilustrate the GPGS integration to help the community.

However at this points it fails. I believe that some of the dependency the robopods relies upon are now obsolete.

objc[36671]: Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x10fdca998) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x10fbec880). One of the two will be used. Which one is undefined.
2016-12-14 00:10:12.095 IOSLauncher[36671:1956480] [debug] IOSApplication: iOS version: 10.2
2016-12-14 00:10:12.096 IOSLauncher[36671:1956480] [debug] IOSApplication: Running in 64-bit mode
2016-12-14 00:10:12.098 IOSLauncher[36671:1956480] [debug] IOSApplication: scale: 3.0
2016-12-14 00:10:12.107 IOSLauncher[36671:1956480] [debug] IOSApplication: Status bar is not visible
2016-12-14 00:10:12.107 IOSLauncher[36671:1956480] [debug] IOSApplication: Total computed bounds are w=1242.0 h=2208.0
2016-12-14 00:10:12.148 IOSLauncher[36671:1956480] [debug] IOSGraphics: Display: ppi=264, density=1.65
2016-12-14 00:10:12.380 IOSLauncher[36671:1956480] [debug] IOSApplication: created
2016-12-14 00:10:12.386 IOSLauncher[36671:1956480] Attempted to configure [Identity, Analytics, AdMob, SignIn, AppInvite, CloudMessaging].
2016-12-14 00:10:12.387 IOSLauncher[36671:1956480] Successfully configured [].
2016-12-14 00:10:12.387 IOSLauncher[36671:1956480] Failed to configure [].
2016-12-14 00:10:12.387 IOSLauncher[36671:1956480] Subspecs not present, so not configured [Identity, Analytics, AdMob, SignIn, AppInvite, CloudMessaging].
2016-12-14 00:10:12.399 IOSLauncher[36671:1956480] [debug] IOSApplication: resumed
2016-12-14 00:10:12.400 IOSLauncher[36671:1956480] [debug] IOSApplication: Status bar is not visible
2016-12-14 00:10:12.400 IOSLauncher[36671:1956480] [debug] IOSApplication: Total computed bounds are w=1242.0 h=2208.0
2016-12-14 00:10:12.401 IOSLauncher[36671:1956480] [debug] IOSApplication: Status bar is not visible
2016-12-14 00:10:12.401 IOSLauncher[36671:1956480] [debug] IOSApplication: Total computed bounds are w=1242.0 h=2208.0
2016-12-14 00:10:12.420 IOSLauncher[36671:1956480] [info] ActionResolverIOS:signIn: Starting SignIn
2016-12-14 00:10:12.422 IOSLauncher[36671:1956480] [info] ActionResolverIOS:signIn: End SignIn
2016-12-14 00:10:13.148 IOSLauncher[36671:1956480] A new version of the Google Sign-In iOS SDK is available: https://developers.google.com/identity/sign-in/ios/release
2016-12-14 00:10:13.168 IOSLauncher[36671:1956480] [info] ActionResolverIOS:signIn: willDispatch
2016-12-14 00:10:13.170 IOSLauncher[36671:1956480] [info] ActionResolverIOS:signIn: didFinishGoogleAuth
2016-12-14 00:10:13.226 [Core] (Error) -[GPGManager signIn:didSignInForUser:withError:]:[main] FAILED LOGGING INTO GOOGLE PLUS GAMES Error Domain=com.google.GIDSignIn Code=-2 "keychain error" UserInfo={NSLocalizedDescription=keychain error}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.