我目前正在尝试了解Android即时应用。由于我没有任何支持它们的真实设备,我使用的是模拟器(来自Android Studio 3.0 Canary 9)。我可以在我模拟的Nexus 5x(使用Play商店)上成功运行“玩具”即时应用程序(like this),因此我相信我的开发环境配置正确。
但是,我很想知道第三方应用程序的发现过程,并了解用户体验是什么样的。由于缺乏合适的设备,我使用模拟的Chrome浏览器搜索启用了即时应用的网站(如Stack Exchange)。但这些搜索只给我通常的网站(不是即时应用程序)。
我非常感兴趣地阅读了this post,因为它似乎暗示应工作。但是,这些答案似乎对我没有帮助。
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未列出即时应用(因此无需设置)
以下是一些其他细节,如果它们相关:
通过我现在设置的开发环境,我可以继续开发自己的即时应用程序,将其部署在我自己的模拟设备上并进行测试。我真的很好奇,看看其他人的即时应用程序是如何工作的。另一篇文章(上面链接)表明我应该能够做到这一点。
所以这是我的问题:是否可以在模拟设备上发现并打开第三方即时应用程序(如果是,如何)?
答案 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即时应用。如果我误解了你的问题,我道歉。