10

这样的事情可能吗?

<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_name包的名称替换,android:versionName似乎设置正确。
所以问题是为什么包名称在工作时不起作用android:versionName

编辑: 有没有办法使用外部文件中指定的包名?

4

2 回答 2

7

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

由于包没有在 android 模式中定义,它不能以这种方式访问​​资源,而 versionName 可以。

于 2013-03-13T03:59:32.750 回答
2

@Lev我知道它很晚,但它可能会帮助其他人。

我也想@string/package_name在某些情况下使用。我通过在app/build.gradle下面创建字符串资源来完成它。

defaultConfig {
    // your other code
    applicationId 'com.example'
    resValue "string", "package_name", applicationId
    // your other code
}
于 2018-07-14T12:50:03.627 回答