Как создать единый проект с FirebaseUI из библиотеки Android элегантно - PullRequest
3 голосов
/ 24 марта 2019

Я пытаюсь создать игру с FireBase Google и Facebook входа в систему.Я знаю, что можно использовать firebase с единицей, но я не хочу создавать оба метода входа по отдельности, когда существует что-то вроде FirebaseUI.

Итак, я создал плагин Android с аутентификацией FirebaseUI.Я проверил это в новом проекте Android и все работает отлично.Но когда я использую свой плагин в единстве, я должен добавить свой собственный gradle (mainTemplate.gradle) с зависимостями для firebaseUI.

Проблема в том, что в библиотеке firebase auth есть значение по умолчанию, и когда игра собирается, значения из моей библиотеки (default_web_client_id и т. д.) перезаписываются значением по умолчанию.

Почти через неделю я нашел решение, но надеюсь, что есть другой способ.

Мое решение: BuildAndroid-библиотека с Firebase, скопировать библиотеку (.aar) в Assets / Plugins, экспортировать проект Unity с этой библиотекой в ​​Idea, затем скопировать весь файл values.xml (созданный из google-services.json) и приложение Facebook appId в папку res вэкспортированный проект.(затем построить из Idea)

Это работает, но с помощью этого метода у меня есть default_web_client_id 3 раза в проекте (1x из моей библиотеки, 1x из зависимости FirebaseUI и 1x из скопированной values.xml, которая переопределяет их).Это не проблема, но я думаю, что в этом нет необходимости.

Есть ли более элегантный способ работы с библиотеками 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 голосов
/ 26 марта 2019

после еще нескольких экспериментов я обнаружил, что это зависит от порядка реализации, поэтому я переместил ** 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'
}

Надеюсь, что это кому-нибудь поможет.

...