Java 如何获取包含的库的版本信息?

Java 如何获取包含的库的版本信息?,java,android,manifest,Java,Android,Manifest,我有一个包含两个库项目的eclipse项目。这些项目有自己的包含版本信息的清单文件。现在我想在我的主项目中读取这些库项目的版本号。无法通过调用PackageManager读取信息: //Get the version name from the included library project String libVersion = getPackageManager().getPackageInfo("com.google.zxing.client.android", 0).versionN

我有一个包含两个库项目的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”

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

<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" >
例如:


您可以在名称本身中看到版本。如果您有库项目的源代码,为了解决问题,为什么不在该库中添加一个返回版本的接口?两者都不起作用。库项目的AndroidManifest.xml不是apk的一部分,因此我认为库项目的版本信息在编译时会丢失。这对我来说不起作用,返回了一个异常,因为库不是已安装的参考包。JCricket:您添加了JAR文件(库)吗到主项目的构建路径,并在“order&export”中打勾,然后执行项目->清理?我正在使用eclipse,不确定它在其他IDEsI中是如何工作的,因为它在Android Studio中,所以order&export选项不可用。我在这里发布了一个答案,但是一个版主删除了它…不知道为什么。请参见此处了解有效的方法: