web-dev-qa-db-fra.com

Multiple ComponentDiscoveryService dans AndroidManifest -> conflit de fusion

J'utilise Unity 2018.1.0f2 et Firebase 5.0.0 . Android NDK/SDK est installé ainsi que Java 8 172 . J'ai déjà effectué une résolution forcée pour Android Le projet de démarrage rapide pour la messagerie Firebase fonctionne bien, cependant, si j'essaie d'implémenter la messagerie firebase de la même manière dans mon projet, l'erreur suivante est générée:

> Error: [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.google.firebase.firebase-measurement-connector-impl-16.0.0\AndroidManifest.xml:10] Trying to merge incompatible /manifest/application/service[@name=com.google.firebase.components.ComponentDiscoveryService] element:

0x00000001414F00A9 (Unity) StackWalker::GetCurrentCallstack 0x00000001414F66B6 (Unity) StackWalker::ShowCallstack 0x000000014138F54B (Unity) GetStacktrace 0x0000000140888ADC (Unity) DebugStringToFile 0x0000000141F886A8 (Unity) DebugLogHandler_CUSTOM_Internal_Log 0x0000000052EE344B (Mono JIT Code) (wrapper managed-to-native) UnityEngine.DebugLogHandler:Internal_Log (UnityEngine.LogType,string,UnityEngine.Object) 0x0000000052EE3334 (Mono JIT Code) [DebugLogHandler.cs:9] UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])  0x0000000052EE2C35 (Mono JIT Code) [Logger.cs:47] UnityEngine.Logger:Log (UnityEngine.LogType,object)  0x0000000052EE2953 (Mono JIT Code) [Debug.bindings.cs:117] UnityEngine.Debug:LogError (object)  0x000000004BE988E0 (Mono JIT Code) UnityEditor.Android.PostProcessor.PostProcessRunner:RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext) 0x0000000052EB7664 (Mono JIT Code) UnityEditor.Android.PostProcessAndroidPlayer:PostProcess (UnityEditor.BuildTarget,string,string,string,string,string,string,UnityEditor.BuildOptions,UnityEditor.RuntimeClassRegistry,UnityEditor.Build.Reporting.BuildReport) 0x0000000052EB613A (Mono JIT Code) UnityEditor.Android.AndroidBuildPostprocessor:PostProcess (UnityEditor.Modules.BuildPostProcessArgs,UnityEditor.BuildProperties&) 0x0000000052EB5822 (Mono JIT Code) [PostprocessBuildPlayer.cs:285] UnityEditor.PostprocessBuildPlayer:Postprocess (UnityEditor.BuildTargetGroup,UnityEditor.BuildTarget,string,string,string,int,int,UnityEditor.BuildOptions,UnityEditor.RuntimeClassRegistry,UnityEditor.Build.Reporting.BuildReport) 0x0000000052EB5C6E (Mono JIT Code) (wrapper runtime-invoke) <Module>:runtime_invoke_void_int_int_object_object_object_int_int_int_object_object (object,intptr,intptr,intptr) 0x00007FF8C318668F (mono) [mini.c:4937] mono_jit_runtime_invoke  0x00007FF8C30D8A95 (mono) [object.c:2623] mono_runtime_invoke  0x0000000140BDDC2A (Unity) scripting_method_invoke 0x0000000140BD67F0 (Unity) ScriptingInvocation::Invoke 0x0000000140D5A82F (Unity) CallMono 0x0000000140D653E0 (Unity) PostprocessPlayer 0x0000000140D5DC29 (Unity) DoBuildPlayer_PostBuild 0x0000000140D5D3CC (Unity) DoBuildPlayer 0x0000000140D50787 (Unity) BuildPlayer 0x00000001415164A0 (Unity) BuildPipeline_CUSTOM_BuildPlayerInternalNoCheck 0x000000004BE317E7 (Mono JIT Code) (wrapper managed-to-native) UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck (string[],string,string,UnityEditor.BuildTargetGroup,UnityEditor.BuildTarget,UnityEditor.BuildOptions,bool) 0x000000004BE30E30 (Mono JIT Code) [BuildPlayerWindowBuildMethods.cs:165] UnityEditor.BuildPlayerWindow/DefaultBuildMethods:BuildPlayer (UnityEditor.BuildPlayerOptions)  0x000000004BE2D48B (Mono JIT Code) [BuildPlayerWindowBuildMethods.cs:89] UnityEditor.BuildPlayerWindow:CallBuildMethods (bool,UnityEditor.BuildOptions)  0x000000004BE2CDEC (Mono JIT Code) [BuildPlayerWindow.cs:181] UnityEditor.BuildPlayerWindow:BuildPlayerAndRun (bool)  0x000000004BE2C98C (Mono JIT Code) [BuildPlayerWindow.cs:175] UnityEditor.BuildPlayerWindow:BuildPlayerAndRun ()  0x00000000008F11DE (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr) 0x00007FF8C318668F (mono) [mini.c:4937] mono_jit_runtime_invoke  0x00007FF8C30D8A95 (mono) [object.c:2623] mono_runtime_invoke  0x0000000140BD4CF7 (Unity) CallStaticMonoMethod 0x0000000140BD4A7E (Unity) CallStaticMonoMethod 0x0000000140D5732F (Unity) BuildPlayerWithLastSettings 0x00000001415B8EC1 (Unity) ResourceDrivenMenus::Execute 0x000000014133EDC8 (Unity) MenuController::ExecuteMenuItem 0x00000001415C49E5 (Unity) ProcessMainWindowMessages 0x00000001415A1DF5 (Unity) ContainerWindow::ContainerWndProc 0x00007FF8EE2B6CC1 (USER32) CallWindowProcW 0x00007FF8EE2B6693 (USER32) DispatchMessageW 0x00000001415C4261 (Unity) MainMessageLoop 0x00000001415C65DC (Unity) WinMain 0x000000014271FDA7 (Unity) __scrt_common_main_seh 0x00007FF8EE913034 (KERNEL32) BaseThreadInitThunk 0x00007FF8EF361431 (ntdll) RtlUserThreadStart

Edit: trace de pile supplémentaire

CommandInvokationFailure: Unable to merge Android manifests.  C:/Program Files/Java/jdk1.8.0_172\bin\Java.exe -Xmx2048M
-Dcom.Android.sdkmanager.toolsdir="E:/AndroidSDK\tools" -Dfile.encoding=UTF8 -jar "E:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar"
-

stderr[ Error: [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.google.firebase.firebase-measurement-connector-impl-16.0.0\AndroidManifest.xml:10] Trying to merge incompatible /manifest/application/service[@name=com.google.firebase.components.ComponentDiscoveryService] element:   <service
      @Android:name="com.google.firebase.components.ComponentDiscoveryService">
      <meta-data
--        @Android:name="com.google.firebase.components:com.google.firebase.iid.Registrar" <service
      @Android:name="com.google.firebase.components.ComponentDiscoveryService">
      <meta-data
++        @Android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar" ] stdout[ [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.Android.support.support-core-ui-26.1.0\AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=Android.support.VERSION] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.Android.support.support-core-utils-26.1.0\AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=Android.support.VERSION] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.Android.support.support-fragment-26.1.0\AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=Android.support.VERSION] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.Android.support.support-media-compat-26.1.0\AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=Android.support.VERSION] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.Android.support.support-v4-26.1.0\AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=Android.support.VERSION] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.google.firebase.firebase-analytics-impl-16.0.0\AndroidManifest.xml:15] Skipping identical /manifest/application/service[@name=com.google.Android.gms.measurement.AppMeasurementService] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\path\Temp\StagingArea\Android-libraries\com.google.firebase.firebase-analytics-impl-16.0.0\AndroidManifest.xml:12] Skipping identical /manifest/application/receiver[@name=com.google.Android.gms.measurement.AppMeasurementReceiver] element. ] exit code: 1 UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommand (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

J'ai examiné tous les manifestes Android et trouvé deux mêmes déclarations dans 

E:\path\Temp\StagingArea\Bibliothèques Android\com.google.firebase.firebase-iid-16.0.0\AndroidManifest.xml

<service Android:name="com.google.firebase.components.ComponentDiscoveryService" >
    <meta-data
        Android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
        Android:value="com.google.firebase.components.ComponentRegistrar" />
</service>

et

E:\chemin\Temp\StagingArea\Bibliothèques Android\com.google.firebase.firebase-mesure-connecteur-impl-16.0.0\AndroidManifest.xml

<service Android:name="com.google.firebase.components.ComponentDiscoveryService" >
    <meta-data
        Android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
        Android:value="com.google.firebase.components.ComponentRegistrar" />
</service>

Y at-il un moyen de résoudre ce problème par moi-même, est-ce que je manque quelque chose ou est-ce un bug firebase?

4
Codehai

La solution derrière cela semble être la variable du nom du paquet, que l'unité ne remplacera pas par le nom du paquet dans les dernières versions . https://forum.unity.com/threads/Android-gradle- impossible-read-packagename-from-gradleout-src-main-androidmanifest-xml.524587 / propose un correctif temporaire en renommant la variable package="${applicationId}" dans le fichier "\Assets\Plugins\Android\AndroidManifest.xml" à la ligne 4 avec le nom du package actuel
Par exemple: package="com.MyCompany.MyGame"

L'équipe de Firebase est maintenant consciente du problème posé par la version 2018 et publiera bientôt un correctif.

0
Codehai

Vidéo youtube comment j'ai corrigé ce bugs

https://youtu.be/3Lh6Ci98kfU

1
Angelic

Votre fichier APK peut contenir un seul fichier AndroidManifest.xml, mais votre projet Android Studio peut en contenir plusieurs fournis par le jeu de sources principal, les variantes de construction et les bibliothèques importées. Ainsi, lors de la création de votre application, la génération Gradle fusionne tous les fichiers manifestes en un seul fichier manifeste intégré à votre APK.

Voir Fusionner plusieurs fichiers manifestes

0
RonTLV

Firebase Unity 5.2.0 Le SDK intègre Play Services Resolver 1.2.79 qui résout ce problème.

0
stewartmiles

Après avoir pris une semaine entière de moi, je l'ai trouvé. Le problème ne concerne pas la version minimale du SDK ou autre chose dans ce cas. Il y avait un problème et je l'ai signalé à l'équipe de Firebase. Au moment de la rédaction de cette réponse, ils ont publié Firebase 5.1.0 et tout fonctionne correctement.

SOLUTION: Construisez votre jeu avec le générateur Gradle dans les options de construction, Internal constructeur de l'unité ne fonctionne pas.

0
ebrahim.mr

J'ai trouvé

<service Android:name="com.google.firebase.components.ComponentDiscoveryService" >

en 3 fichiers aar, vous pouvez voir en image ici

Je fusionne toutes les balises de service ci-dessus dans un fichier manifeste Android et je les supprime dans un autre comme ceci alors l'unité peut construire APK ok .

J'espère que cela peut aider quelqu'un, désolé pour mon mauvais anglais.

0
Angelic