(Unity)单独应用Firebase SDK时(以Firebase Unity 8.7.0为例进行说明)

若Unity编辑器版本低于2019.X版本,请优先使用以下补丁。

下载补丁:下载补丁

[替换文件夹和文件]

../Assets/ExternalDependencyManager

../Assets/Firebase

- 替换Firebase库后修改文件夹名称 

修改前:../Assets/Plugins/Android/Firebase

修改后:../Assets/Plugins/Android/FirebaseApp.androidlib

- 修改mainTemplate.gradle(因变更文件夹名导致的修改)

修改前: 

dependencies {
    ...
	implementation project('Firebase')

修改后:

dependencies {
    ...
	implementation project('FirebaseApp.androidlib')
    ...
  • GAMEPOT Unity插件包中有一些Firebase SDK,搭载单独的Firebase SDK时,会由于库重复而导致错误。 导入Firebase Unity SDK(FirebaseAnalytics.unitypackage/FirebaseMessaging.unitypackage + 计划添加的Firebase SDK)后,应使用Unity Play Services Resolver功能。 请在Unity的Assets > Play Services Resolver > Android Resolver > Settings菜单中选择Use Jetifier项目。 请在取消选择的状态下,对Enable Resolution On Build / Enable Auto-Resolution / Patch gradle Template.properties项目进行Resolver。 针对Unity的Assets > Play Services Resolver > IOS Resolver > Settings菜单中的Add use_frameworks! to podfile/Always add the main target to Podfile项目,请在取消选择的状态下进行iOS构建。

  1. 需要删除重复的库文件:

    ../Assets/Plugins/Android/libs/viewpager-1.0.0.aar 
    ../Assets/Plugins/Android/libs/versionedparcelable-1.1.0.aar 
    ../Assets/Plugins/Android/libs/transport-runtime-2.2.5.aar 
    ../Assets/Plugins/Android/libs/transport-backend-cct-2.3.3.aar 
    ../Assets/Plugins/Android/libs/transport-api-2.2.1.aar 
    ../Assets/Plugins/Android/libs/swiperefreshlayout-1.0.0.aar 
    ../Assets/Plugins/Android/libs/slidingpanelayout-1.0.0.aar 
    ../Assets/Plugins/Android/libs/print-1.0.0.aar 
    ../Assets/Plugins/Android/libs/play-services-tasks-17.2.0.aar 
    ../Assets/Plugins/Android/libs/play-services-stats-17.0.0.aar 
    ../Assets/Plugins/Android/libs/play-services-measurement-sdk-api-18.0.1.aar 
    ../Assets/Plugins/Android/libs/play-services-measurement-sdk-18.0.1.aar 
    ../Assets/Plugins/Android/libs/play-services-measurement-impl-18.0.1.aar 
    ../Assets/Plugins/Android/libs/play-services-measurement-base-18.0.1.aar 
    ../Assets/Plugins/Android/libs/play-services-measurement-api-18.0.1.aar 
    ../Assets/Plugins/Android/libs/play-services-measurement-18.0.1.aar 
    ../Assets/Plugins/Android/libs/play-services-cloud-messaging-16.0.0.aar 
    ../Assets/Plugins/Android/libs/play-services-basement-17.5.0.aar 
    ../Assets/Plugins/Android/libs/play-services-base-17.5.0.aar 
    ../Assets/Plugins/Android/libs/play-services-ads-identifier-17.0.0.aar 
    ../Assets/Plugins/Android/libs/localbroadcastmanager-1.0.0.aar 
    ../Assets/Plugins/Android/libs/loader-1.0.0.aar 
    ../Assets/Plugins/Android/libs/lifecycle-viewmodel-2.1.0.aar 
    ../Assets/Plugins/Android/libs/lifecycle-runtime-2.1.0.aar 
    ../Assets/Plugins/Android/libs/lifecycle-livedata-core-2.0.0.aar 
    ../Assets/Plugins/Android/libs/lifecycle-livedata-2.0.0.aar 
    ../Assets/Plugins/Android/libs/lifecycle-common-2.1.0.jar 
    ../Assets/Plugins/Android/libs/legacy-support-core-utils-1.0.0.aar 
    ../Assets/Plugins/Android/libs/legacy-support-core-ui-1.0.0.aar 
    ../Assets/Plugins/Android/libs/javax.inject-1.jar 
    ../Assets/Plugins/Android/libs/interpolator-1.0.0.aar 
    ../Assets/Plugins/Android/libs/fragment-1.1.0.aar 
    ../Assets/Plugins/Android/libs/firebase-messaging-21.0.1.aar 
    ../Assets/Plugins/Android/libs/firebase-measurement-connector-18.0.0.aar 
    ../Assets/Plugins/Android/libs/firebase-installations-interop-16.0.1.aar 
    ../Assets/Plugins/Android/libs/firebase-installations-16.3.5.aar 
    ../Assets/Plugins/Android/libs/firebase-iid-interop-17.0.0.aar 
    ../Assets/Plugins/Android/libs/firebase-iid-21.0.1.aar 
    ../Assets/Plugins/Android/libs/firebase-encoders-json-17.1.0.aar 
    ../Assets/Plugins/Android/libs/firebase-encoders-16.1.0.jar 
    ../Assets/Plugins/Android/libs/firebase-datatransport-17.0.10.aar 
    ../Assets/Plugins/Android/libs/firebase-core-18.0.1.aar 
    ../Assets/Plugins/Android/libs/firebase-components-16.1.0.aar 
    ../Assets/Plugins/Android/libs/firebase-common-19.5.0.aar 
    ../Assets/Plugins/Android/libs/firebase-annotations-16.0.0.jar 
    ../Assets/Plugins/Android/libs/firebase-analytics-18.0.1.aar 
    ../Assets/Plugins/Android/libs/drawerlayout-1.0.0.aar 
    ../Assets/Plugins/Android/libs/documentfile-1.0.0.aar 
    ../Assets/Plugins/Android/libs/customview-1.0.0.aar 
    ../Assets/Plugins/Android/libs/cursoradapter-1.0.0.aar 
    ../Assets/Plugins/Android/libs/core-runtime-2.0.0.aar 
    ../Assets/Plugins/Android/libs/core-common-2.1.0.jar 
    ../Assets/Plugins/Android/libs/core-1.3.0.aar 
    ../Assets/Plugins/Android/libs/coordinatorlayout-1.0.0.aar
    ../Assets/Plugins/Android/libs/collection-1.1.0.jar 
    ../Assets/Plugins/Android/libs/asynclayoutinflater-1.0.0.aar 
    ../Assets/Plugins/Android/libs/annotation-1.1.0.jar
    ../Assets/Plugins/IOS/Frameworks/nanopb.framework 
    ../Assets/Plugins/IOS/Frameworks/FirebaseNanoPB.framework 
    ../Assets/Plugins/IOS/Frameworks/FirebaseMessaging.framework 
    ../Assets/Plugins/IOS/Frameworks/FirebaseInstanceID.framework 
    ../Assets/Plugins/IOS/Frameworks/FirebaseCoreDiagnostics.framework 
    ../Assets/Plugins/IOS/Frameworks/FirebaseCore.framework 
    ../Assets/Plugins/IOS/Frameworks/FirebaseAnalytics.framework
  2. 确认../Assets/Plugins/Android/AndroidManifest.xml内是否应用FCM相关代码

....
</activity>

<!-- FCM [start]-->
       <service
            android:exported="false"
            android:name="io.gamepot.common.GamePotFCMIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
        <service
            android:exported="false"
            android:name="io.gamepot.common.GamePotFCMService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
<!-- FCM [End]-->

...
<meta-data android:name="android.max_aspect" android:value="2.1" />
  1. 应用Firebase Unity 9.4.0以上版本的情况下,构建iOS时的追加更改操作

在Unity编辑器中,从构建iOS后得到的结果中找到Podfile文件,并修改为如下格式

(如存在其他库,则添加:modular_headers => true部分) Firebase/FirebaseCore/GoogleUtilities应按照示例进行添加。

示例)

[现有]
...
target 'UnityFramework' do
  pod 'Firebase/Analytics', '9.4.0'
  pod 'Firebase/Core', '9.4.0'
  pod 'Firebase/Messaging', '9.4.0'
end

[修改]

target 'UnityFramework' do
  pod 'Firebase/Analytics', '9.4.0' , :modular_headers => true
  pod 'Firebase/Core', '9.4.0' , :modular_headers => true
  pod 'Firebase/Messaging', '9.4.0' , :modular_headers => true

  pod 'Firebase', :modular_headers => true
  pod 'FirebaseCore', :modular_headers => true
  pod 'GoogleUtilities', :modular_headers => true
end

打开终端后,进入Podfile文件所在路径执行pod install命令,生成Unity-iPhone.xcworkspace文件后,使用该项目进行构建

$ pod install

Firebase Unity 11.6.0 及更高版本

如果您的GamePot版本为3.5.3或更低版本,请先将补丁应用到3.6.3。

[Unity SDK 下载 ] : 请参考gamepotGuide-Gamepot v3.6.0.pdf。

  • GAMEPOT Unity插件包中存在部分Firebase SDK,安装单独的Firebase SDK时,因库重复而发生错误。 Firebase Unity SDK(FirebaseAnalytics.unitypackage / FirebaseMessaging.unitypackage + 想要添加的Firebase SDK)导入import后,必须使用Unity Play Services Resolver功能。

    • Andorid

      • Unity > Assets > Play Services Resolver > Android Resolver > Settings - Use Jetifier 必须选择项目。

      • Enable Resolution On Build / Enable Auto-Resolution / Patch gradle Template.properties 相应项目在解除选择的状态下进行Resolver

    • iOS

      • Unity > Assets > Play Services Resolver > IOS Resolver > Settings- Add use_frameworks! to podfile / Always add the main target to Podfile 请在取消勾选该选项的状态下进行 IOS 构建。

  1. 需要删除重复的库文件

    • 重复错误示例

    : Duplicate class android.support.v4.app.RemoteActionCompatParcelizer found in modules jetified-androidx.core.core-1.9.0-runtime (:androidx.core.core-1.9.0:) and jetified-core-1.3.2-runtime (:core-1.3.2:)

    [重复库列表]

    [Android/libs/..]
    annotations-13.0.jar
    core-1.3.2.aar
    core-ktx-1.3.2.aar
    annotation-experimental-1.0.0.aar
    core-runtime-2.1.0.aar
    core-common-2.1.0.jar
    collection-1.1.0.jar
    customview-1.0.0.aar
    documentfile-1.0.0.aar
    fragment-1.3.0.aar
    lifecycle-common-2.3.0.jar
    lifecycle-livedata-2.0.0.aar
    legacy-support-core-utils-1.0.0.aar
    loader-1.0.0.aar
    print-1.0.0.aar
    versionedparcelable-1.1.0.aar
    viewpager-1.0.0.aar
    lifecycle-livedata-2.0.0.aar
    lifecycle-runtime-2.3.0.aar
    localbroadcastmanager-1.0.0.aar
    transport-api-3.0.0.aar
    transport-backend-cct-3.1.7.aar
    transport-runtime-3.1.7.aar
    play-services-cloud-messaging-16.0.0.aar
    play-services-base-18.0.1.aar
    play-services-basement-18.1.0.aar
    play-services-ads-identifier-17.0.0.aar
    play-services-measurement-18.0.1.aar
    play-services-measurement-sdk-api-18.0.1.aar
    play-services-measurement-base-18.0.1.aar
    play-services-measurement-api-18.0.1.aar
    play-services-measurement-impl-18.0.1.aar
    play-services-measurement-sdk-18.0.1.aar
    play-services-stats-17.0.2.aar
    play-services-tasks-18.0.1.aar
    firebase-analytics-18.0.1.aar
    firebase-annotations-16.1.0.jar
    firebase-common-20.1.2.aar
    firebase-components-17.0.1.aar
    firebase-measurement-connector-19.0.0.aar
    firebase-datatransport-18.1.6.aar
    firebase-encoders-17.0.0.jar
    firebase-encoders-json-18.0.0.aar
    firebase-encoders-proto-16.0.0.jar
    firebase-iid-21.1.0.aar
    firebase-iid-interop-17.1.0.aar
    firebase-installations-17.0.2.aar
    firebase-installations-interop-17.0.2.aar
    firebase-messaging-23.0.8.aar
    jsr305-3.0.1.jar
    javax.inject-1.jar
    kotlin-stdlib-1.5.31.jar
    kotlin-stdlib-common-1.5.31.jar
    kotlin-stdlib-jdk7-1.5.31.jar
    kotlin-stdlib-jdk8-1.5.31.jar
    
    [Android/..]
    androidx.activity.activity-1.0.0.aar
    androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar
    androidx.lifecycle.lifecycle-livedata-core-2.0.0.aar
    androidx.savedstate.savedstate-1.0.0.aar 
  2. Assets/Plugins/Android/baseProjectTemplate 添加内容

    plugins {
       ... 
     // Add the dependency for the Crashlytics Gradle plugin
        id 'com.google.firebase.crashlytics' version "2.9.9" apply false
  3. ../Assets/Plugins/Android/gradleTemplate 添加内容

    org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
    org.gradle.parallel=true
    unityStreamingAssets=**STREAMING_ASSETS**
    
    # Android Resolver Properties Start
    android.useAndroidX=true
    android.enableJetifier=true
    # Android Resolver Properties End
    
    **ADDITIONAL_PROPERTIES**
    android.useAndroidX=true
    android.enableJetifier=true
  4. ../Assets/Plugins/Android/launcherTemplate 添加内容

    // Add the Crashlytics Gradle plugin
    apply plugin: 'com.google.firebase.crashlytics'
    
    dependencies {
    ...
    
    android {
         ...
       packagingOptions {
    		 ...
            exclude 'META-INF/kotlinx_coroutines_core.version'
        }
    }
  5. ../Assets/Plugins/Android/mainTemplate 添加内容

    android {
        ...
        packagingOptions {
            exclude 'META-INF/kotlinx_coroutines_core.version'
        }
    }
  6. ../Assets > Plugins > Andoird에 settingsTemplate 添加

    pluginManagement {
        repositories {
            **ARTIFACTORYREPOSITORY**
            gradlePluginPortal()
            google()
            mavenCentral()
        }
    }
    
    include ':launcher', ':unityLibrary'
    **INCLUDES**
    
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
        repositories {
            **ARTIFACTORYREPOSITORY**
            google()
            mavenCentral()
            flatDir {
                dirs "${project(':unityLibrary').projectDir}/libs"
            }
        }
    }

Last updated