gradle versionnamee类似叫什么名字

自动生成versionCode/VersionName - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 13时,
使用Gradle自动化生成VersionCode与VersionName,使用VersionName与git版本库关联,并且区分开发版本与发布版本的解决方案。详情请看文章:http://my.oschina.net/mengshuai/blog/551356
代码片段(1)
1.&[代码][Groovy]代码&&&&
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
def getVersionCode = { -&
def stdout = new ByteArrayOutputStream()
commandLine 'git', 'rev-list', '--all', '--count'
standardOutput = stdout
return Integer.parseInt(stdout.toString().trim())+400
catch (ignored) {
return -1;
def getVersionName = { -&
def stdout = new ByteArrayOutputStream()
commandLine 'git', 'describe', '--tags', '--dirty'
standardOutput = stdout
return stdout.toString().trim()
catch (ignored) {
compileSdkVersion = 21
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.a.b.c"
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled true
versionCode getVersionCode()
versionName getVersionName()
signingConfigs {
storeFile file("anl.keystore")
storePassword "*****"
keyAlias "***** "
keyPassword "***** "
lintOptions {
checkReleaseBuilds false
abortOnError false
buildTypes {
minifyEnabled false
signingConfig signingConfigs.release
signingConfig signingConfigs.release
applicationIdSuffix 'debug'
versionNameSuffix '-debug'
compileSdkVersion 21
productFlavors {
dexOptions{
incremental true
javaMaxHeapSize "4g"
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
dependencies {
compile 'com.android.support:multidex:1.0.0'
compile fileTree(include: '*jar', dir: 'libs')
compile project(':qavlib')
compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
transitive =
compile 'com.squareup:otto:+'
compile 'com.github.anrwatchdog:anrwatchdog:1.1.+'
compile 'com.alibaba:fastjson:+'
开源中国-程序员在线工具:
相关的代码(72)
0回/2079阅
开源从代码分享开始
程序员孟帅的其它代码I am building a private app that will not go through the Marketplace. As a result, I need to pull the current version application (not platform) information and check with the server to see if there is an update. It works great on the emulator, but when I installed the signed APK on my Droid X, it returns null. Here is the code:
PackageInfo pInfo =
pInfo = getPackageManager().getPackageInfo("com.rubiconproject.expenses",
PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
String postUrl = DbAdapter.REMOTE_DB +
"/application/active-version/platform/android/version/" +
pInfo.versionCode + "." + pInfo.versionN
I wrote a much smaller application, below, that displays my problem (TestingActivity.java):
package com.rubiconproject.
import android.app.A
import android.content.pm.PackageI
import android.content.pm.PackageM
import android.content.pm.PackageManager.NameNotFoundE
import android.os.B
import android.widget.TextV
public class TestingActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PackageInfo pInfo =
pInfo = getPackageManager().getPackageInfo(
"com.rubiconproject.testing", PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
TextView tt = (TextView)findViewById(R.id.textView1);
tt.setText(pInfo.versionCode);
TextView tt2 = (TextView)findViewById(R.id.textView2);
tt2.setText(pInfo.versionName);
And the manifest:
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.rubiconproject.testing"
android:versionCode="1"
android:versionName="1.0"&
&uses-sdk android:minSdkVersion="9" /&
&application android:icon="@drawable/icon" android:label="@string/app_name"&
&activity android:name=".TestingActivity"
android:label="@string/app_name"&
&intent-filter&
&action android:name="android.intent.action.MAIN" /&
&category android:name="android.intent.category.LAUNCHER" /&
&/intent-filter&
&/activity&
&/application&
&/manifest&
adb logcat shows:
E/AndroidRuntime(
335): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rubiconproject.testing/com.rubiconproject.testing.TestingActivity}: java.lang.NullPointerException
E/AndroidRuntime(
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
E/AndroidRuntime(
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
E/AndroidRuntime(
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/AndroidRuntime(
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
E/AndroidRuntime(
at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(
at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(
at android.app.ActivityThread.main(ActivityThread.java:3647)
E/AndroidRuntime(
at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(
at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(
at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(
335): Caused by: java.lang.NullPointerException
E/AndroidRuntime(
at com.rubiconproject.testing.TestingActivity.onCreate(TestingActivity.java:26)
E/AndroidRuntime(
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
E/AndroidRuntime(
... 11 more
where line 26 corresponds to:
tt.setText(pInfo.versionCode);
Does anyone know why this is happening?
解决方案 Does your manifest.xml contain android:versionCode and androd:versionName attributes?
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android="/apk/res/android"
package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1"&
&application android:icon="@drawable/icon" android:label="@string/app_name"&
&/application&
&/manifest&
本文地址: &
我建立一个专用的应用程序,不会通过卖场。这样一来,我需要拉的当前版本的应用程序(而不是平台)信息,并检查服务器,查看是否有更新。它的伟大工程在模拟器上,但是当我安装APK签上我的Droid X,它返回null。这里是code:
PackageInfo PINFO = NULL;
PINFO = getPackageManager()。getPackageInfo(“com.rubiconproject.expenses”
PackageManager.GET_META_DATA);
}赶上(的NameNotFoundException E){
字符串postUrl = DbAdapter.REMOTE_DB +
“/程序/有源版本/平台/安卓/版/”+
pInfo.version code +“。” + pInfo.versionN
我写了一个更小的应用程序,下面,显示我的问题(TestingActivity.java):
包com.rubiconproject.
进口android.app.A
进口android.content.pm.PackageI
进口android.content.pm.PackageM
进口android.content.pm.PackageManager.NameNotFoundE
进口android.os.B
进口android.widget.TextV
公共类TestingActivity延伸活动{
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
PackageInfo PINFO = NULL;
PINFO = getPackageManager()。getPackageInfo(
“com.rubiconproject.testing”,PackageManager.GET_META_DATA);
}赶上(的NameNotFoundException E){
TextView的TT =(TextView中)findViewById(R.id.textView1);
tt.setText(pInfo.version code);
TextView的TT2 =(TextView中)findViewById(R.id.textView2);
tt2.setText(pInfo.versionName);
< XML版本=“1.0”编码=“UTF-8”&GT?;
<舱单的xmlns:机器人=“/apk/res/android”
包=“com.rubiconproject.testing”
安卓版code =“1”
机器人:VERSIONNAME =“1.0”>
<使用-SDK安卓的minSdkVersion =“9”/>
&应用机器人:图标=“@可绘制/图标”机器人:标签=“@字符串/ APP_NAME”>
<活动机器人:名称=“。TestingActivity”
机器人:标签=“@字符串/ APP_NAME”>
<意向滤光器&
&作用机器人:名称=“android.intent.action.MAIN”/>
<类机器人:名称=“android.intent.category.LAUNCHER”/>
&所述; /意图滤光器&
< /活性GT;
< /用途&
< /舱单>
亚行logcat显示:
E / AndroidRuntime(335):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.rubiconproject.testing / com.rubiconproject.testing.TestingActivity}:java.lang中。空指针异常
E / AndroidRuntime(335):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
E / AndroidRuntime(335):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
E / AndroidRuntime(335):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
E / AndroidRuntime(335):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:928)
E / AndroidRuntime(335):在android.os.Handler.dispatchMessage(Handler.java:99)
E / AndroidRuntime(335):在android.os.Looper.loop(Looper.java:123)
E / AndroidRuntime(335):在android.app.ActivityThread.main(ActivityThread.java:3647)
E / AndroidRuntime(335):在java.lang.reflect.Method.invokeNative(本机方法)
E / AndroidRuntime(335):在java.lang.reflect.Method.invoke(Method.java:507)
E / AndroidRuntime(335):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
E / AndroidRuntime(335):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E / AndroidRuntime(335):在dalvik.system.NativeStart.main(本机方法)
E / AndroidRuntime(335):由:显示java.lang.NullPointerException
E / AndroidRuntime(335):在com.rubiconproject.testing.TestingActivity.onCreate(TestingActivity.java:26)
E / AndroidRuntime(335):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E / AndroidRuntime(335):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
E / AndroidRuntime(335):11 ...更多
,其中线26对应于:
tt.setText(pInfo.version code);
有谁知道为什么会这样?
解决方案 请问您的manifest.xml包含安卓版code和androd:VERSIONNAME属性
< XML版本=“1.0”编码=“UTF-8”&GT?;
<舱单的xmlns:机器人=“/apk/res/android”
包=“com.example.package.name”
安卓版code =“2”
机器人:VERSIONNAME =“1.1”>
&应用机器人:图标=“@可绘制/图标”机器人:标签=“@字符串/ APP_NAME”>
< /用途&
< /舱单>
本文地址: &
扫一扫关注官方微信代码获取Android的VersionCode和VersionName信息-不好听网
代码获取Android的VersionCode和VersionName信息
ionCode升级App版本时用,ionName显示给用户。
* get App versionCode
* @param context
public String getVersionCode(Context context){
PackageManager packageManager=context.getPackageManager();
PackageInfo packageI
String versionCode=;
packageInfo=packageManager.getPackageInfo(context.getPackageName(),0);
versionCode=packageInfo.versionCode+;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return versionC
* get App versionName
* @param context
public String getVersionName(Context context){
PackageManager packageManager=context.getPackageManager();
PackageInfo packageI
String versionName=;
packageInfo=packageManager.getPackageInfo(context.getPackageName(),0);
versionName=packageInfo.versionN
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return versionN
延伸阅读:
更多手机APP、安卓软件资讯阅读请移步到频道。
网编名人堂
开发者专栏,分享最新Android、IOS软件开发教程!
Copyright©
2015 , All rights reserved.
【版权与免责声明】如发现内容存在违法信息,请联系我们,举报电话:023- 举报邮箱:,我们将及时沟通处理本站为IT资讯科技新闻网站,内容除来源注明不好听网原创,否则均为网友转载,涉及言论、版权与本站无关Android程序运行时获取版本名称(versionName) - xwv - ITeye技术网站
博客分类:
问题起因:想在Android程序运行时,获取AndroidManifest.xml中设置的版本名称,即android:versionName。
下面两个blog给出代码,做了解答;现将它们贴于此。
* 返回当前程序版本名称
public static String getAppVersionName(Context context) {
String versionName = "";
// Get the package info
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo("com.google.apps.contacts", 0);
versionName = pi.versionN
if (TextUtils.isEmpty(versionName)) {
return "";
} catch (Exception e) {
Log.e(THIS_FILE, "Exception", e);
return versionN
S// 版本号
PackageManager pm = getPackageManager();
PackageInfo pi = pm.getPackageInfo("com.beem.project.beem", 0);
versionname = pi.versionN// 获取在AndroidManifest.xml中配置的版本号
} catch (PackageManager.NameNotFoundException e) {
versionname = "";
浏览: 188739 次
来自: 广州
能对你有启发和帮助就好
哈哈 谢谢你的博客,解决了我一个头痛的问题。}

我要回帖

更多关于 android versionname 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信