【问题标题】:Accessing resource of a library referenced by a referenced project访问被引用项目引用的库的资源
【发布时间】:2012-10-10 14:46:17
【问题描述】:

我有一个测试项目 X 来测试项目 Y。项目 Y 有库 Z 作为参考。图书馆 Z 有一个原始资源 R1,我正在尝试打开它,但我一直找不到资源。原始资源位于库中的 res/raw 文件夹中。

我用相关的 packageManager 尝试了 openRawResource,但它似乎没有帮助。 任何想法?我的资源分配是否存在逻辑错误?

没用:

PackageManager pmMgr = getInstrumentation().getTargetContext().getPackageManager();
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE");
InputStream is = rMgr.openRawResource(package.library.z.raw.R1);

也没有

PackageManager pmMgr = getInstrumentation().getContext().getPackageManager();
Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE");
InputStream is = rMgr.openRawResource(package.library.z.raw.R1);

附: 我验证了 R1 也包含在 res/raw 下的引用项目 (Y) 的 .apk 中。

【问题讨论】:

    标签: android unit-testing android-resources android-library


    【解决方案1】:

    回答我自己的问题。 虽然我的问题已经过去了一天..我已经在这个问题上苦苦挣扎了几天。

    解决方案非常愚蠢。 较新版本的 ADT 要求您使用项目库来调用资源,即使它们来自引用的库。例如。工作代码示例是:

    PackageManager pmMgr = getInstrumentation().getTargetContext().getPackageManager();
    Resources rMgr = pmMgr.getResourcesForApplication("PROJECT.Y.PACKAGE");
    InputStream is = rMgr.openRawResource(package.library.Y.raw.R1);
    

    唯一的变化是在最后一行,Y 而不是 Z。

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多