Resolve error : null ref in Google.JarResolver.Dependency.IsGreater

Hi community
I’m stuck for too long on this one, I would really, really appreciate a hand.

I’m on Unity 2022.3.47f1, on Android. Error occurs only when I use the “Custom main Gradle Template” and that I try to resolve with EDM4U (same with latest and older version)

It appeared when I installed the “Unity IAP” package while having GooglePlayGames SDK
Thanks for your time

Here is the error :

NullReferenceException: Object reference not set to an instance of an object
Google.JarResolver.Dependency.IsGreater (System.String version1, System.String version2) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/JarResolverLib/src/Google.JarResolver/Dependency.cs:196)
Google.JarResolver.Dependency+VersionComparer.Compare (System.String x, System.String y) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/JarResolverLib/src/Google.JarResolver/Dependency.cs:238)
GooglePlayServices.PlayServicesResolver.CheckGradleVersionForJetifier (System.Boolean useJetifier, System.String titlePrefix, System.Action`1[T] complete) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2621)
GooglePlayServices.PlayServicesResolver.CanEnableJetifierOrPromptUser (System.String titlePrefix, System.Action`1[T] complete) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2746)
GooglePlayServices.PlayServicesResolver.ResolveUnsafeAfterJetifierCheck (System.Action`1[T] resolutionComplete, System.Boolean forceResolution, System.Boolean isAutoResolveJob, System.Boolean closeWindowOnCompletion) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1752)
GooglePlayServices.PlayServicesResolver+<ScheduleResolve>c__AnonStorey21.<>m__44 () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1719)
GooglePlayServices.PlayServicesResolver.ExecuteNextResolveJob () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1576)
GooglePlayServices.PlayServicesResolver.ScheduleResolve (System.Boolean forceResolution, System.Boolean closeWindowOnCompletion, System.Action`1[T] resolutionCompleteWithResult, System.Boolean isAutoResolveJob) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1732)
GooglePlayServices.PlayServicesResolver.ExecuteMenuResolve (System.Boolean forceResolution) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2032)
GooglePlayServices.PlayServicesResolver.MenuForceResolve () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2056)

And here is my custom mainTemplate.gradle. (That’s the default one)

apply plugin: 'com.android.library'
**APPLY_PLUGINS**

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
**DEPS**}

android {
    namespace "com.unity3d.player"
    ndkPath "**NDKPATH**"
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }

    defaultConfig {
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
        consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
    }**PACKAGING_OPTIONS**
}
**IL_CPP_BUILD_SETUP**
**SOURCE_BUILD_SETUP**
**EXTERNAL_SOURCES**
2 Likes

I’ve made an Issue in Unity-jar-Resolver’s github : [Bug] NullReferenceException: Object reference not set to an instance of an object Google.JarResolver.Dependency.IsGreater · Issue #712 · googlesamples/unity-jar-resolver · GitHub

You will find more details and also a project to download
I struggled on it an entire week, I hope someone more skilled will unlock us

Solved here : [Bug] NullReferenceException: Object reference not set to an instance of an object Google.JarResolver.Dependency.IsGreater · Issue #712 · googlesamples/unity-jar-resolver · GitHub

Use unityPakcage instead of UPM registry and use minimum API 24 and target highest possible API (35 in my case)

1 Like

ExternalDependencyManager → Editor, in this folder you need to check how many dependencies are installed. Sometimes, there can be multiple dependencies installed, which can cause issues. For example:

Correct Result:
ExternalDependencyManager → Editor → 1.2.186

Incorrect Result:
ExternalDependencyManager → Editor → 1.2.186 and 1.2.166 / any other folder can be there"

In English, this means:

  • Check the ExternalDependencyManager → Editor folder to see if there are multiple versions of dependencies installed.

  • Having multiple versions can cause conflicts and issues.

  • Ideally, there should be only one version of the dependency installed, like 1.2.186.

  • But if there are multiple versions, like 1.2.186 and 1.2.166, it can cause problems.


If you have more than one dependency, you need to keep the latest folder and delete the rest. After that, add the keystore and ForceResolve