我试图获取在不同项目中编译的包的版本代码,并将其作为依赖项链接到此项目中.我经常对这两个项目进行更改,所以我想知道版本号.
这里的解决方案:How to get the build/version number of your Android application?显示了如何从上下文获取版本代码,但这将产生当前项目中的包的版本代码,而不是依赖的版本.
这是我尝试过的代码(3-Scenarios):
public static int getPackageVersion(Context context, Class<?> tClass) { int versionCode = 0; //#1) Get Package name from class String packagename = tClass.getPackage().getname(); //#2) Set Domain manually to top level package //String packagename = "com.somedomain"; //#3) Get package name from context from this package //String packagename = context.getPackagename(); Log.i(TAG, packagename); try { versionCode = context.getPackageManager().getPackageInfo( packagename, 0).versionCode; } catch (PackageManager.nameNotFoundException e) { Log.e(TAG, packagename); throw new RuntimeException(); } return versionCode;}
#1)显示该方法最初的功能,它使用packagename作为类.结果在nameNotFound中.
#2)我手动设置依赖包的顶级packagename,这与context.getPackagename()返回的类似.结果在nameNotFound中.
#3)我使用了context.getPackagename(),代码返回了这个项目中包的版本代码 – 正如预测的那样,但不是我需要的结果.
我已经有了一个不优雅的黑客攻击,我只是将版本号作为一个字段存储在其中一个类中,但是一个合适的解决方案(如果存在的话)会很棒.
解决方法:
一个合适的解决方案是使用BuildConfig文件来存储这些值(对于每个项目/子项目).
AndroID Gradle插件已包含以下字段:
androID { defaultConfig { versionCode 1 versionname "1.0.0" }}
然后使用your.package.name.BuildConfig.VERSION_name或your.package.name.BuildConfig.VERSION_CODE获取该字段
总结以上是内存溢出为你收集整理的java – 如何获取依赖包的版本代码?全部内容,希望文章能够帮你解决java – 如何获取依赖包的版本代码?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)