Java 移动到Gradle后,无法在代码中获取版本名
我刚刚将我的一个Android项目移到了Gradle,根据IDE内部和在线的建议,我已将所有配置(min/max sdk、版本名/代码等)移到build.Gradle文件中。 现在,一位客户报告了一个bug,他通常可以看到产品中的版本名和代码,但实际上什么都没有 检查后,我发现在我从Java 移动到Gradle后,无法在代码中获取版本名,java,android,gradle,Java,Android,Gradle,我刚刚将我的一个Android项目移到了Gradle,根据IDE内部和在线的建议,我已将所有配置(min/max sdk、版本名/代码等)移到build.Gradle文件中。 现在,一位客户报告了一个bug,他通常可以看到产品中的版本名和代码,但实际上什么都没有 检查后,我发现在我从AndroidManifest.xml中删除android:versionCode=“”和android:versionName=“”标记后,提取这些值的常用方法已经停止工作。我已经验证了当这些值存在时,它是有效的
AndroidManifest.xml
中删除android:versionCode=“”
和android:versionName=“”
标记后,提取这些值的常用方法已经停止工作。我已经验证了当这些值存在时,它是有效的
现在,我一直在尝试寻找一种方法来提取这些相同的值,以便在代码中使用,但在其他地方,我没有发现任何关于这种行为的引用(这种方式不起作用)
我用来获取值的代码只是简单地从PackageManager中提取它们
try {
PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0);
return pInfo.versionName + " Build " + pInfo.versionCode;
} catch(PackageManager.NameNotFoundException e){
e.printStackTrace();
}
感谢所有提示、提示或解决方案。使用
BuildConfig
类获取build.gradle
文件中定义的版本代码:
Log.e(TAG, BuildConfig.VERSION_NAME + " Build " + BuildConfig.VERSION_CODE);
使用
BuildConfig
类获取在build.gradle
文件中定义的版本代码:
Log.e(TAG, BuildConfig.VERSION_NAME + " Build " + BuildConfig.VERSION_CODE);
BuildConfig
是我在回答中的意思。请不要编辑到生成。如果BuildConfig不起作用或者不适合您,也要发表评论。是的,对此表示抱歉,但BuildConfig不可用,因为它不是由Intellij生成的(似乎只有Eclipse中的ADT才生成)。存在一个包含“Version”和“Version_代码”的类android.os.Build,在完全尝试之前,我编辑了你的答案,因为我以为你在谈论这个类。在尝试使用它之后,虽然我认为它不正确,但我正在等待我的最后一次编辑被批准,以便我可以再次编辑到原始答案。编辑:BuildConfig似乎是自IDEA 117.281以来的一项功能,但在我使用AStudio(Build135)的情况下对meI不起作用,而且运行良好。我建议您清理/重建项目或尝试重新安装为。不使用AStudio,使用Intellij,因此必须找出这不起作用的原因。遗憾的是,重建/清理毫无帮助,因为它实际上是建立在IntelliJ Idea的基础上的。不知道为什么要使用普通IntelliJ。我可能想试试。BuildConfig
是我在回答中的意思。请不要编辑到生成。如果BuildConfig不起作用或者不适合您,也要发表评论。是的,对此表示抱歉,但BuildConfig不可用,因为它不是由Intellij生成的(似乎只有Eclipse中的ADT才生成)。存在一个包含“Version”和“Version_代码”的类android.os.Build,在完全尝试之前,我编辑了你的答案,因为我以为你在谈论这个类。在尝试使用它之后,虽然我认为它不正确,但我正在等待我的最后一次编辑被批准,以便我可以再次编辑到原始答案。编辑:BuildConfig似乎是自IDEA 117.281以来的一项功能,但在我使用AStudio(Build135)的情况下对meI不起作用,而且运行良好。我建议您清理/重建项目或尝试重新安装为。不使用AStudio,使用Intellij,因此必须找出这不起作用的原因。遗憾的是,重建/清理毫无帮助,因为它实际上是建立在IntelliJ Idea的基础上的。不知道为什么要使用普通IntelliJ。我想试试。