Сгенерил в личном профиле гугла api key для гугл-карт по гугловой инструкции (с прописыванием ограничений на имя пакета андроид-программы и хеш ключа разработчика), прописал его в сборщике мобильных приложений, а карты все равно не работают. При вызове из 1С функциональности отображения координат - открывается пустое окно без отрисовки карты (а через отладочную платформу - все ок).
Где я что мог упустить?
Теперь внимание, достаточно важный момент! Пока вы запускали свое приложение из-под мобильной платформы на мобильном устройстве, встроенная карта работала нормально. Но если вы собранное мобильное приложение попытаетесь запустить как самостоятельное приложение, то встроенная карта отображаться не будет. Потому что для каждого мобильного приложения необходимо получить ключ карты у Google и ввести его в Сборщике в группе “Мобильные приложения” в поле “Ключ для работы с картами Google”. У мобильной платформы 1С для Андройда такой ключ есть.
Reminder: To use the Maps JavaScript API:
All Maps JavaScript API requests must include an API key; we no longer support keyless access.
You must enable billing on each of your projects.
Перепроверял ключ разработчика на соответствие хэшу, перегенерил api key, давал приложению все возможные разрешения, пробовал отключать ограничения на api key в гугле. Куда еще глянуть?
Может быть дело в том, что не зарегистрирован аккаунт разработчика гугла (за который $25 единоразово)? Просто в сторе пока публиковать не планировалось.
А все мануалы (включая гугловые и блогеров всяких) говорят просто о создании api key через Google Cloud Console и все...
Подкинули идею собрать простейшее андроид приложение с моим ключом и посмотреть, что гугл говорит на попытку обращения к картам. Если ничего другое не поможет, то придется с этим заморочиться.
(13) Хм... Интересно. Типа гугл хочет для ограничений SHA1 по какому-то своему сертификату а не ключу разработчика? Странно, конечно. Но это надо аккаунт разработчика оплатить, как я понимаю. Ну и сейчас сделано так что ограничения опциональны. Я и читал где-то и знакомый андроид разраб посоветовал отключить ограничения для ключа чтобы затестить - должно работать. Но не работает :(
(13) Насколько я понял отсюда: https://www.py4u.net/discuss/613835, проблема по вашей ссылке появляется если в сторе опубликовано подписанное приложение. Тогда гугл сверяет хэш в ограничениях с этой подписью, а не подписью разработчика. Но у меня другая ситуация, да и с отключенными ограничениями не работает...
В общем работает.
Создал тестовую конфигурацию с вызовом карты.
Создал проект на console.cloud.google.com.
Получил ключ. Собрал apk с этим ключем.
И ... пустое окно карты.
Но сразу после полуночи все заработало.
(19) Важный вопрос для понимания: ограничения для api по имени пакета приложения и хэшу ключа разработчика указывать обязательно или это просто мера безопасности сейчас? Без указания ограничений - работает?
(20) это именно ограничение и указывать не обязательно. Да и не принимается хеш самоподписанного ключа, сгенерированного в 1С.
У меня ограничения отключены.
(21) Спасибо! Хоть в этом вопросе окончательная ясность.
А какие-то особенности для создания проекта в console.cloud.google.com есть?
Это можно для любого аккаунта гугл сделать и никаких привязок у самого проекта к apk нет?
Только активировать API Maps SDK for Android, создать ключ и убедиться что активирован биллинг?
(28) правильно. Этот ключ для всего проекта.
Но можно создать несколько ключей и настраивать ограничением для разных API. Но если нет ограничений, то для всех.
(24) О! А попробуй, плиз, с моим API key собрать, если несложно (потом поменяю). Хоть буду точно знать в аккаунте проблема или в платформе. key:AIzaSyDVJcyCUU87jLG4pcn-TbTF73bDPo8x29c
(31) О! И статистика пошла. Спасибо огромное за помощь! Теперь хоть понятно, куда копать. Я 90% был уверен, что проблема на стороне гугла, а оно вон оно чо. По результатам отпишусь.
(31) Почему-то не получается скачать. Видать проблемы со связью. Вяленько льется и потом обрывается.
Но я установил приложение на другой телефон и там аналогичная проблема. Так что не похоже, что дело в устройстве.
Вероятно со сборкой что-то не так или с разрешениями или с настройками мобильного приложения...
(37) у меня на 11 и 8 нормально работает. На 4.4 не установилось.
А вот китайский... он гуглосервисы поддерживает? Там сейчас с этими санкциями чехарда началась.
Помогла пересборка на новой мобильной платформе (последней 19 релиза). Что интересно - в новом сборщике добавили проверку на максимальную версию JDK (не старше 13 на текущий момент). В то время как на 18 мобильной платформе спокойно собиралось на JDK 14. Но сомневаюсь, что дело было в версии JDK. Ключ разработчика при этом я тоже перегенерировал, но до этого я тоже несколько раз это делал и без толку. Так что грешу на мобильную платформу, но достоверно непонятно, в чем была проблема.
Еще раз спасибо spacecraft, который помог выяснить что проблема была на моей стороне, а не гугла.
(41) вот как раз вполне возможно, что это было связано с версией JDK
Я вообще ничего специально не устанавливал, для сборки. Указал пути к уже давно установленным библиотекам вместе с android studio.
И даже не к jdk, а к jre 11. У меня проекты на kotlin с ней собираются. И в 1С нормально собрался проект.
Посмотрел полученный манифест. Так там ключ работы с картами указан по устаревшему, но еще поддерживаемому имени:
<met a-data android:name="com.google.android.maps.v2.API_KEY" ...
Так что возможно с новой версией jdk что-то поменялось, но в 1С еще не настроено для этого.
(42) Хм... А как структура андроидного манифеста может зависеть от версии jdk/jre? По-идее, никакой андроидной специфики там быть не может...
А! Вот еще что поменялось. Я не обратил внимание на какой ранее версии android sdk шла сборка. Она еще могла поменяться. В новой платформе просило именно 29 (10 андроид). И я именно ее и подсовывал. А что раньше бралось - не помню... И еще в SDK tools мог другой состав наклацать...
Я не обратил внимание на какой ранее версии android sdk шла сборка. Она еще могла поменяться. В новой платформе просило именно 29 (10 андроид). И я именно ее и подсовывал. А что раньше бралось - не помню... И еще в SDK tools мог другой состав наклацать...
Я тоже. Но изначально у меня там лежали SDK разных версий, а какую именно брал сборщик - я не обратил внимания.
А для новой мобильной платформы я обратил внимание что в сборщике прописано что ему нужна именно 29 версия. И тогда я для чистоты эксперимента снес все что было раньше и установил с нуля SDK только 29 версии.
(47) Я про то, что для старой мобильной платформы нужный мог быть другой. Это я просто к вопросу, что еще могло у меня поменяться, после чего заработало. Новые версии мобильной платформы ведь по-идее должны время от времени переползать на поддержку новых версий SDK.