【问题标题】:Reading my own Jar's manifest, when the Jar is used in an Android app在 Android 应用程序中使用 Jar 时,读取我自己的 Jar 清单
【发布时间】:2012-10-09 20:17:15
【问题描述】:

我有一个在我的 Android 应用程序中使用的 Jar(它位于 libs 文件夹中)。 Jar 不包含任何 Android 资源或类似的东西,而只是简单的 Java 类。

现在,我希望 Jar 知道它当前在清单中具有哪个版本,以便在 Jar 中发生异常的情况下,我知道是哪个版本的 Jar 导致了异常。

由于某种原因,我似乎无法做到... 我见过similar question 和许多其他人,虽然当我在一个简单的 Java 应用程序中使用 Jar 时这有效,但在 android 应用程序中使用时却不行。 我已经尝试通过这样做来获取清单

Thread.currentThread().getContextClassLoader().getResources("META-INF/MANIFEST.MF");

或者这个

MyClass.class.getClassLoader().getResources("META-INF/MANIFEST.MF");

但我从来没有得到我的 jar 的清单。

任何帮助将不胜感激。

【问题讨论】:

  • 虽然您也许可以获得 APK 的版本,但不清楚如何获得 jar 的版本,因为 jar 在编译的包中不会作为一个独立的实体存在。您可以将其嵌入为某种常量字段吗?

标签: java android jar classloader manifest.mf


【解决方案1】:

我把它放在我的子类 android.app.Application 中,但你可以在任何有上下文的地方使用它。只需将 getPackageManager() 更改为 context.getPackageManager()。

public int getVersion() {
    int v = 0;
    try {
        v = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
    } catch (NameNotFoundException e) {
        // Huh? Really?
    }
    return v;
}

您可以使用上述方法从清单中获取您的应用程序的版本。

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多