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" 即可
