【问题标题】:Can I use a resource string for a package name?我可以使用资源字符串作为包名吗?
【发布时间】:2013-03-13 02:43:08
【问题描述】:

这样的事情可能吗?

<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 有效?

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

【问题讨论】:

    标签: android android-manifest packages


    【解决方案1】:

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

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

    【讨论】:

    • 有没有其他方法可以使用外部文件中的包名字符串?
    • @Lev 我不知道,抱歉。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多