(Решено) Конфликт версий Google Play Services

Программирование для iPhone & Android

(Решено) Конфликт версий Google Play Services

Сообщение Bober 12 авг 2018, 15:09

Ребята, после интеграции Google Play Services 0.9.50 не собирается apk.
В отдельном проекте сборка с GooglePlayServices проходит успешно и всё работает.
Но когда добавляю sdk в основную игру в которой уже есть плагины использующие сервисы получается ошибка:
Скрытый текст:
CommandInvokationFailure: Failed to re-package resources.
E:\AndroidSdk\android-sdk\build-tools\28.0.2\aapt.exe package --auto-add-overlay -v -f -m -J "gen" -M "AndroidManifest.xml" -S "res" -I "E:/AndroidSdk/android-sdk\platforms\android-28\android.jar" -F bin/resources.ap_ --extra-packages

Вот полный лог:https://drive.google.com/open?id=1MK14RIzdUiWN-FrcCvDNH_QOJXvNY6Fq:
Вот так выглядела папка Plugins/Android до добавления Google Play Services: http://prnt.sc/khb8t4
Вот так после: http://prntscr.com/khn430
Мой AndroidManifest.xml:
Синтаксис:
Используется csharp
<?xml version="1.0" encoding="utf-8"?>
<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:installLocation="preferExternal"
  android:theme="@android:style/Theme.NoTitleBar"
  package="com.Denis.MyPocketGirl"
  android:versionName="1.0"
  android:versionCode="1">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true">
    <meta-data android:name="PW_BROADCAST_PUSH" android:value="true" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <activity android:name="com.unity3d.player.UnityPlayerProxyActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="portrait">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <intent-filter>
        <action android:name="com.Denis.MyPocketGirl.MESSAGE" />
        <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
    </activity>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="portrait"></activity>
    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:launchMode="singleTask" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="portrait">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
      <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    </activity>

    <activity android:name="com.pushwoosh.richpages.RichPageActivity" />
    <activity android:name="com.pushwoosh.MessageActivity" />
    <activity android:name="com.pushwoosh.PushHandlerActivity" />
    <activity android:name="com.platoevolved.inappbillingunity.SubActivity"></activity>

    <receiver
                        android:name="com.google.android.gms.gcm.GcmReceiver"
                        android:exported="true"
                        android:permission="com.google.android.c2dm.permission.SEND" >
      <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <category android:name="com.Denis.MyPocketGirl" />
      </intent-filter>
    </receiver>

    <service
                        android:name="com.pushwoosh.GCMListenerService"
                        android:exported="false">
      <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
      </intent-filter>
    </service>

    <service
                        android:name="com.pushwoosh.GCMInstanceIDListenerService"
                        android:exported="false">
      <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
      </intent-filter>
    </service>

    <service
                        android:name="com.pushwoosh.GCMRegistrationService"
                        android:exported="false">
    </service>

    <receiver android:name="com.pushwoosh.local.AlarmReceiver" />
    <receiver android:name="com.pushwoosh.local.BootReceiver"
                                  android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
                                  android:enabled="true">
      <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
    </receiver>

  </application>
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="24" />

  <!--<uses-permission android:name="android.permission.RECEIVE_SMS" />
  <uses-permission android:name="android.permission.READ_SMS"/>
  <uses-permission android:name="android.permission.READ_CALENDAR"/>
  <uses-permission android:name="android.permission.READ_CONTACTS"/>
  -->
  <uses-permission android:name="android.permission.VIBRATE" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  <!-- Required permission to use in-app billing. -->
  <!--<uses-permission android:name="com.android.vending.BILLING" />-->

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <!--library-->
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <!-- GCM connects to Google Services. -->
  <uses-permission android:name="android.permission.INTERNET" />
  <!-- GCM requires a Google account. -->
  <!--<uses-permission android:name="android.permission.GET_ACCOUNTS" />-->
  <!-- Keeps the processor from sleeping when a message is received. -->
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <!--
          Creates a custom permission so only this app can receive its messages.
         
          NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE,
                        where PACKAGE is the application's package name.
        -->
  <permission android:name="com.Denis.MyPocketGirl.permission.C2D_MESSAGE" android:protectionLevel="signature" />
  <uses-permission android:name="com.Denis.MyPocketGirl.permission.C2D_MESSAGE" />
  <!-- This app has permission to register and receive data message. -->
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

  <!--<badge>-->
  <!--for Samsung-->
  <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
  <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>

  <!--for htc-->
  <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
  <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>

  <!--for sony-->
  <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>

  <!--for apex-->
  <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>

  <!--for solid-->
  <uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
  <!--</badge>-->
</manifest>

И ещё в каждой папке сервисов присутствует свой файлик AndroidManifest.xml
Используемые плагины: Pooshwoosh, Location/WeatherInfo, IAPPurchace, GoogleAnalytics
Вероятнее всего проблема в том, что разные плагины используют разные версии google play services.
Кому-то помогало удаление библиотеки android-support-v4
Как разобраться что именно именно удалить и как заставить плагины использовать обновленные библиотеки?
Какие изменения нужно внести в файл Манифеста?
Последний раз редактировалось Bober 13 авг 2018, 14:58, всего редактировалось 1 раз.
Bober
UNец
 
Сообщения: 19
Зарегистрирован: 16 июн 2011, 09:14

Re: Конфликт версий Google Play Services

Сообщение Valerich 13 авг 2018, 07:25

По логу 1 в 1 у вас.
Может поможет эта информация вам: https://gamedev.stackexchange.com/quest ... -resources
Там три ответа и все они могут дать вам результат.
Тут тоже по вашей проблеме много полезного:
https://forum.unity.com/threads/command ... es.448919/
Аватара пользователя
Valerich
UNITрон
 
Сообщения: 328
Зарегистрирован: 07 сен 2016, 11:24

Re: Конфликт версий Google Play Services

Сообщение Bober 13 авг 2018, 14:58

Решил проблему.
В отдельном проекте добавил Google Play Services и Pooshwoosh и получил эту же ошибку.
На сайте Pooshwoosh нашёл инструкцию как решить конфликт и файл AndroidManifest.xml
У GameAnalitics в мануале по интеграции тоже есть раздел как решать конфликт с Google Play Services. Инфа там устаревшая, но принцип понятен.
В итоге я удалил из игры всё содержимое папки Plugins, которое копилось несколько лет и провел интеграцию плагинов заново, начиная с Google Play Services.
Bober
UNец
 
Сообщения: 19
Зарегистрирован: 16 июн 2011, 09:14


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2