• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Android Using Firebase with Google Play Games Extension (Android Dependency Question)

Mert

Member
Edit : In case anyone wonders I have a working extension that can be found on GMDevBlog
This is more likely related with Google libraries, but since I'm working on Game Maker Studio 2, I wanted to ask it here. I do not have enough experience on dependencies & importing stuff work in Java. I wish to learn.

Back to topic, I've managed to write a Firebase extension about remote configurations and analytics. My problem is that I cannot use it with Yoyogames' Google Play Services Extension.

Here's my RootFiles/build.gradle
Code:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0+'
        classpath 'com.google.gms:google-services:4.1.0'
    }
}
allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}
My Firebase plugin's gradle dependencies
Code:
compile 'com.google.firebase:firebase-core:16.0.4'
compile 'com.google.firebase:firebase-config:16.0.1'
Yoyogames' Google Play Services Extension Dependencies
Code:
   compile 'com.google.android.gms:play-services-games:11.8.0'
   compile 'com.google.android.gms:play-services-ads:11.8.0'
   compile 'com.google.android.gms:play-services-plus:11.8.0'
   compile 'com.google.android.gms:play-services-gcm:11.8.0'
   compile 'com.google.android.gms:play-services-auth:11.8.0'
   compile 'com.google.android.ads.consent:consent-library:1.0.3'
   compile fileTree(dir: 'libs', include: ['*.jar'])
}
repositories
{
  maven
  {
    url "https://maven.google.com"
  }
}
dependencies
{
The result is BUILD SUCCESSFUL. But as soon as app gets opened, an error is thrown and game closes itself. Here's a part of the log.
Code:
10-24 23:39:54.887 27148 27148 D AndroidRuntime: Shutting down VM
10-24 23:39:54.894 27148 27148 E AndroidRuntime: FATAL EXCEPTION: main
10-24 23:39:54.894 27148 27148 E AndroidRuntime: Process: com.sectionfive.flax, PID: 27148
10-24 23:39:54.894 27148 27148 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/auth/api/signin/internal/zzz;
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.google.android.gms.auth.api.signin.internal.zzo.<init>(Unknown Source)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.google.android.gms.auth.api.signin.internal.zzo.zzbs(Unknown Source)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.google.android.gms.auth.api.signin.internal.zzo.zzbr(Unknown Source)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.google.android.gms.auth.api.signin.GoogleSignIn.getLastSignedInAccount(Unknown Source)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.sectionfive.flax.GooglePlayServicesExtension.getCurrentAccountSignedIn(GooglePlayServicesExtension.java:390)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.sectionfive.flax.GooglePlayServicesExtension.isSignedIn(GooglePlayServicesExtension.java:395)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.sectionfive.flax.GooglePlayServicesExtension.onResume(GooglePlayServicesExtension.java:244)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.sectionfive.flax.RunnerActivity.onResume(RunnerActivity.java:1070)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1270)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.Activity.performResume(Activity.java:6977)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3455)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3518)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2773)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.ActivityThread.-wrap12(ActivityThread.java)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.os.Looper.loop(Looper.java:163)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:6205)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
10-24 23:39:54.894 27148 27148 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.auth.api.signin.internal.zzz" on path: DexPathList[[zip file "/data/app/com.sectionfive.flax-1/base.apk"],nativeLibraryDirectories=[/data/app/com.sectionfive.flax-1/lib/arm64, /data/app/com.sectionfive.flax-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
10-24 23:39:54.894 27148 27148 E AndroidRuntime:     ... 21 more
Now one part gets my attention is Caused by: ...java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.auth.api.signin.internal.zzz"

What am I doing wrong, what should I do ? Any tutorials appreciated.
 
Last edited:

Mert

Member
Update : I see a lot of people in stackoverflow has this issue with other places(on Unity, and on Android Studio). Anyone out there has the same issue ?
 

Jack S

Member
root files gradle

This is what we are using - min sdk is 16 as I recall for all the libraries

Code:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        maven {
            url 'https://maven.google.com'
        }
        mavenCentral()
        maven {
           url 'https://maven.fabric.io/public'
        }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0+'
        classpath 'com.google.gms:google-services:4.1.0'
        classpath 'io.fabric.tools:gradle:1.25.4'
        classpath 'com.google.firebase:firebase-plugins:1.1.1'
    }
}
allprojects {
    repositories {
        maven {
            url "https://maven.google.com"
        }
        jcenter()
    }
}
project files gradle


Code:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion ${YYAndroidCompileSDKVersion}
    buildToolsVersion '${YYAndroidBuildToolsVersion}'

    ${YYAndroidJavaMaxHeapSize}

    defaultConfig {
        applicationId "${YYAndroidPackageName}"
        minSdkVersion ${YYAndroidMinSDKVersion}
        targetSdkVersion ${YYAndroidTargetSDKVersion}
        multiDexEnabled true
    }

    signingConfigs {
        release {
            storeFile file("${YYAndroidKeyStoreFile}")
            storePassword "${YYAndroidKeyStoreFilePassword}"
            keyAlias "${YYAndroidKeyAlias}"
            keyPassword "${YYAndroidKeyPassword}"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.release
        }
    }

    ${YYAndroidSplits}
}

dependencies {
    android {
        lintOptions {
            abortOnError false
        }
    }
    compile 'com.android.support:support-v4:${YYAndroidSupportLibVersion}'
    compile 'com.android.support:multidex:1.0.3'
    compile files('libs/ini4j-0.5.2.jar')

    ${YYAndroidGradleDependencies}

}

apply plugin: 'com.google.gms.google-services'
 

Mert

Member
root files gradle

This is what we are using - min sdk is 16 as I recall for all the libraries

Code:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        maven {
            url 'https://maven.google.com'
        }
        mavenCentral()
        maven {
           url 'https://maven.fabric.io/public'
        }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0+'
        classpath 'com.google.gms:google-services:4.1.0'
        classpath 'io.fabric.tools:gradle:1.25.4'
        classpath 'com.google.firebase:firebase-plugins:1.1.1'
    }
}
allprojects {
    repositories {
        maven {
            url "https://maven.google.com"
        }
        jcenter()
    }
}
project files gradle


Code:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion ${YYAndroidCompileSDKVersion}
    buildToolsVersion '${YYAndroidBuildToolsVersion}'

    ${YYAndroidJavaMaxHeapSize}

    defaultConfig {
        applicationId "${YYAndroidPackageName}"
        minSdkVersion ${YYAndroidMinSDKVersion}
        targetSdkVersion ${YYAndroidTargetSDKVersion}
        multiDexEnabled true
    }

    signingConfigs {
        release {
            storeFile file("${YYAndroidKeyStoreFile}")
            storePassword "${YYAndroidKeyStoreFilePassword}"
            keyAlias "${YYAndroidKeyAlias}"
            keyPassword "${YYAndroidKeyPassword}"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.release
        }
    }

    ${YYAndroidSplits}
}

dependencies {
    android {
        lintOptions {
            abortOnError false
        }
    }
    compile 'com.android.support:support-v4:${YYAndroidSupportLibVersion}'
    compile 'com.android.support:multidex:1.0.3'
    compile files('libs/ini4j-0.5.2.jar')

    ${YYAndroidGradleDependencies}

}

apply plugin: 'com.google.gms.google-services'
Tried with this along with Crashlytics and Performance monitor(awesome). I still get the same error
Code:
googleplayservices extension onStart called
10-26 15:56:04.770 27204 27204 I yoyo    : onResume
10-26 15:56:04.780 27204 27204 I yoyo    : Setting vis flags to 5894
10-26 15:56:04.809 27204 27204 D AndroidRuntime: Shutting down VM
10-26 15:56:04.811 27204 27204 E AndroidRuntime: FATAL EXCEPTION: main
10-26 15:56:04.811 27204 27204 E AndroidRuntime: Process: com.sectionfive.flax, PID: 27204
10-26 15:56:04.811 27204 27204 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/auth/api/signin/internal/zzz;
I can use either Firebase or Google Play Games Extension alone, but not together.

Here's also my extension's code
Code:
package ${YYAndroidPackageName};

//Game Maker Studio 2 Packages
import ${YYAndroidPackageName}.R;
import com.yoyogames.runner.RunnerJNILib;
import ${YYAndroidPackageName}.RunnerActivity;

import android.util.Log;
import java.util.HashMap;
import java.lang.String;
//
import android.app.Activity;
import android.support.annotation.NonNull;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;

//Firebase Remote Configurations
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;

public class firebaselovesme extends RunnerActivity {
   
    private static final int EVENT_OTHER_SOCIAL = 70;
    private FirebaseRemoteConfig firebaseRemoteConfig;
   
    public void initFirebase() {
       
        ///Remote Configs Init
        firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setDeveloperModeEnabled(true)
                .build();
        firebaseRemoteConfig.setConfigSettings(configSettings);
        ///firebaseRemoteConfig.setDefaults(defaults); prepare the XML file later.
        Log.i("yoyo", "Remote Configs are initiated! Proceeding");
        fetchWelcome();
    }
   
    private void fetchWelcome() {

        long cacheExpiration = 3600;

        if (firebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) {
            cacheExpiration = 0;
        }

        firebaseRemoteConfig.fetch(cacheExpiration)
                .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {

                        if (task.isSuccessful()) {
                            Log.i("yoyo", "Values fetched and activated!");
                            firebaseRemoteConfig.activateFetched();
                        } else {
                            Log.i("yoyo", "Values are not fetched! Defaults will be used!");
                        }
                       
                        int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null, null);
                        RunnerJNILib.DsMapAddString( dsMapIndex, "firebasedata", "remote_configs" );
                        RunnerJNILib.DsMapAddString( dsMapIndex, "interstitial_id", firebaseRemoteConfig.getString("interstitial_id"));
                        RunnerJNILib.DsMapAddString( dsMapIndex, "rewarded_id", firebaseRemoteConfig.getString("rewarded_id"));
                        RunnerJNILib.DsMapAddString( dsMapIndex, "banner_id", firebaseRemoteConfig.getString("banner_id"));
                        RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL);

                    }
                });
    }
   
}
 
Last edited:
M

manjeet kumar

Guest
I am using your firebase extension with google play services and getting same error, i am able to create apk build with success but as soon as i open the game it crash immediately.
please help.
 
Top