如何优雅地使用Android库中的firebaseUI构建统一项目

时间:2019-03-24 20:05:58

标签: android firebase unity3d build firebaseui

我正在尝试使用Google和Facebook登录Firebase创建游戏。我知道可以将firebase与unity一起使用,但是当存在诸如FirebaseUI之类的东西时,我不想分别创建两个登录方法。

所以我用FirebaseUI身份验证创建了android插件。我在新的android项目中对其进行了测试,并且一切正常。但是,当我统一使用插件时,我必须添加我自己的gradle(mainTemplate.gradle),其中包含firebaseUI的依赖项。

问题是Firebase身份验证库中存在默认值,并且在构建游戏时,我的库中的值(default_web_client_id等)被默认值覆盖。

几乎在一周后我找到了解决方案,但我希望有另一种方法。

我的解决方案:使用firebase构建android库,将库(.aar)复制到Assets / Plugins,将此库的统一项目导出到Idea,然后复制整个文件values.xml(从google-services.json)和facebook appId到导出项目中的res文件夹。 (然后从Idea构建)

它正在工作,但是通过这种方法,我在项目中有3次default_web_client_id(来自我的库的1x,来自FirebaseUI依赖项的1x和来自复制的values.xml的1x)将它们覆盖。这不是问题,但我认为没有必要。

使用firebaseUI和android库还有更优雅的方法吗?

mainTemplate(相关性部分):

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    def room_version = "1.1.1"

    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version"
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'

    implementation "android.arch.lifecycle:extensions:1.1.1"
    implementation "android.arch.lifecycle:viewmodel:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.firebaseui:firebase-ui-auth:4.3.1'
    implementation 'com.facebook.android:facebook-android-sdk:4.41.0'

**DEPS**}

1 个答案:

答案 0 :(得分:0)

经过更多实验后,我发现它取决于实现顺序,因此我将** DEPS **向上移动,现在可以正常工作了。

因此解决方案很简单:

dependencies {
 implementation fileTree(dir: 'libs', include: ['*.jar'])
**DEPS**
 def room_version = "1.1.1"

 implementation "android.arch.persistence.room:runtime:$room_version"
 annotationProcessor "android.arch.persistence.room:compiler:$room_version"
 implementation 'com.google.code.gson:gson:2.8.2'
 implementation 'com.android.support:appcompat-v7:28.0.0'
 implementation 'com.android.support:support-v4:28.0.0'

 implementation "android.arch.lifecycle:extensions:1.1.1"
 implementation "android.arch.lifecycle:viewmodel:1.1.1"
 annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

 implementation 'com.google.firebase:firebase-core:16.0.8'
 implementation 'com.firebaseui:firebase-ui-auth:4.3.1'
 implementation 'com.facebook.android:facebook-android-sdk:4.41.0'
}

希望这对某人有帮助。