【发布时间】:2015-12-10 11:16:14
【问题描述】:
我们正在构建一个应用程序,该应用程序通过 Artifactory 导入一组库,然后从主应用程序中引用这些库。
我们正在本地化我们的应用程序。我们可以本地化我们的库并通过直接使用测试应用程序中的库来验证它是否有效。当库被推送到我们的工件时,我们可以通过 gradle 导入这些库以在我们的应用程序中使用。
我们可以验证在库中进行代码更改甚至是对英文字符串的更改都可以正常工作,并且当拉入主应用程序时,任何此类更改都会正确反映。然而,虽然我们已经将我们的库本地化(成西班牙语),但当将本地化库拉入主库时,不会使用西班牙语字符串。相反,它使用默认(英语)字符串。我们查看了工件上的库,下载了 AAR 并验证了快照确实包含本地化字符串,但由于我们无法确定何时导入主应用程序,它没有使用它们。
我们很困惑为什么会出现这种情况 - 是我们做错了什么还是 gradle 或 Android 中存在错误。
有人有什么见解吗?我为含糊而道歉,但这个问题相当深奥,所以我不确定什么代码可能与解决问题有关。随时要求进一步澄清。
更新:
我们决定直接导入 .AAR,将其放在 libs/ 目录中并在我们的 Gradle 构建中引用它。它现在工作正常,相关库已正确本地化。
所以问题似乎来自于从存储库下载快照时。
【问题讨论】:
-
主应用有西班牙语翻译吗?
-
是的,它有一个带有西班牙语 strings.xml 的 values-es。这是一个因素吗?
-
如果您在库中进行更改、上传,然后尝试在另一个项目中使用。可能只是“另一个项目”正在使用该库的一些旧缓存版本。对于这种情况,Gradle 有一个命令行参数:试试
./gradlew --refresh-dependencies。我希望它有所帮助。 -
感谢 Budius,但我已经确保在拉取新版本的库时刷新了依赖项。
标签: android localization shared-libraries