Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 移动到Gradle后,无法在代码中获取版本名_Java_Android_Gradle - Fatal编程技术网

Java 移动到Gradle后,无法在代码中获取版本名

Java 移动到Gradle后,无法在代码中获取版本名,java,android,gradle,Java,Android,Gradle,我刚刚将我的一个Android项目移到了Gradle,根据IDE内部和在线的建议,我已将所有配置(min/max sdk、版本名/代码等)移到build.Gradle文件中。 现在,一位客户报告了一个bug,他通常可以看到产品中的版本名和代码,但实际上什么都没有 检查后,我发现在我从AndroidManifest.xml中删除android:versionCode=“”和android:versionName=“”标记后,提取这些值的常用方法已经停止工作。我已经验证了当这些值存在时,它是有效的

我刚刚将我的一个Android项目移到了Gradle,根据IDE内部和在线的建议,我已将所有配置(min/max sdk、版本名/代码等)移到build.Gradle文件中。 现在,一位客户报告了一个bug,他通常可以看到产品中的版本名和代码,但实际上什么都没有

检查后,我发现在我从
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。我想试试。