3

我快要疯了试图找出为什么Play商店不接受我的即时应用程序的构建。我已经成功地将Alpha常规应用程序版本部署到测试人员,因为它是发布即时应用程序的先决条件。我正在尝试部署一个开发发布即时应用程序。我究竟做错了什么?我试图添加尽可能多的细节。如果您需要更多信息,请告诉我。Android的即时应用程序 - 游戏控制台发布/部署错误和DAL(数字资产链接)不挂

我需要在以下链接使用数字资产链接API服务,为生产即时应用或者是别的东西? https://console.developers.google.com/apis/api/digitalassetlinks.googleapis.com/overview

我上传的即时应用程序建立到播放控制台时,得到以下错误:

您的网站“example.com”尚未通过数字 资产Link协议为您的应用链接。请通过 Digital Assets Link协议将您的网站链接到您的应用程序。

有一件事我有点困惑的是,为什么当我点击链接并验证一个得到错误信息“添加资产报表失败。”如图所示如下图: Adding asset statements failed 我注意到,当我点击链接和验证按钮,它会修改基地的strings.xml档案,并添加以下字符串:<string name="asset_statements" translatable="false">[{\n \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n \"target\": {\n \"namespace\": \"web\",\n \"site\": \"https://example.com\",\n }\n}]</string>

在清单中,我有以下<meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>

项目的描述和结构:

应用描述清单顾问应用标签下的这是概念应用程序的一个证明。可安装的应用程序将通过两个按钮打开主要活动活动,这些按钮会在您点击时将您带入清单或顾问活动。有两个即时应用程序,instantapp-checklist进入清单活动,instantapp(顾问)进入顾问活动。

  • 有3个功能模块:mainfeature,清单,顾问
  • 有2个即时应用:instantapp检查清单,instantapp(顾问)

Project structure

  • 我安装的应用程序的束为:blah.blah1.blah2.myappname
  • 我的清单即时应用程序的包ID为:blah.blah1.blah2.mya ppname.checklist
  • 我的导师即时应用程序的包ID为:blah.blah1.blah2.myappname.advisor

我assetlinks。JSON是:

[{ 
    "relation": ["delegate_permission/common.handle_all_urls"], 
    "target": { 
    "namespace": "android_app", 
    "package_name": "blah.blah1.blah2.myappname.checklist", 
    "sha256_cert_fingerprints": 
    ["AA:...:53"] 
    } 
}, 
{ 
    "relation": ["delegate_permission/common.handle_all_urls"], 
    "target": { 
    "namespace": "android_app", 
    "package_name": "blah.blah1.blah2.myappname.advisor", 
    "sha256_cert_fingerprints": 
    ["AA:...:53"] 
    } 
}] 

在我的清单中的活动标签内的清单如下:

 <meta-data 
      android:name="default-url" 
      android:value="https://example.com/checklist.html"/> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 

      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
     <intent-filter android:order="1" 
         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="example.com" 
       android:pathPattern="/checklist.html"/> 
      <data android:scheme="https"/> 
     </intent-filter> 

自我检查,我所做的:

  • 即时应用程序签署签署与我的密钥库,而不是调试密钥。我查了一下,以确保即时应用程序和assetlinks.json显示相同的sha256指纹。
  • 中的robots.txt允许通过所有机器人
  • assetlinks.json确实有一个有效的证书被搜索assetlinks.json并允许HTTPS
  • 的内容类型assetlinks.json报头是application/JSON
  • 我不是opt'd在“谷歌Play应用签名”
  • 我用下面的网站来测试我的说法,这是成功的:https://developers.google.com/digital-asset-links/tools/generator

任何帮助,谢谢先进!

+1

您在“[app]>发布管理>应用签名”下选择了“Google Play应用签名”的任何机会吗? (并且不,您不需要数字资产链接API) – TWL

+0

否则,您是否可以提交错误,然后将其链接回此处?这对所有人都有帮助,谢谢! https://issuetracker.google.com/issues/new?component=316045&template=1018787 – TWL

+0

@TWL我没有选择参与Google Play应用签名 – olearyj234

回答

1

assetlinks.json文件,场程序包设置为blah.blah1.blah2.myappname.checklist

然而,上述是,安装的应用程序的IDblah.blah1.blah2.myappname。这意味着包名AndroidManifest.xml设置为blah.blah1.blah2.myappname

它们应该匹配。 blah.blah1.blah2.myappname必须添加到服务器上的assetlinks.json

的strings.xml,改变asset_statements:

<string name="asset_statements" translatable="false">[{\n \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n \"target\": {\n \"namespace\": \"web\",\n \"site\": \"https://qaapps.cio.ny.gov/apps/sandbox/james/hesc/checklist.html\",\n }\n},{\n \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n \"target\": {\n \"namespace\": \"web\",\n \"site\": \"https://qaapps.cio.ny.gov/apps/sandbox/james/hesc/advisor.html\",\n }\n}]</string> 

这里有一些其他的注意事项,帮助我找到了解决方案:

  • 我用下面的命令行来测试即时应用工程:adb shell am start -a android.intent.action.VIEW -d "https://example.com/checklist/"
  • 在设备上,我去了设置> Google>即时应用和clicke d切换到卸载/关闭即时应用程序,然后再次单击它将其重新打开。同时进入Chrome设置(设置>隐私>清除浏览数据)清除所有时间范围内的所有数据。
  • 在Chrome中为即时应用输入网址时,它只会打开网站而不是即时应用。如果我在网站上点击即时应用程序的链接,它会打开即时应用程序,而不是网站。
相关问题