[Android] अपने एंड्रॉइड एप्लिकेशन का निर्माण / संस्करण संख्या कैसे प्राप्त करें?


Answers

यदि आप ग्रेड प्लगइन / एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं, तो संस्करण 0.7.0 के अनुसार , संस्करण कोड और संस्करण का नाम BuildConfig में स्थिर रूप से उपलब्ध है। सुनिश्चित करें कि आप अपने ऐप के पैकेज को आयात करते हैं , और एक अन्य BuildConfig नहीं:

import com.yourpackage.BuildConfig;
...
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;

कोई संदर्भ ऑब्जेक्ट आवश्यक नहीं!

इसके अलावा उन्हें अपने build.gradle फ़ाइल में AndroidManifest.xml बजाय निर्दिष्ट करना सुनिश्चित करें

defaultConfig {
    versionCode 1
    versionName "1.0"
}
Question

मुझे यह पता करने की आवश्यकता है कि मेरे एंड्रॉइड एप्लिकेशन के लिए बिल्ड नंबर कैसे प्राप्त करें या बनाएं। मुझे यूआई में प्रदर्शित करने के लिए बिल्ड संख्या की आवश्यकता है।

क्या मुझे AndroidManifest.xml साथ कुछ करना है?




एक बहुत आसान तरीका है:

private String appVersion = BuildConfig.VERSION_NAME;



स्कॉटीयाब के समाधान (एक्सवी द्वारा संपादित) पर आधारित यह एक साफ समाधान है । यह दर्शाता है कि संदर्भ को कैसे पहले प्राप्त किया जाए, यदि यह आपके विधि द्वारा प्रदान नहीं किया गया है। इसके अलावा यह प्रति पंक्ति एकाधिक विधियों को कॉल करने के बजाय कई पंक्तियों का उपयोग करता है जब आपको अपना एप्लिकेशन डिबग करना है तो इससे आसान हो जाता है

Context context = getApplicationContext(); // or activity.getApplicationContext()
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();

String myVersionName = "not available"; // initialize String

try {
    myVersionName = packageManager.getPackageInfo(packageName, 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

अब जब कि आपने स्ट्रिंग myVersionName में संस्करण का नाम प्राप्त किया है, तो आप इसे एक myVersionName सेट कर सकते हैं या जो भी आप चाहते हैं ..

// set version name to a TextView
TextView tvVersionName = (TextView) findViewById(R.id.tv_versionName);
tvVersionName.setText(myVersionName);



संस्करण कोड प्राप्त करने का तरीका यहां दिया गया है:

public String getAppVersion() {
    String versionCode = "1.0";
    try {
        versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
    } catch (PackageManager.NameNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return versionCode;
}



 package com.sqisland.android.versionview;

import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textViewversionName = (TextView) findViewById(R.id.text);

    try {
        PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        textViewversionName.setText(packageInfo.versionName);

    }
    catch (PackageManager.NameNotFoundException e) {

    }

  }
}



Gradle और BuildConfig का उपयोग करना

BuildConfig से VERSION_NAME प्राप्त करना

BuildConfig.VERSION_NAME

हां, ये अब इतना आसान है

क्या यह VERSION_NAME के ​​लिए एक खाली स्ट्रिंग लौट रहा है?

यदि आप BuildConfig.VERSION_NAME लिए खाली स्ट्रिंग प्राप्त कर रहे हैं। BuildConfig.VERSION_NAME तो पढ़ें।

मुझे BuildConfig.VERSION_NAME लिए एक खाली स्ट्रिंग मिल रही है क्योंकि मैं अपनी ग्रेड बिल्ड फ़ाइल में versionName सेट नहीं कर रहा था (मैं एएनटी से ग्रैड में माइग्रेट किया गया था)। इसलिए, यह सुनिश्चित करने के लिए निर्देश हैं कि आप अपने VERSION_NAME को ग्रैडल के माध्यम से सेट कर रहे हैं।

build.gradle

def versionMajor = 3
def versionMinor = 0
def versionPatch = 0
def versionBuild = 0 // bump for dogfood builds, public betas, etc.

android {

  defaultConfig {
    versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild

    versionName "${versionMajor}.${versionMinor}.${versionPatch}"
  }

}

नोट: यह मास्टरीड जेक व्हार्टन से है

AndroidManifest.xml से versionName और versionCode को निकालना

और जब से आपने build.gradle फ़ाइल में build.gradle और versionCode को सेट किया है, तो आप उन्हें अपने AndroidManifest.xml फ़ाइल से निकाल सकते हैं, अगर वे वहां हैं




किसी ऐसे व्यक्ति को एप्लिकेशन के UI के लिए BuildConfig जानकारी की आवश्यकता नहीं है, हालांकि, मुझे सीआई जॉब कॉन्फ़िगरेशन या अन्य लोगों की स्थापना के लिए इन सूचनाओं का उपयोग करना है।

आपकी प्रोजेक्ट डायरेक्टरी के अंतर्गत एक स्वचालित रूप से जेनरेट किया जाने वाला फ़ाइल, बिल्डकॉन्फ़ीग। जावा, जब तक कि आप अपनी प्रोजेक्ट सफलतापूर्वक बनाते हैं।

{WORKSPACE} / निर्माण / उत्पन्न / स्रोत / buildConfig / {डिबग | रिहाई} / {पैकेज} /BuildConfig.java

/**
* Automatically generated file. DO NOT MODIFY
*/
package com.XXX.Project;

public final class BuildConfig {
    public static final boolean DEBUG = Boolean.parseBoolean("true");
    public static final String APPLICATION_ID = "com.XXX.Project";
    public static final String BUILD_TYPE = "debug";
    public static final String FLAVOR = "";
    public static final int VERSION_CODE = 1;
    public static final String VERSION_NAME = "1.0.0";
}

स्प्लिट जानकारी जिसे आप अजगर स्क्रिप्ट या अन्य टूल द्वारा की जरूरत है। यहां एक उदाहरण है:

import subprocess
#find your BuildConfig.java
_BuildConfig = subprocess.check_output('find {WORKSPACE} -name BuildConfig.java', shell=True).rstrip()
#get the version name
_Android_version = subprocess.check_output('grep -n "VERSION_NAME" '+_BuildConfig, shell=True).split('"')[1]
print('Android version :’+_Android_version)

कृपया मेरी सीमित अंग्रेजी क्षमता का बहाना करें, लेकिन उम्मीद है कि यह मदद करता है




Xamarin उपयोगकर्ताओं के लिए, संस्करण का नाम और कोड प्राप्त करने के लिए इस कोड का उपयोग करें

1) संस्करण का नाम:

public string getVersionName(){
      return Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName;
}

2) संस्करण कोड:

public string getVersionCode(){
      return Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionCode;
}



private String GetAppVersion(){
        try {
            PackageInfo _info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
            return _info.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return "";
        }
    }

    private int GetVersionCode(){
        try {
            PackageInfo _info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
            return _info.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return -1;
        }
    }



अंदर के टुकड़े के उपयोग के उदाहरण

        import android.content.pm.PackageManager;
        .......

        private String VersionName;
        private String VersionCode;
        .......


        Context context = getActivity().getApplicationContext();

        /*Getting Application Version Name and Code*/
        try
        {

             VersionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;

             /*I find usefull to convert vervion code into String, so it's ready for TextViev/server side checks*/ 

             VersionCode = Integer.toString(context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode);
        } catch (PackageManager.NameNotFoundException e)
        {
             e.printStackTrace();
        }

// DO SOMETHING USEFULL WITH THAT