14

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

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

我怀着极大的兴趣阅读了这篇文章,因为它似乎表明这应该可行。但是,这些答案似乎对我没有帮助。

  • 我在澳大利亚,应该是支持 Instant Apps 的国家之一
  • 正如一个答案中所建议的那样,我尝试发送应该在电子邮件中的即时应用程序中打开的链接,然后单击它们,但它仍然只是将我发送到浏览器链接。
  • 关于 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 设备上,Settings -> Google -> Instant Apps,instant apps 设置为 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 Store 的 Nexus 5x(API 24 和 26)
  • 我还尝试了“x86”图像,因为有些人推荐它们用于 Windows,但它们也不起作用。(这可能是因为“x86”图像没有随 Play 商店提供,我认为这是 Instant Apps 所必需的?)
  • 我在模拟设备上登录了真实的 Google 用户帐户。

有了我现在设置的开发环境,我可以继续开发自己的即时应用程序,将其部署在自己的模拟设备上并进行测试。我真的很想看看其他人的即时应用程序是如何工作的。另一个帖子(上面链接)建议我应该能够做到这一点。

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

4

2 回答 2

6

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

目前,没有。:( 存在防止模拟设备使用各种 Google 服务的安全限制。如果您检查日志,您可能会发现类似于“io.grpc.StatusException: INVALID_ARGUMENT: Application credential header not valid. Please fix the client to传递有效的应用程序凭据标头。”

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

仅供参考,Supervisor 不用于 Android O。

于 2017-08-08T21:53:33.663 回答
4

当您从App Link Assistant启用Android Instant App时,您想要直接启动(或在您的网站上有信息)的 Activity 将被修改如下:

<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-known 文件夹中<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 即时应用程序。如果我误解了你的问题,我深表歉意。

于 2017-08-10T19:34:10.603 回答