Да. Android не сможет обработать developer.androd.com/about. Здесь под "специальный механизм" подразумевались инструменты, которые мы разобрали (Linkify, HTML...).
Вы все верно поняли. В случае, если ссылки отличаются одним лишь host (справедливо и для scheme, port), то можно использовать этот трюк с комбинациями. Что нам это даст? Если поменяется какой-нибудь другой атрибут (path, например), то нам не придется его менять в двух отдельных intent-filter. Очень удобно. Если же ссылки отличаются значительно, то я бы использовал предложенный вами вариант: два отдельных intent-filter под каждую уникальную ссылку.
В 7 истории предлагается не обрабатывать ссылки вида https://developer.android.com. Иногда их очень хочется обработать (выглядит как логичный URL для лендинга). Но как только мы убираем android:path* из <data />, то начинаются проблемы.
Но не все так плохо. Могу предложить два простых в реализации варианта:
android:path="" работает. Но для нее отображается ошибка AppLinkUrlError в студии. Я это сейчас на Pixel (Emulated) API 29 протестировал. Насчет других не могу сказать.
android:path="/" работает для https://developer.android.com/
Firebase Dynamic Links в нашем приложении нет. Если нужно генерировать динамические ссылки, а Google-инструменты не устраивают, то можно посмотреть на AppsFlyer.
Трюк с GET запросом и парсингом ответа интересный, но, как вы правильно подметили, небезопасный. Более того, я думаю, что он не безопасен даже для устройств с Google Services (кто знает, захочет ли Google слегка изменить тело ответа:)).
Можно поступить проще:
Использовать Firebase Dynamic Links для Google-устройств
kosikov2006. Согласен, это два не совершенно одинаковых продукта. Совместимость PG-R8 распространяется на уровне поддержки файлов с правилами, но не абсолютно всех правил и уж тем более их реализации (вспомните хотя бы сравнение оптимизаций (520 к 6)).
Если вас не устраивает R8, но пользоваться новыми версиями AGP все же хочется, то обратите внимание на инструкции: android.enableR8=false
android.enableR8.libraries=false
Если хотите совладать с R8, то попробуйте проанализировать содержимое папки app/build/outputs/mapping/(build)/, а именно файлов: configuration.txt, mapping.txt, resources.txt, seeds.txt, usage.txt. Там вы найдете артефакты PG/R8, по которым можно выяснить, как прошла оптимизация.
Да. Android не сможет обработать developer.androd.com/about. Здесь под "специальный механизм" подразумевались инструменты, которые мы разобрали (Linkify, HTML...).
Вы все верно поняли. В случае, если ссылки отличаются одним лишь host (справедливо и для scheme, port), то можно использовать этот трюк с комбинациями. Что нам это даст? Если поменяется какой-нибудь другой атрибут (path, например), то нам не придется его менять в двух отдельных intent-filter. Очень удобно. Если же ссылки отличаются значительно, то я бы использовал предложенный вами вариант: два отдельных intent-filter под каждую уникальную ссылку.
В 7 истории предлагается не обрабатывать ссылки вида https://developer.android.com. Иногда их очень хочется обработать (выглядит как логичный URL для лендинга). Но как только мы убираем android:path* из <data />, то начинаются проблемы.
Но не все так плохо. Могу предложить два простых в реализации варианта:
android:path="" работает. Но для нее отображается ошибка AppLinkUrlError в студии. Я это сейчас на Pixel (Emulated) API 29 протестировал. Насчет других не могу сказать.
android:path="/" работает для https://developer.android.com/
Firebase Dynamic Links в нашем приложении нет. Если нужно генерировать динамические ссылки, а Google-инструменты не устраивают, то можно посмотреть на AppsFlyer.
Трюк с GET запросом и парсингом ответа интересный, но, как вы правильно подметили, небезопасный. Более того, я думаю, что он не безопасен даже для устройств с Google Services (кто знает, захочет ли Google слегка изменить тело ответа:)).
Можно поступить проще:
Использовать Firebase Dynamic Links для Google-устройств
Использвать Huawei App Linking для Huawei-устройств (https://developer.huawei.com/consumer/en/agconnect/App-linking/)
и дальше обрабатывать их соответствующими SDK.
android.enableR8=false
android.enableR8.libraries=false
Уверен, у вас всё получится :)