#android #firebase #unity3d
#Android #firebase #unity3d
Вопрос:
Я получаю обе ошибки:
Не удалось создать задачу ‘:processDebugGoogleServices’.
Не удается создать прокси-класс для абстрактного класса ‘GoogleServicesTask’.
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.google.gms:google-services:4.3.4'
**BUILD_SCRIPT_DEPS**}
}
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs 'libs'
}
}
}
// Android Resolver Repos Start
([rootProject] (rootProject.subprojects as List)).each {
ext {
it.setProperty("android.useAndroidX", true)
it.setProperty("android.enableJetifier", true)
}
}
([rootProject] (rootProject.subprojects as List)).each { project ->
project.repositories {
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\", "/")
maven {
url "https://maven.google.com"
}
maven {
url "https://deltadna.bintray.com/android" // Assets/DeltaDNA/Editor/Android/Dependencies.xml:8
}
maven {
url (unityProjectPath "/Assets/GeneratedLocalRepo/Firebase/m2repository") // Assets/Firebase/Editor/AnalyticsDependencies.xml:18, Assets/Firebase/Editor/AppDependencies.xml:22
}
mavenLocal()
jcenter()
mavenCentral()
}
}
// Android Resolver Repos End
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
**APPLY_PLUGINS**
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
implementation 'com.android.support:appcompat-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
implementation 'com.android.support:cardview-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
implementation 'com.android.support:customtabs:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
implementation 'com.android.support:support-v4:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
implementation 'com.deltadna.android:deltadna-sdk-notifications:4.10.0' // Assets/DeltaDNA/Editor/Android/Dependencies.xml:8
implementation ('com.facebook.android:facebook-applinks:[5,6)') {
exclude group: 'com.google.zxing'
}// Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:6
implementation ('com.facebook.android:facebook-core:[5,6)') {
exclude group: 'com.google.zxing'
}// Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:5
implementation ('com.facebook.android:facebook-login:[5,6)') {
exclude group: 'com.google.zxing'
} // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:7
implementation ('com.facebook.android:facebook-share:[5,6)') {
exclude group: 'com.google.zxing'
} // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:8
implementation 'com.google.android.gms:play-services-base:17.4.0' // Assets/Firebase/Editor/AppDependencies.xml:17
implementation 'com.google.firebase:firebase-analytics:17.6.0' // Assets/Firebase/Editor/AppDependencies.xml:15
implementation 'com.google.firebase:firebase-analytics-unity:6.16.0' // Assets/Firebase/Editor/AnalyticsDependencies.xml:18
implementation 'com.google.firebase:firebase-app-unity:6.16.0' // Assets/Firebase/Editor/AppDependencies.xml:22
implementation 'com.google.firebase:firebase-common:19.3.1' // Assets/Firebase/Editor/AppDependencies.xml:13
implementation 'com.parse.bolts:bolts-android:1.4.0' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:4
// Android Resolver Dependencies End
// ** revenuecat **
implementation ('com.revenuecat.purchases:purchases-hybrid-common:1.2.0') {
exclude group: 'com.android.billingclient', module: 'billing'
}
implementation 'com.android.support:multidex:1.0.3'
**DEPS**}
// Android Resolver Exclusions Start
android {
packagingOptions {
exclude ('/lib/armeabi/*' '*')
exclude ('/lib/mips/*' '*')
exclude ('/lib/mips64/*' '*')
exclude ('/lib/x86/*' '*')
exclude ('/lib/x86_64/*' '*')
}
}
// Android Resolver Exclusions End
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
multiDexEnabled true
applicationId '**APPLICATIONID**'
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
}
lintOptions {
abortOnError false
}
aaptOptions {
noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
}**SIGN**
buildTypes {
debug {
minifyEnabled **MINIFY_DEBUG**
useProguard **PROGUARD_DEBUG**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
jniDebuggable true
}
release {
minifyEnabled **MINIFY_RELEASE**
useProguard **PROGUARD_RELEASE**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD****SIGNCONFIG**
}
}**PACKAGING_OPTIONS****SPLITS**
**BUILT_APK_LOCATION**
**EXTERNAL_SOURCES**
bundle {
language {
enableSplit = false
}
density {
enableSplit = false
}
abi {
enableSplit = true
}
}
}**SPLITS_VERSION_CODE****REPOSITORIES****SOURCE_BUILD_SETUP**
Я видел несколько потоков, в которых говорилось, что я должен удалить apply plugin: 'com.google.gms.google-services'
или обновить classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.android.tools.build:gradle:4.0.0'
, но это не помогло мне и только вызвало больше проблем.
Также запуск ./gradlew :dependencies
ничего не показал.
Комментарии:
1. Можете ли вы поделиться более подробным журналом ошибок, какой версией Unity и какой версией Firebase SDK вы используете? У меня есть несколько догадок, но я не знаю, какие из них помогут догадкам: плагин Firebase Unity позволяет службам Google работать за вас, удаление
apply plugin: 'com.google.gms.google-services'
может это исправить. Убедитесь, что у вас есть google-сервисы. json в ваших ресурсах / каталоге и принудительное разрешение зависимостей в Unity 2020.1 и Firebase <= 6.15.2, строка useAndroidX не будет работать. Используйте это обходное решение: firebase.googleblog.com/2020/08 /…2. Я использую Unity 2019.1.13 и firebase 6.16.0. Я несколько раз пытался добавить firebase, используя firebase.google.com/docs/unity/setup но безуспешно. Сегодня я нашел ваш учебник на YouTube youtube.com /… но все равно получил те же результаты. удаление
apply plugin: 'com.google.gms.google-services'
, как вы предложили, дает мне много ошибок «повторяющегося класса» между firebase analytics и google.gms Кроме того, я могу сказать, что я не использую EDM4U, потому что это не помогло несколько раз и добавило другую зависимость, которую я там не хотел.3. Итак, вы захотите запустить EDM4U хотя бы один раз, чтобы он мог выполнять свою работу (зависимости для Unity не совпадают с зависимостями для Android в целом). Это обработает все материалы play services за вас (возможно, сбросит файл gradle и снова заполнит его). Убедитесь, что в настройках EDM4U у вас включены Jetifier и patch mainTemplate.gradle (хотя, похоже, у вас есть зависимости от Unity). Я предполагаю, что дублирующиеся файлы классов jetifier не запущены. Когда вы выполняете принудительное разрешение, вы получаете какие-либо ошибки? Можете ли вы попробовать создать gradleTemplate.properties?
4. Еще одна идея — не использовать плагин apply (опять же, SDK выполнит эту работу) и попробуйте выполнить следующее: firebase.googleblog.com/2020/08/… В частности, попробуйте сгенерировать файл gradleTemplate.properties и добавьте: android.useAndroidX=true android.enableJetifier=true
5. Когда я говорю «SDK выполнит эту работу». Плагин сервисов Google, помимо прочего, преобразует google-сервисы. json в google-services.xml в каталоге ресурсов. Плагин Firebase Unity выполняет то же самое автоматически, в качестве обходного пути для проектов Unity, которые не используют Gradle.
Ответ №1:
Сложно точно сказать, что происходит, но у меня есть несколько предложений, которые должны сработать.
Во-первых, избавьтесь от classpath 'com.google.gms:google-services:4.3.4'
under dependencies
и apply plugin: 'com.google.gms.google-services'
. Причина в том, что целью этого является чтение google-services.json
файла в каталоге вашего проекта и создание res/values/google-services.xml
файла (более подробная информация здесь). Firebase SDK для Unity сделает это автоматически, поместив этот файл под Assets/Plugins/FirebaseApp.androidlib/res/values/google-services.xml
. Все, что находится в Plugins/*.androidlib
файле, теперь автоматически переносится в проект Android, что делает этот шаг излишним (и часто вызывает ошибки как на стороне Unity, так и на стороне Android).
Поскольку вы использовали Unity для создания mainTemplate.gradle
файла и используете более новую версию Unity (2019.3 и выше), вам также потребуется сгенерировать gradleTemplate.properties
файл. Таким образом, мы можем включить AndroidX (замену библиотек поддержки Android, которые сейчас используются Firebase) и включить Jetifier (который обновит зависимости поддержки Google, которые, похоже, использует Facebook).
Отсюда, поскольку вы упомянули об отключении внешнего менеджера зависимостей для Unity (EDM4U), вы захотите принудительно разрешить свои зависимости от Android.
Чтобы это работало, вам нужно установить флажок «Исправлять mainTemplate.gradle», «Использовать Jetifier.» и «Исправлять gradleTemplate.properties» в настройках вашего устройства распознавания Android:
Если у вас возникли проблемы или вы не хотите запускать EDM4U, я пытаюсь сделать это добавить android.useAndroidX=true
и android.enableJetifier=true
gradleTemplate.properties
. Для моей собственной игры этот файл теперь выглядит так:
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
android.enableR8=**MINIFY_WITH_R_EIGHT**
**ADDITIONAL_PROPERTIES**
android.useAndroidX=true
android.enableJetifier=true
Напомним, что на этом этапе вы должны были удалить плагин play services и включить поддержку AndroidX и Jetifier. Вы должны иметь возможность либо создавать из Unity, либо экспортировать проект gradle и выполнять сборку из командной строки (последнее всегда является проблемой в Unity, поскольку они предпочитают не использовать gradlew, поэтому вы можете столкнуться с несовместимостью с вашим системным gradle).
Если это не поможет, я хотел бы увидеть более полный журнал ошибок, чтобы попытаться выяснить фактическую причину.
Комментарии:
1. Я не вижу в своих настройках опции для пользовательского шаблона свойств Gradle, также в моем AndroidResolverDependency.xml У меня есть эта строка
<setting name="gradlePropertiesTemplateEnabled" value="False" />
. Я попытался изменить его наTrue
надеясь, что это заставит параметр в настройках появиться, но безуспешно. Все остальное делается так, как вы сказали.2. Глупый вопрос: есть ли у вас какие-либо файлы jar или aar
Assets/Plugins/Android
? МожетAssets/Plugins/Android/<library>/
быть (например, Firebase или Facebook для <library>)? Если да, можете ли вы их удалить?3.Я обновился до Unity 2019.4.9 LTS, и теперь я могу видеть и включать пользовательский шаблон базовых свойств. Я добавил его, и строки
android.useAndroidX=true
android.enableJetifier=true
были добавлены автоматически с помощью распознавателя Android, но я получаю те же ошибки. Файл gradle также изменился после обновления версии Unity. Чтобы ответить на ваш вопрос, да, я удалил все файлы jarAssets/Plugins/Android
, никаких файлов ни под одним<library>
и построил проект, я все еще получаюduplicate class
ошибки.4. На данный момент у меня нет догадок. Обязательно попробуйте спросить у github.com/firebase/quickstart-unity/issues или firebase.google.com/support . Они определенно захотят увидеть больше ваших журналов сборки, и на GitHub будет очень полезно, если вы сможете повторить проблему в одном из проектов quickstart.
Ответ №2:
В вашем файле Gradle корневого уровня (на уровне проекта) (build.gradle) добавьте правила для включения плагина Gradle служб Google. Убедитесь, что у вас также есть репозиторий Maven от Google.
dependencies {
classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.android.tools.build:gradle:3.3.1'
}
И затем:
В файле Gradle вашего модуля (на уровне приложения) (обычно app / build.gradle) примените плагин Gradle служб Google:
apply plugin: 'com.google.gms.google-services'
Ответ №3:
У меня возникла проблема с combo Firebase
Unity
gradle
. Решается путем понижения gradle
.
Unity
->Edit
->Preference
->Gradle
к версии6.7.1
Кажется, что Firebase
это не может работать с более новыми gradle
версиями.
Скачать: Gradle