Android 为什么aapt不添加`<;值/>;`在apk?

Android 为什么aapt不添加`<;值/>;`在apk?,android,titanium,Android,Titanium,我使用的是钛,这是一个跨平台的开发工具。Titanium使用自己的构建脚本创建apk 我有一个使用本机模块的Tianium应用程序:一个进行VOIP调用的Java库。Java应用程序可以工作,当我创建一个带有空模块的Tianium应用程序时,它可以工作 但是我在Tianium应用程序中使用基于VOIP模块的模块时遇到了一个构建问题:apk中缺少一些资源。 首先,构建系统将来自Tianium应用程序和一些本地android模块的一些资源合并到一个目录build。我有一个例子:build/andro

我使用的是钛,这是一个跨平台的开发工具。Titanium使用自己的构建脚本创建apk

我有一个使用本机模块的Tianium应用程序:一个进行VOIP调用的Java库。Java应用程序可以工作,当我创建一个带有空模块的Tianium应用程序时,它可以工作

但是我在Tianium应用程序中使用基于VOIP模块的模块时遇到了一个构建问题:apk中缺少一些资源。

首先,构建系统将来自Tianium应用程序和一些本地android模块的一些资源合并到一个目录
build
。我有一个例子:
build/android/res/values/strings.xml
file,其中所有键和值似乎都是正确有效的xml

然后,构建调用aapt,并使用用于库小部件的钛资源(例如:通知字符串)创建apk。在这个apk中,缺少
build/android/res/values/strings.xml
。它不存在。应用程序启动,VOIP服务启动,然后一旦调用所需的缺失资源就会崩溃

我可以用
aapt list
或解压apk来证明
strings.xml
丢失了

深入查看Tianium javascript构建文件,我看到执行了以下命令:

aapt "package" "-f" "-m" "-J" "/Users/nicorama/ti-voip/build/android/gen" 
"-M" "/Users/nicorama/ti-voip/project/build/android/AndroidManifest.xml" 
"-S" "/project/build/android/res"
"-S" "/var/folders/6f/twxz46614h7_q/res"
"-S" "/var/folders/6f/twxz46614h7_q/res" ....
/var/folders/…
是Tianium小部件的文件。如果我删除apk,则编译apk失败。 我在构建外部执行了这个命令,为详细模式添加了
-v
,并将结果保存到
log.txt
中。我正在该文件中搜索strings.xml,发现:

Found 18 custom asset files in /Users/nicorama/ti-voip/build/android/bin/assets
Configurations:
 (default)
 v11
 v14
 ....
 Src: () /var/folders/6f/twxz46614h7_q/res/values/ids.xml
  values/strings.xml
    Src: () /var/folders/6f/twxz46614h7_q/res/values/strings.xml
    Src: (af) /var/folders/6f/twxz46614h7_q/res/values-af/strings.xml
    Src: (am) /var/folders/6f/twxz46614h7_q/res/values-am/strings.xml
...
但是我的
/Users/nicorama/ti voip/build/android/res/values/strings.xml
文件夹是appt命令中的第一个文件夹

我确实有图像或其他xml文件所需的所有参考,我认为:

(new resource id hidden from /Users/nicorama/ti-voip/build/android/res/layout/hidden.xml)
(new resource id launcher from /Users/nicorama/ti-voip/build/android/res/layout/launcher.xml)

知道strings.xml消失的位置和原因吗?

aapt会将所有strings.xml“值”合并到resources.arsc中,这就是为什么在apk中看不到文件
strings.xml
。我用我的几个apk仔细检查了这一点,在apk中没有看到strings.xml

如果您想查看与“apk”一起打包的字符串值,请运行下面的命令,它将转储所有字符串值

    aapt.exe d strings myapp.apk
验证您在应用程序中定义的某些字符串值是否列在上述字符串转储中。如果没有,请尝试在开始时将绝对路径传递到“res”文件夹
“/Users/nicorama/ti voip/project/build/android/res”

    aapt "package" "-f" "-m" "-J" "/Users/nicorama/ti-voip/build/android/gen" 
    "-M" "/Users/nicorama/ti-voip/project/build/android/AndroidManifest.xml" 
    "-S" "/Users/nicorama/ti-voip/project/build/android/res"
    "-S" "/var/folders/6f/twxz46614h7_q/res"
    "-S" "/var/folders/6f/twxz46614h7_q/res" ....
新的apk应该具有xml值,请使用再次测试

    aapt.exe d strings myapp.apk

要确保您的strings.xml值位于上述字符串转储中。

Hi,我必须更改路径,因为其中有客户端的名称,而忘记了里面的“android”。不幸的是,这不是一个好答案。我有我的字符串,所以问题出在其他地方:)更新了我的答案,你能测试它吗。