2017-10-21 39 views
3

@string值用于主机名(获取“URL未在清单中定义的错误”错误)时,在Android Studio中看到运行Instant App的问题。例如:当运行使用@string作为主机名的Instant App时,“清单中未定义URL”

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

如果android:host设置为原料域字符串这是工作的罚款。我可以通过在从AS运行/调试时将该值设置为特定域值来解决此问题,但这并不理想(始终存在推送包含硬编码字符串的代码的危险!)

此外,如果我构建/部署从命令行和触发器使用类似adb shell am start -W -a android.intent.action.VIEW -d "<my url>"

+0

曾试过,但没有运气....貌似AS需要硬编码字符串中的' android:host' –

+0

请注意,如果我从命令行构建/运行.....它正确地解释'@ string/SOME_DOMAIN' ...问题是只有当我从AS运行 –

+2

我已经提交了这个http ://issuetracker.google。com/68084954 – dchai

回答

0

基地和功能的APK也许这是因为它不是主

的Manifest.xml

,但调试清单。 。尝试编辑

应用/ src目录/主/清单

注:在Android框架主机名匹配是大小写敏感的,不像正式的RFC。因此,您应该始终使用小写字母指定主机名。

Reference Android developer String Resources

0

我会说,这是一个错误的行为,在某些情况下,字符串资源的工作。由于每documentationandroid:host不应该包含字符串资源,只有一个简单的字符串:

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

更新

根据@dchai(谁显然作品在谷歌):

应该支持字符串资源...这是Android Studio中的一个错误。

直到bug是固定的,根据你的需要,你可以考虑使用manifest build variables代替的错误阻止清单生成变量的使用也是如此。

+0

应该支持字符串资源---开发者控制台已更新以处理这种情况。这是Android Studio中的一个错误。 – dchai

+0

@dchai哇!你知道何时何地传达信息吗?作为Configuration APK部署的一部分进行了更改吗? – Idolon

0

作为替代,你可以使用manifestPlaceholders

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

的build.gradle:

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