我可以使用资源字符串作为包名吗?

时间:2013-03-13 02:43:09

标签: android android-manifest packages

这样的事情可能吗?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="@string/package_name"
      android:versionCode="1"
      android:versionName="@string/version_name">

上面的代码给了我一个错误:

  

C:\ android-sdk \ tools \ ant \ build.xml:539:应用程序包   '@ string / package_name'必须至少包含2个段。

我的字符串在res / strings.xml中定义,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My app</string>
    <string name="version_name">1.00</string>
    <string name="package_name">com.mycompany.myapp</string>

如果我用包的名称替换@string/package_nameandroid:versionName似乎设置正确。
所以问题是为什么在android:versionName工作时包名不起作用?

修改 有没有办法使用外部文件中指定的包名?

2 个答案:

答案 0 :(得分:6)

AFAIK,您只能使用@resource/name xmlns(android)中定义的属性http://schemas.android.com/apk/res/android格式访问XML资源。

由于未在android模式中定义包,因此它无法以这种方式访问​​资源,而versionName可以。

答案 1 :(得分:2)

@Lev,我知道它来得很晚,但是它可以帮助其他人。

在某些情况下,我还想使用@string/package_name。 我可以通过在app/build.gradle中创建字符串资源来完成此操作,如下所示。

defaultConfig {
    // your other code
    applicationId 'com.example'
    resValue "string", "package_name", applicationId
    // your other code
}