是否可以在模拟设备上发现并运行第三方Android Instant Apps?

时间:2017-08-02 10:28:49

标签: android android-emulator android-instant-apps android-studio-3.0

我目前正在尝试了解Android即时应用。由于我没有任何支持它们的真实设备,我使用的是模拟器(来自Android Studio 3.0 Canary 9)。我可以在我模拟的Nexus 5x(使用Play商店)上成功运行“玩具”即时应用程序(like this),因此我相信我的开发环境配置正确。

但是,我很想知道第三方应用程序的发现过程,并了解用户体验是什么样的。由于缺乏合适的设备,我使用模拟的Chrome浏览器搜索启用了即时应用的网站(如Stack Exchange)。但这些搜索只给我通常的网站(不是即时应用程序)。

我非常感兴趣地阅读了this post,因为它似乎暗示工作。但是,这些答案似乎对我没有帮助。

  • 我在澳大利亚,应该是one of the countries where Instant Apps are supported
  • 正如一个答案中所建议的那样,我尝试发送应该在电子邮件中的即时应用中打开然后点击它们的链接,但它仍然只是将我发送到浏览器链接。
  • 关于DAL验证的答案很有意思,但在浏览器中打开链接时似乎不适用?

API 24和API 26模拟设备(两者都包括Play商店) 目前情况有所不同,可能是因为我一直在尝试各种各样的技巧来使其发挥作用。 (TLDR:没有什么对我有用。)

  • 在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设备在屏幕顶部显示“闪电”通知,说“开发模式有效”: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未列出即时应用(因此无需设置)

以下是一些其他细节,如果它们相关:

  • 我的开发机器运行Windows 10 (不是选择)
  • 模拟设备是带有Play商店的Nexus 5x(API 24和26)
  • 我也尝试了“x86”图像,因为有些人推荐它们用于Windows,但它们也没有用。 (这可能是因为Play Store没有附带“x86”图像,我认为这是Instant Apps所必需的?)
  • 我已在模拟设备上登录了真实的Google用户帐户。

通过我现在设置的开发环境,我可以继续开发自己的即时应用程序,将其部署在我自己的模拟设备上并进行测试。我真的很好奇,看看其他人的即时应用程序是如何工作的。另一篇文章(上面链接)表明我应该能够做到这一点。

所以这是我的问题:是否可以在模拟设备上发现并打开第三方即时应用程序(如果是,如何)?

2 个答案:

答案 0 :(得分:6)

  

是否可以在模拟设备上发现并打开第三方即时应用程序(如果是,如何)?

目前,没有。 :(有安全限制,防止模拟设备使用各种Google服务。如果您检查日志,您可能会发现类似于&#34的消息; io.grpc.StatusException:INVALID_ARGUMENT:应用程序凭据标头无效。请修复客户端传递有效的应用程序凭证头。"

  

在API 26模拟设备上,如果我输入adb shell pm list packages grep" com.google.android.instantapps.supervisor"什么都不返回

仅供参考,主管并非用于Android O.

答案 1 :(得分:4)

当您从应用链接助手启用 Android即时应用时,您要直接启动的活动(或您网站上的信息)会被修改如下: / p>

<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保存在网站根文件夹的.well-已知文件夹中<your_web_site>/.well-known/assetlinks.json < / p>

有一个反向工程工具,可让您修改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即时应用。如果我误解了你的问题,我道歉。