(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构建。
需要删除重复的库文件:
../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
确认../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" />
应用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 构建。
需要删除重复的库文件
重复错误示例
: 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
Assets/Plugins/Android/baseProjectTemplate 添加内容
plugins { ... // Add the dependency for the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' version "2.9.9" apply false
../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
../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' } }
../Assets/Plugins/Android/mainTemplate 添加内容
android { ... packagingOptions { exclude 'META-INF/kotlinx_coroutines_core.version' } }
../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