【发布时间】:2015-06-20 01:16:40
【问题描述】:
我一直在研究如何从 android 模块访问 3rd-party-jar-bundled 资源 文件(xml 文件、图像、引用 here)。可以这样做吗?
因为这些资源文件是由已编译的第 3 方 jar 文件调用的,这意味着,除非我:
- 将jar文件反编译成java代码。
- 将所有原生资源引用替换为 TiRHelper.getApplicationResource
- 重新编译第三方java源代码为jar文件。
(这个第三方项目是https://github.com/ShareSDKPlatform/ShareSDK-for-Android/tree/master/Sample,我可以轻松编译运行。你可以看到/res文件夹中有资源文件,其中一个jar文件使用了这些资源文件。)
我搜索了一整天,但没有找到答案。
我从官方document那里得到了一些线索,尝试了但没有成功。该错误表明钛模块中的 java 代码无法访问该资源。
同样,同样的问题(http://developer.appcelerator.com/question/178857/unable-to-load-resources-from-3rd-party-librarys-resourced-in-android-module)没有得到解答。
这个答案(http://developer.appcelerator.com/question/49671/android-r-references-in-appcelerator-module#answer-266726)给了我一个线索,方法是:
getResource() gives an Error
getAndroidResource() gives an Error
but getApplicationResource() DOES work
并且有一个线索表明'apklib'可能有用,但是在阅读了一些帖子后,我发现它已从maven官方网站上删除。现在 Google 建议改用“aar”文件。但是根据这个 Titanium 官方问题 (https://jira.appcelerator.org/browse/TIMOB-18565 ),它还没有被钛支持。
所以,我想知道,是否可以让 java 代码(例如活动)从 Titanium 模块访问其 3rd-party-jar-bundled 资源文件( value/string.xml 左右)?如果有,有没有可以参考的示例代码?
非常感谢!
【问题讨论】:
-
JAR 文件不包含 res/ 文件夹中的资源。 AAR 文件(或过去的 apklib)也包含资源作为捆绑包的一部分。当您“将第 3 方 java 源代码重新编译为 jar 文件”时,您可能会丢失资源。
-
@androidLearner 是的,jar 不包含资源文件,apklib 仅适用于旧 Maven 版本,Titanium 尚不支持 aar 文件。但是,我提到的资源文件是原生 android 项目的
android/res文件夹下的文件。我找到了答案。无论如何,感谢您的关注!
标签: android module resources titanium