I have created an instant app. I uploaded it to my Google Console, and I got this error.
The www.kochchy.cz website has not been linked to your application through the Digital Assets Link protocol. Link the application site with Digital Assets Link.
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.kochchy.instantapptest.app",
"sha256_cert_fingerprints":["A4:A6:74:15:F1:3E:38:3F:93:0F:EF:E3:A6:86:8E:7C:25:45:E8:80:5B:5E:35:70:49:20:DB:F8:CB:D4:FC:E0"]
}
}]
Both apks, instant and installable use same id: com.kochchy.instantapptest.app (each defined in own module manifests)
My base module manifest looks like this:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kochchy.instantapptest">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="default-url"
android:value="https://www.kochchy.cz" />
<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="https" />
<data android:scheme="http" />
<data android:host="www.kochchy.cz" />
<data android:pathPattern="/menu" />
</intent-filter>
</activity>
</application>
</manifest>
------ EDIT ------
I made new project from google instant app sample: https://github.com/googlesamples/android-instant-apps/tree/master/hello
Same google console error. I guess there is problem in my web setup, not in the app.
The www.kochchy.cz website has not been linked to your application through the Digital Assets Link protocol. Link the application site with Digital Assets Link.
The Digital Asset Links protocol and API enable an app or website to make public, verifiable statements about other apps or websites. For example, a website can declare that it is associated with a specific Android app, or it can declare that it wants to share user credentials with another website.
4. Lastly, the assetlinks. json file must be hosted at https://[your_domain_name]/.well-known/assetlinks.json .
sha256_cert_fingerprints: The SHA256 fingerprints of your app's signing certificate. You can use the following command to generate the fingerprint via the Java keytool: keytool -list -v -keystore my-release-key.keystore. The documentation also is unclear about what the value of namespace needs to be. android. expo.
So for me, and maybe this is obvious to some, was the usage of the wrong sha key. What you need to do is go to your https://play.google.com/apps/publish/ console
Go to Release Management then to the App Signing page. Copy the SHA256 key from there.
Go to https://developers.google.com/digital-asset-links/tools/generator and enter the sha key, url and packagename there.
Upload this file to https://example.com/.well-known/assetlinks.json
Make sure that the file is in the correct location: A folder named .well-known
.
Release your instant app
In your json file, the field package_name is set to com.kochchy.instantapptest.app.
However, the package name in your AndroidManifest.xml is set to com.kochchy.instantapptest.
They should match.
EDIT
Your structure looks pretty different from the one recommended by Google.
You shouldn't have to duplicate your code and resources. Instead, create a third module(let's call it base) to act as the base feature module, and move all your code and resources to there. Make sure its build.gradle includes these lines:
apply plugin: 'com.android.feature'
android {
baseFeature true
...
}
dependencies {
application project(':app')
...
}
In your app's build.gradle, make sure you have these lines in:
apply plugin: 'com.android.application'
...
dependencies {
implementation project(':base')
}
Finally, in your instantapp's build.gradle:
apply plugin: 'com.android.instantapp'
...
dependencies {
implementation project(':base')
}
You might need to make further changes, but this should be a good start. I strongly recommend you to take a look at this page, specially the section "Structure of a basic instant app".
"package_name": "com.kochchy.instantapptest.app"
Here you should have your application Id from installable app not from instant app manifest
defaultConfig {
applicationId "com.example.yourappid"
}
Try following these steps and verify that the generated file is the same as yours:
Tools -> App Links Assistant -> (Click Button) Open Digital Asset Links File Generator
After you complete everything, click Generate Digital Asset Links file.
Click Save file to download it.
Upload the assetlinks.json file to your site, with read-access for everyone, at https://www.exemple.com/.well-known/assetlinks.json.
Click Link and Verify to confirm that you've uploaded the correct Digital Asset Links file to the correct location.
Reference: https://developer.android.com/studio/write/app-link-indexing.html#associatesite
problem with sha256_cert_fingerprints. Application app singing was enabled so I copied sha from google play console and put that into asserlink.json file and it works .
https://d5rwdr23d4fqx.cloudfront.net/.well-known/assetlinks.json
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With