cocos creator android项目接入deeplink问题总结

1: deeplink接入文档:developer.android.google.cn/codelabs/an... 2: deeplink验证文档:developer.android.com/training/ap... 3: deeplink官方git文档:github.com/android/dee...

大体流程文档里说的很详细,下面只做简单描述,后面会相似说下遇到的问题。注意:电脑和手机最好都开着vpn,下列操作好像会访问google那边。

一:如果你所需要用到的链接是deeplinkdemo.demo.com,那么需要在你所需要使用的域名下生成assetlinks.json文件,路径是deeplinkdemo.demo.com/.well-known..., 这里需要注意的是,需要支持https,并且需要能直接访问到这个文件。 文件内容大体如下

css 复制代码
[  {    "relation": [      "delegate_permission/common.handle_all_urls"    ],
    "target": {
      "namespace": "android_app",
      "package_name": "com.deeplinkdemo.demo.gp",
      "sha256_cert_fingerprints": [
        "8B:D4:E2:D7:66:50:6C:51:F1:5T:A7:37:42:3B:D8:EB:D4:89:AE:44:C2:28:70:90:AF:E4:E4:4F:81:09:6E:87",
      ]
    }
  }
]

二:然后在你的az项目里增加

ini 复制代码
<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:host="deeplinkdemo.demo.com" android:scheme="http"/>
</intent-filter>
<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:host="deeplinkdemo.demo.com" android:scheme="https"/>
</intent-filter>

三:打包之后可以用 // 重新校验链接 adb shell pm verify-app-links --re-verify com.deeplinkdemo.demo.gp // 获取app可用状态 adb shell pm get-app-links com.deeplinkdemo.demo.gp 这一步会看到如下信息:

ruby 复制代码
  com.lulingame.qnss.gp:
    ID: 4df27cb7-1eb4-4ad8-a5f1-9817a25b5f77
    Signatures: [8B:D4:E2:D7:66:50:6C:51:F1:5T:A7:37:42:3B:D8:EB:D4:89:AE:44:C2:28:70:90:AF:E4:E4:4F:81:09:6E:87]
    Domain verification state:
      deeplinkdemo.demo.com: verified
    User 0:
      Verification link handling allowed: true
      Selection state:
        Disabled:
          deeplinkdemo.demo.com

// 模拟启动applink adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "deeplinkdemo.demo.com" 到此为止如果能正常通过命令行打开deeplink 说明成功了大半。 四:后续问题反馈,我按照上面的官方不走弄完之后,命令行模拟也没问题,但是在记事本里点击链接deeplinkdemo.demo.com 后不能正常调转到应用。后来查了一下,问题有一下几点。

1: 因为这个项目接入了第三方的sdk 所以《二》中增加的内容需要写在sdk的Activity中 并且需要增加

ini 复制代码
<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

这一步改完之后,在记事本里点击 deeplinkdemo.demo.com 可以跳转了,但是应用打开后会闪退,到这一部可以确定deeplink是可用的,但是因为某种原因应用闪退崩溃了,接下来查找崩溃原因。

2: 处理闪退问题我这里的报错找不到了,问题是因为用到的deeplink,但是项目中没有增加google play的套件导致的,报错全都在 com.google.gms上。 需要手动引入下。

arduino 复制代码
// google基础套件
implementation 'com.google.android.gms:play-services-location:21.3.0'

经过这一步,调转后可以正常出现启动页,但是过一会应用还是会闪退。

3:处理这个问题:我的抓到的主要报错如下:

主要崩溃在:E ActivityRecord{64a3d20 u0 com.lulingame.qnss.gp/org.cocos2dx.javascript.AppActivity t92}#1668 id info cannot be read from 'ActivityRecord{64a3d20 u0 com.lulingame.qnss.gp/org.cocos2dx.javascript.AppActivity t92}#1668' 查了下这里是因为deeplink调转后 轮训activity 找到主要的activity导致的。 在 org.cocos2dx.javascript.AppActivity 下加入

android:launchMode="singleTask" android:taskAffinity="com.deeplinkdemo.demo.gp" 即可

相关推荐
LcGero20 天前
TypeScript 快速上手:泛型与工具类型
typescript·cocos creator·游戏开发
LcGero20 天前
Cocos Creator 3.x 高维护性打字机对话系统设计与实现
cocos creator·打字机
LcGero21 天前
Cocos Creator 三端接入穿山甲 SDK
sdk·cocos creator·穿山甲
LcGero22 天前
Cocos Creator平台适配层框架设计
cocos creator·平台·框架设计
LcGero23 天前
Cocos Creator 业务与原生通信详解
android·ios·cocos creator·游戏开发·jsb
LcGero24 天前
TypeScript 快速上手:前言
typescript·cocos creator·游戏开发
Setsuna_F_Seiei24 天前
CocosCreator 游戏开发 - 多维度状态机架构设计与实现
前端·cocos creator·游戏开发
CodeCaptain3 个月前
cocoscreator 2.4.x 场景运行时的JS生命周期浅析
cocos creator·开发经验
CodeCaptain4 个月前
CocosCreator 3.8.x [.gitignore]文件内容,仅供参考
经验分享·cocos creator
VaJoy5 个月前
Cocos Creator Shader 入门 (21) —— 高斯模糊的高性能实现
前端·cocos creator