2017-10-21 101 views
3

Problème lors de l'exécution d'Instant App dans Android Studio lorsque la valeur @string est utilisée pour le nom d'hôte (erreur "URL non définie dans le manifeste") . Par exemple:"URL non définie dans le manifeste" lors de l'exécution d'Instant App utilisant @string pour le nom d'hôte

<data android:scheme="https" android:host="@string/SOME_DOMAIN" /> 

Cela fonctionne bien si android:host est réglé sur la chaîne de domaine brut. Je peux contourner cela en définissant cette valeur à la valeur de domaine spécifique lors de l'exécution/débogage de AS mais pas idéal (toujours le danger de pousser le code qui contient la chaîne codée en dur!)

Aussi, cela fonctionne très bien si je construis/déploie base et fonctionnalité APK de ligne de commande et de déclenchement en utilisant quelque chose comme adb shell am start -W -a android.intent.action.VIEW -d "<my url>"

+0

avait essayé, mais pas de chance .... ressemble AS nécessite un disque codé en chaîne ' android: host' –

+0

Notez que cela fonctionne si je compile/exécute à partir de la ligne de commande ..... il interprète correctement '@ chaîne/SOME_DOMAIN' ... problème est seulement si je cours depuis AS –

+2

J'ai déposé ceci à http : //issuetracker.google.com/68084954 – dchai

Répondre

0

Peut-être est ce parce que ce n'est pas la principale

Manifest.xml

, mais le débogage Manifest. . Essayez d'éditer

app/src/main/Manifest

Note: correspondance nom d'hôte dans le cadre Android est sensible à la casse, contrairement à la RFC formelle. Par conséquent, vous devez toujours spécifier les noms d'hôte en utilisant des minuscules.

Reference Android developer String Resources

0

Je dirais, c'est un comportement erroné que le travail des ressources en chaîne dans certains cas. Selon le documentationandroid:host n'est pas censé contenir une ressource de chaîne, seule une chaîne simple:

<data android:scheme="string" 
     android:host="string" 
     android:port="string" 
     android:path="string" 
     android:pathPattern="string" 
     android:pathPrefix="string" 
     android:mimeType="string" /> 

Mise à jour

Selon @dchai (qui travaille apparemment à Google):

Les ressources de chaîne sont supposées être supportées ... Ceci est un bug dans Android Studio.

Jusqu'au bug est fixé, en fonction de vos besoins, vous pouvez envisager d'utiliser à la place manifest build variables Le bogue empêche l'utilisation des variables de construction manifeste aussi bien.

+0

Les ressources de chaîne sont censées être prises en charge --- La console de développeur a été mise à jour pour gérer ce cas. Ceci est un bug dans Android Studio. – dchai

+0

@dchai whoa! Savez-vous quand et où cela a-t-il été communiqué? La modification a-t-elle été effectuée dans le cadre du déploiement de Configuration APK? – Idolon

0

comme alternative, vous pouvez utiliser manifestPlaceholders

<data android:scheme="https" android:host="${SOME_DOMAIN} /> 

en vous build.gradle:

flavor { 
    dimension "instant" 
    manifestPlaceholders = [SOME_DOMAIN: "https://instantapp.example.com/"] 
}