如何在AndroidManifest.xml中的android:name中使用破折号和点字符?

时间:2013-03-19 15:51:03

标签: android mobile android-manifest

对于我的Android应用,我需要在AndroidManifest.xml中将以下属性添加到<application>

<application android:name="de.myapp.My-App.de">

项目名称为“My-App.de”。我知道在这里使用破折号和点不是一个好主意,但我不能改变它。产品所有者希望它像这样调用。

由于收到错误消息,我只是使用“\”字符转义短划线,这会导致此名称:

<application android:name="de.myapp.My\-App.de">

这是对的吗?最后一个点也必须被转义吗?

4 个答案:

答案 0 :(得分:2)

strings.xml文件夹下的res/values,您可以像这样添加您的应用名称:

<string name="app_name">de.myapp.My-App.de</string>

然后在AndroidManifest.xml中,您可以参考它:

<application android:name="@string/app_name">

这将允许您的应用名称包含破折号。

答案 1 :(得分:2)

为什么不使用android:label

只是一个旁注。如果您的客户告诉您使用钚键盘而不是常规键盘,您会接受吗?有时(几乎每次)我们必须摆脱我们没有相同背景的客户,特别是在进入计算机科学时。如果无法完成某些事情(或者不应该做什么或者其他事情),您应该为您的客户提供服务。您可以给出很多理由:系统不太安全或可能受到损害,应用程序变得不稳定,客户希望以更容易理解的方式完成,等等。

至少在我的公司,我有责任开发 AND 来提供建议,即使我与客户交谈,我也倾向于确保他们理解他们想要的含义并知道什么无法做到,应该做些什么。

修改

一些资源:

http://developer.android.com/guide/topics/manifest/application-element.html#nm

Name是Application子类的完全限定名称。如您所知,课程不能用破折号书写。我们都知道Android的命名惯例并不是世界上最准确的,所以这样的问题总会出现。尝试添加到默认情况下已定义的@string/app_name短划线。我不在我的Android项目前面,但它应该也可以。如果没有,请尝试用CDATA标记括起字符串:

<string name="app_name"><![CDATA[de.myapp.My-App.de]]></string>

这可以避免xml转义文本(这不应该是必需的,但谁知道)。

答案 2 :(得分:0)

我建议你将你的appname存储在string.xml中并编码特殊字符 - (破折号)和。 (点)unicode你可以在这里引用unicode - &gt; http://jrgraphix.net/research/unicode_blocks.php?block=0

例如.My \ u002DApp \ u002Ede

答案 3 :(得分:0)

<application android:name="de.myapp.My-App.de"> is not correct.

你只需使用

<application android:name="Package_name.Application_class_name">

包和类的名称必须