【问题标题】:How to get version information of an included library?如何获取包含库的版本信息?
【发布时间】:2015-06-02 07:39:27
【问题描述】:

我有一个包含两个库项目的 Eclipse 项目。这些项目有自己的带有版本信息的清单文件。现在我想从我的主项目中的这些库项目中读取版本号。调用PackageManager无法读取信息:

//Get the version name from the included library project
String libVersion  = getPackageManager().getPackageInfo("com.google.zxing.client.android", 0).versionName;

因为库不是已安装的应用程序。但是获取这些信息的正确方法是什么?

例如:我已将 zxing Android 项目包含为库项目。这些项目在其清单文件中具有以下版本信息:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.zxing.client.android"
    android:installLocation="auto"
    android:versionCode="88"
    android:versionName="4.3.2" >

我想阅读 versionCode 和 versionName。如果我在上面的编码中使用 packageManager,我将得到 versionCode "93" 和 versionName "4.5"。

【问题讨论】:

  • 您可以在名称本身中看到版本..
  • 如果你有库项目的源代码,作为一种解决方法,为什么不在那个库中添加一个返回版本的接口呢?
  • 两者都不起作用。库项目的AndroidManifest.xml不是apk的一部分,所以我认为库项目的版本信息会在编译时丢失。

标签: java android manifest


【解决方案1】:

事实上,现在可能的(可能是由于新的 API 更改,使用 API 17(调用项目)、API 14(库项目)进行测试):如果您专门调用正确的包名称,它将从该软件包清单文件中检索版本信息:

例如:

String versionName = getPackageManager().
        getPackageInfo("PACKAGE_FROM_WHICH_TO_RETRIEVE_MANIFEST", 0).versionName;

【讨论】:

  • 这对我不起作用,返回异常,因为该库不是已安装的参考包。
  • JCricket:您是否将 JAR 文件(库)添加到主项目的构建路径并在“订购和导出”中打勾,然后项目-> 清理?我正在使用 eclipse,不确定它在其他 IDE 中如何工作
  • 我在 Android Studio 中,所以订单和导出选项不可用。我在这里发布了一个答案,但版主删除了它....不知道为什么。请参阅此处了解有效的方法:stackoverflow.com/a/30584970/1544046
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多