Возможно ли открыть и запустить сторонние приложения Android Instant на эмулированном устройстве?

В настоящее время я пытаюсь узнать об Android-приложениях Android. Поскольку у меня нет реальных устройств, которые их поддерживают, я использую эмулятор (из Android Studio 3.0 Canary 9). Я могу успешно запустить "игрушечные" мгновенные приложения (как это) на моем эмулированном Nexus 5x (с Play Store), поэтому я считаю, что моя среда разработки правильно настроена.

Однако мне было интересно узнать о процессе обнаружения сторонних приложений и узнать, как выглядит пользователь. Не имея подходящего моего устройства, я использовал эмулированный браузер Chrome для поиска сайтов (например, Stack Exchange), которые включали мгновенные приложения. Но эти поиски дают мне обычные сайты (не мгновенные приложения).

Я с большим интересом читаю этот пост, потому что кажется, что это должно сработать. Однако эти ответы, похоже, не помогли мне.

  • Я в Австралии, которая должна быть одна из стран, где поддерживаются Instant Apps.
  • Как было предложено в одном ответе, я попытался отправить ссылки, которые должны открываться в мгновенных приложениях в электронной почте, а затем нажимать на них, но он по-прежнему просто отправляет мне ссылку на браузер.
  • Ответ о проверке DAL интересен, но не кажется, что он должен применяться при открытии ссылок в браузере?

Эмулируемые устройства API 24 и API 26 (оба из которых включают Play Store) в настоящее время находятся в несколько разных условиях, вероятно, потому, что я пытался использовать всевозможные трюки, чтобы заставить его работать. (TL;DR: Ничто не работает для меня.)

  • На эмулированном устройстве API 24, если я набираю adb shell pm list packages grep "com.google.android.instantapps.supervisor", тогда он выводит package:com.google.android.instantapps.supervisor, как предлагает один ответ (но он все еще не работает).

  • У устройства API 24 установлено Google Play services for Instant Apps (version 1.9-sdk-155682639).

  • Устройство API 24 имеет уведомление "молния" в верхней части экрана с надписью "Режим разработки Active": URLs will be routed to Dev Manager in order to launch Instant Apps locally. Uninstall Dev Manager to disable Development Mode.

  • На устройстве API 24, Настройки → Google → Мгновенные приложения, для мгновенных приложений установлено значение true

  • На эмулированном устройстве API 26, если я набираю adb shell pm list packages grep "com.google.android.instantapps.supervisor" ничего не возвращает

  • На устройстве API 26 Google Play services for Instant Apps не установлен, и нет никакого уведомления о "молнии"

  • На устройстве API 26 в настройках → Google не отображается Instant Apps (так что нечего устанавливать)

Вот некоторые дополнительные сведения, если они актуальны:

  • Моя машина разработки запускает Windows 10 (не по выбору)
  • Эмулируемыми устройствами являются Nexus 5x (API 24 и 26) с Play Store.
  • Я также пробовал изображения "x86", так как некоторые люди рекомендовали их для Windows, но они тоже не работали. (Возможно, это связано с тем, что изображения "x86" не поставляются с Play Store, которые, как мне кажется, необходимы для Instant Apps?)
  • Я зарегистрировал реальную учетную запись пользователя Google на эмулируемых устройствах.

С созданной мной средой разработки я могу продолжить разработку своего собственного мгновенного приложения, развернуть его на своих собственных эмулируемых устройствах и протестировать его. Мне было просто любопытно посмотреть, как работают приложения для работы с другими людьми. И еще одно сообщение (связанное выше) предположило, что я должен это сделать.

Итак, вот мой вопрос: возможно ли открыть и открыть сторонние Instant Apps на эмулированном устройстве (и если да, как)?

Ответы

Ответ 1

Возможно ли открыть и открыть сторонние Instant Apps на эмулированном устройстве (и если да, как)?

В настоящее время нет.:( Существуют ограничения безопасности, позволяющие эмулированным устройствам использовать различные сервисы Google. Если вы проверите журнал, вы можете найти сообщение, подобное "io.grpc.StatusException: INVALID_ARGUMENT: Недопустимый заголовок учетных данных приложения. передать допустимый заголовок учетных данных приложения."

На эмулированном устройстве API 26, если я набираю adb shell pm list packages, grep "com.google.android.instantapps.supervisor" ничего не возвращает

FYI, Supervisor не используется для Android O.

Ответ 2

Когда вы включаете Android Instant App из App Link Assistant, ваша активность, которую вы хотите запустить непосредственно (или иметь информацию на своем веб-сайте), изменяется следующим образом:

<activity
            android:name=".View.Activity.AboutActivity"
            android:parentActivityName="com.example1.uddhav.stopwatch.View.Activity.AboutActivity">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:scheme="http"
                    android:host="your_web_address" />
            </intent-filter>
        </activity>

Следовательно, когда вы получаете сторонние приложения, вы должны изменить файл AndroidManifest.xml, как указано выше.

И чтобы иметь возможность связать вашу мгновенную активность (например, AboutActivity), вы должны сохранить сгенерированный assetlinks.json внутри .ws-известной папки корневой папки вашего сайта как <your_web_site>/.well-known/assetlinks.json

Существует обратное инженерное средство, которое позволяет вам изменять файл AndroidManifest.xml.

Примечание. Поскольку вам не нужен тег uses-permission для мгновенных приложений, вам не нужно его откладывать.

Поскольку вы не используете намерение AppLink, вам не нужно

// ATTENTION: This was auto-generated to handle app links.
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();

Итак, up to my understanding, можно запускать сторонние приложения Android на поддерживаемых устройствах эмулятора. Прошу прощения, если я неправильно понял ваш вопрос.