Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [...] Google Play Games Services ANE (http://www.flasher.ru/forum/showthread.php?t=212246)

ShockWave512 08.01.2016 13:16

Google Play Games Services ANE
 
Пытаюсь подключить сабж к игре на айр. Уже пару дней никаких результатов, все варианты молчат, никаких событий или логов нет.
Кто пользуется Google Play Games Services ANE?
Какой точно рабочий?
Уже руки опускаются (
- андроид 4.4.2
- разрешения стоят
- сам сервис в консоли в зеленом состоянии, ачивки и рейтинг добавлены
- айди приложения полностью совпадает с айди указанном в сервисе
- air 19 + flex sdk (apache flex 4.14.1)
- пробовал в основном от freshplanet и его модификации от @alextel69 и @overlawled
- смотрел логи (ADB logcat), вызов службы видно, затем закрывается окно сервиса
- в баг репорт ничего
- поставить под андроид сниффер сети, посмотреть что там в ответ приходит?

caseyryan 08.01.2016 13:20

Может я сейчас окажусь кэпом, но
Цитата:

You need to add the following in your AIR manifest, and replace YOUR_APP_ID by the app id of your Google Play Games Services (don't remove the "\ " at the beginning, otherwise it won't work):
Это требование соблюдено?

п.с. Сам еще не подключал, но тоже сегодня-завтра собираюсь заняться

ShockWave512 08.01.2016 13:24

Да, этот пункт везде указывается как очень важный.

illuzor 08.01.2016 13:48

От distriqt и от milkman гарантировано рабочие. Но от distriqt удобней.
От бесплатных ane толку мало. Гугл периодически что-нибудь обновляет и ane перестают работать. Платные же постоянно обновляются и у них есть техподдержка.

caseyryan 08.01.2016 14:30

Что-то меня берут большие сомнения, что от фреш планет не рабочие ane. Наверняка где-то ошибка в настройке

ShockWave512 08.01.2016 14:32

Судя по обсуждениям на гитхабе, действительно не рабочие.

Народ их как то оживляет вроде в форках, сейчас вот такую ветку очередную пытаюсь прикрутить.

вот этот парень говорит что у него рабочий реп - https://github.com/Laur3nt1u

Zebestov 08.01.2016 14:37

Главная проблема бесплатных ANE, которые опробовал лично я, это вылет некрасивого окошка с необработанной ошибкой связи с сервером гугла. Коробит такое. Платные рулят.

caseyryan 08.01.2016 15:50

Цитата:

Сообщение от ShockWave512 (Сообщение 1190611)
Судя по обсуждениям на гитхабе, действительно не рабочие.

Народ их как то оживляет вроде в форках, сейчас вот такую ветку очередную пытаюсь прикрутить.

вот этот парень говорит что у него рабочий реп - https://github.com/Laur3nt1u

Что-то с его ane проект даже не упаковывается

ShockWave512 08.01.2016 15:53

Только что упаковал, требовал айр 20, хоть падать стал с ошибкой, а не молча ))

ps - Кстати он сказал что обе АНЕ (ANE-Google-Play-***) надо подключать

caseyryan 08.01.2016 16:00

У меня тоже просил 20. Но у меня и так 20!)
Что ща ошибку выдает? У меня тот тоже падал с ошибкой, в которой ничего не было)

ShockWave512 08.01.2016 16:04

у меня тоже был 20, но че та я усомнился и скачал новый не бета (20,0,0,233), плюс слил с флекс апаш свежим, еще поднял swf version - 31

caseyryan 08.01.2016 16:06

Так что за ошибку то стал выдавать?

ShockWave512 08.01.2016 16:09

Просто
Цитата:

"В приложении "AppName" произошла ошибка."
"Ок."
сейчас копаю лог

caseyryan 08.01.2016 16:12

У меня то же самое)) Только у меня еще и с родным фреш плэнетовским так же падал.
А в гугл плей у тебя приложение apk залито? Пакет тот же указан в сервисах?

ShockWave512 08.01.2016 16:18

залито, имя пакета сто раз проверил

Добавлено через 13 минут
точка падения нашлась в логе, раньше этот тег вообще выпадал при сброке, ща собирается но ошибка опять есть
Цитата:

01-08 15:10:04.731 E/AndroidRuntime(18965): java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
********
01-08 15:10:04.733 W/ActivityManager( 749): Force finishing activity air.air.AppName/.AppEntry
Добавлено через 19 минут
Зело 20-й финал АЙР СДК задууууууууумчивый ))) раза в три 19-й медленней сборка ))

caseyryan 08.01.2016 16:42

Кстати, я тоже заметил, что в официальных доках от гугла это есть, а в описании ANE нет
https://developers.google.com/games/...dify_your_code

Цитата:

Open AndroidManifest.xml and enter your package name in the package attribute of the <manifest> element. If you are creating an Android game from scratch, make sure that you also add the following code inside the <application> element:
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>

ShockWave512 08.01.2016 16:47

Фу блин, заработал
обновить потребовал Google Play Games
вот манифест на всякий
Код AS3:

<android>
    <manifestAdditions><![CDATA[<manifest android:installLocation="auto">
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" />
 
        <application>
                <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
                <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="\ ***********" />
        </application>
 
        <activity android:name="com.freshplanet.googleplaygames.SignInActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
</manifest>]]></manifestAdditions>
  </android>

Добавлено через 14 минут

вот краткая инструкция по результатам копания ))
- обновить Google Play Games в Google Play
- подключаем в проект две ане отсюда и отсюда
- обновляем AIR SDK до 20-го релиза
- манифест в application.xml
PHP код:

<application
    <
meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <
meta-data android:name="com.google.android.gms.games.APP_ID" android:value="\ 7777777777777" />
</
application>
 
<
activity android:name="com.freshplanet.googleplaygames.SignInActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /> 

- в сервисах гугла добавляем приложение, все пункты должны быть зелеными (добавить рейтинг/ачивки), приложение опубликовано, у вас должен быть доступ если альфа/бета
- имя/id приложения и имя в сервисе должно строго совпадать (не id в application.xml, а id уже установленного приложения)
- код ас3
Код AS3:

// Initialize
AirGooglePlayGames.getInstance().addEventListener(AirGooglePlayGamesEvent.ON_SIGN_IN_SUCCESS, onSignInSuccess);
AirGooglePlayGames.getInstance().addEventListener(AirGooglePlayGamesEvent.ON_SIGN_OUT_SUCCESS, onSignOutSuccess);
AirGooglePlayGames.getInstance().addEventListener(AirGooglePlayGamesEvent.ON_SIGN_IN_FAIL, onSignInFail);
AirGooglePlayGames.getInstance().isSignedIn();
AirGooglePlayGames.getInstance().signIn();


caseyryan 08.01.2016 18:19

Цитата:

имя/id приложения и имя в сервисе должно строго совпадать (не id в application.xml, а id уже установленного приложения)
Вот этого не понял. А они отличаются что ли? И где его взять, если не из application?
Аа, туплю) это же числовое значение, которое генерируется в сервисах

Кстати, там есть один непонятный момент. Если создаешь отпечаток сертификата SHA1 в консоли разработчика для определенного пакета, а потом удаляешь приложение. То снова получить отпечаток для этого пакета или создать новый уже нельзя. Он выдает ошибку, что отпечаток для данного пакета уже существует, и дальше ничего делать не дает. Бред.

ShockWave512 08.01.2016 18:37

как раз речь не про число в "com.google.android.gms.games.APP_ID"

имя/id приложения это имя пакета в конфиге, на основе которого генерится имя пакета уже в гугло-консоли, при создании приложения, например был такой в конфиге
PHP код:

<application xmlns="http://ns.adobe.com/air/application/20.0">
  <
id>air.YOUR_APP_NAME</id

в гугло девелопер консоли уже будет "air.air.YOUR_APP_NAME", и к нему привязаны гугло гейм сервисы ( часто встречал рекомендации избегать "air" префикса в айди аппа, правильно примерно так - com.youdomen.app_name, тогда в консоле автоматом будет расово верный air.com.youdomain.app_name )

SHA1 я так понял для других типов авторизации, кстати он вроде привязан к сертификату p12, и естественно должен смениться после удаления, по моему это логично что после удаления консоль требует смены старого сертификата

caseyryan 09.01.2016 17:32

Цитата:

- имя/id приложения и имя в сервисе должно строго совпадать (не id в application.xml, а id уже установленного приложения)
Цитата:

в гугло девелопер консоли уже будет "air.air.YOUR_APP_NAME"
Это и есть название пакета, которое указано в application.xml. Если у тебя это не совпадает, значит у тебя какая-то путаница. У меня совпадают

Кстати, я отключил добавление .air к названиям пакетов. С этим префиксом некоторые ANE не работают. Например ANE для ВК

caseyryan 05.02.2016 10:55

Странное что-то. Второй ANE я не добавил, так как конфликтует, с уже установленными, а вот первый у меня даже окно не вызывает. Вообще мертвяк. И в логах пусто

ShockWave512 05.02.2016 11:00

ну так они работают в паре, ясно же сказано, никаких он окон без второго не вызовет

caseyryan 05.02.2016 11:03

Где это написано? Я не нашел в инструкции ни единого упоминания о втором.
Да и раз выдает конфликт, значит либы из второго уже вкомпилены. Можешь попробовать у себя без второго запустить? Тоже будет полный молчок без ошибок, или ошибка какая-нибудь вывалится?

ShockWave512 05.02.2016 11:06

я про эту инструкцию - http://www.flasher.ru/forum/showpost...9&postcount=17

Цитата:

- подключаем в проект две ане отсюда и отсюда

caseyryan 05.02.2016 11:08

Блин, тупик какой-то) Без второго ане не работает, и с ним не работает

ShockWave512 05.02.2016 11:10

я по моему тоже какой то ане выкидывал из-за него )) то ли фейсбучный то ли shareall

caseyryan 05.02.2016 11:12

У меня там уже не первый конфликт. Но обычно работает если выпилить конфликтующие jar либы из других ане. А тут я просто понять не могу что именно конфликт вызывает. Проблема в том, что косоль винды ограничена по длине текста, и поэтмоу там не месь текст ошибки видно

Все равно надо как-то заставить их все работать вместе) а то не толерантные какие-то либы :D

ShockWave512 05.02.2016 11:17

ищите еще раз в логе, там все соообщения есть

caseyryan 05.02.2016 12:47

Не, нет там нифига. Вообще даже намека. Сейчас специально сделал тестбэд в котором только 2 этих ANE. И точно такая же хрень. Пакеты точно добавлены в extensions, и в коде вызывается все правильно. Но в консоли вижу только сообщение о том, что метод инициализующий все это дело, и больше ничего, а Android Device Monitor вообще только прикосновения к экрану с этого приложения передает

ShockWave512 05.02.2016 13:08

что еще за консоль? приложение лучше запускать без дебага

вообще все проблемы нашел именно через лог, там были зарыты все этапы и даже описание решения ошибки

ок, давай попробую описать как я работал с логом (перед этим сделать все пункты в http://www.flasher.ru/forum/showpost...9&postcount=17)

1) доступ по ADB, папка - .logcat
2) если в рф физически, лучше работать через впн
3) нормально собранное, без дебага, установленное приложение
4) лог нужно забрать очень быстро, через пару секунд, лог сбрасывается в файл при доступе к нему,
5) запускаю апп, жду появления своего экрана и тут же зашел в папку и быстро скачал лог ( TOTALCOMMANDER с ADB плагином )
6) важна первая половина лога, вторая это работа гпу, в первой ищу точку запуска аппа, через пару десятков строк должно быть сообщение о ошибке
7) нужен ли прямой вызов AirGooglePlayGames.getInstance().signIn(); не уверен

caseyryan 05.02.2016 13:39

Цитата:

что еще за консоль? приложение лучше запускать без дебага
Консоль своя, просто текстовое поле поверх всего, чтобы инфа прямо на экран выводилась.
Но вот на счет дебага не понял почему. Всегда запускаю в режиме дебага.
Остальные пункты тоже какие-то смутные. У меня лог нормально весь выводится и все остальные гугл ANE работают. Работает и реклама от admob и платежка. Не работает только это, и сдается мне дело тут совсем не в vpn или дебаге. На форуме адоби пишут, что play-services либа собранная с JDK 1.7 не корректно работает

ShockWave512 05.02.2016 13:49

- если пункты смутные, значит ты их не понимаешь, а значит возможно некорректно делаешь
Цитата:

play-services либа собранная с JDK 1.7
- это обязательно должно быть видно в логе

- не важно уверен ты в пункте или нет, я всегда стараюсь отключить все возможности ошибки, в 50% случаев экономит время

caseyryan 05.02.2016 13:55

Смутные пункты это работа через vpn или сборка релиз билда.

Оказалось, что либа все таки кидается ошибками, просто происходит это только в момент первой инициализации, а не по повторному вызову, который я делал при нажатии кнопки
Собственно вот что он выкидывает
Цитата:

02-05 16:52:39.360: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.adobe.air.ActivityResultCallback>
02-05 16:52:39.360: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.adobe.air.ActivityResultCallback>
02-05 16:52:39.360: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.360: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.361: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.361: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.361: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.361: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.365: I/art(10039): Rejecting re-init on previously-failed class java.lang.Class<com.freshplanet.googleplaygames.ExtensionContext>
02-05 16:52:39.368: W/System.err(10039): java.lang.NoClassDefFoundError: com.freshplanet.googleplaygames.ExtensionContext
02-05 16:52:39.368: W/System.err(10039): at com.freshplanet.googleplaygames.Extension.createContext(Unknown Source)
02-05 16:52:39.368: W/System.err(10039): at com.adobe.air.customHandler.nativeOnTouchCallback(Native Method)
02-05 16:52:39.368: W/System.err(10039): at com.adobe.air.customHandler.handleMessage(customHandler.java:27)
02-05 16:52:39.368: W/System.err(10039): at android.os.Handler.dispatchMessage(Handler.java:102)
02-05 16:52:39.368: W/System.err(10039): at android.os.Looper.loop(Looper.java:135)
02-05 16:52:39.368: W/System.err(10039): at android.app.ActivityThread.main(ActivityThread.java:5263)
02-05 16:52:39.368: W/System.err(10039): at java.lang.reflect.Method.invoke(Native Method)
02-05 16:52:39.368: W/System.err(10039): at java.lang.reflect.Method.invoke(Method.java:372)
02-05 16:52:39.368: W/System.err(10039): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:939)
02-05 16:52:39.368: W/System.err(10039): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:734)


ShockWave512 05.02.2016 13:58

выглядит как будто на устройстве не стоят ГуглоСервисы

выкладывай весь лог файл

caseyryan 05.02.2016 14:15

Это и есть весь лог для этого приложения (за исключением момента нажатия кнопки, но там нет ничего интересног). Я не собираю данные со всего устройства, их там слишком много, а делаю фильтр по PID приложения.
Сервисы гугл установлены. Я это сделал еще при первых попытках запустить ANE от freshplanet.
Ошибка говорит что не найден класс com.freshplanet.googleplaygames.ExtensionContext
Но этот класс точно есть внутри ANE. Видимо оно криво собрано как-то. Надо попробовать пересобрать

ShockWave512 05.02.2016 14:28

можешь выслать апк и добавить меня в альфа тестеры?

я гляну у себя лог

скайп swa512

caseyryan 05.02.2016 14:37

АНЕ кривые какие-то. Вот это работает https://github.com/nitacawo/Google-p...awled-examples, без каких-либо дополнительных либ. Все вшито прямо сюда.
Как коннектится к гуглу еще не проверял. Но по крайней мере теперь вызовы пошли и ошибок из джавы не кидает.
А по поводу того, ты на 5м андроиде тестировал? Я на 5м, и нашел инфу, что оно как раз криво работает с 5м

ShockWave512 05.02.2016 14:42

если к гуглу не коннектиться, то как оно работает? что за ...

у меня на 4-м андроиде работает

caseyryan 05.02.2016 15:40

Цитата:

если к гуглу не коннектиться, то как оно работает? что за ...
Работает в смысле не падает с ошибками. Коннект к гуглу возвращает SingInFailEvent. А те ане вообще до этого не доходят
-----------
в общем, с тем набором ANE которые у меня уже подключены, не прокатит ни один способ. Так что буду собирать ANE с гугл сервисами самостоятельно. О результатах отпишусь потом

caseyryan 07.02.2016 19:49

Вложений: 1
Решил проблему сделав сборку ANE самостоятельно. Так как у меня используется реклама от fyber.com, а там тоже нужны гугл сервисы, я решил просто добавить в их ANE помимо рекламных сервисов еще и игровые. Скачал пакет с исходниками отсюда, распаковал все это добро в директорию без пробелов и русских букв (это важно), потом внутри в папке playservices создал папку air и в нее залил все содержимое AIR SDK 20, получилось так как на первом скрине
в файл gradle.properties добавил путь к эйру, у меня получилось просто
FLEX_SDK_PATH=air
дальше в папке playservices в файл gradle.build добавил в раздел dependencies строчку
Код AS3:

compile "com.google.android.gms:play-services-games:${version}"

Было так:
Код AS3:

dependencies {
    provided "com.android.support:support-v4:23.1.1"
    compile "com.google.android.gms:play-services-ads:${version}"
}

Стало так
Код AS3:

dependencies {
    provided "com.android.support:support-v4:23.1.1"
    compile "com.google.android.gms:play-services-ads:${version}"
    compile "com.google.android.gms:play-services-games:${version}"
}

Ну а дальше командой, описанной в README.md запустил сборку (gradle у меня уже была установлена вместе с android studio, если ее нет, то нужно сначала установить)

ПРОФИТ.
Сборка шла несколько минут, и на выходе я получил полностью валидный ANE со всеми нужными мне сервисами. Проверил в игре, все работает!


Часовой пояс GMT +4, время: 14:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.