Получить текущую версию сборки приложения - Xamarin.Android

Мне нужно отобразить версию сборки приложения на моей странице настроек.

Итак, как я могу программно получить файлы versionCode и versionName из AndroidManifest.xml.

или

Есть ли способ получить версию сборки программно в xamarin.forms.

Ответ 1

Для имени версии:

Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName

Код версии:

Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionCode

Ответ 2

В службе зависимостей:

Для iOS:

using Foundation;

[assembly: Xamarin.Forms.Dependency(typeof(Screen_iOS))]

namespace XXX.iOS
{
    public class Screen_iOS : IScreen
    {

        public string Version
        {
            get
            {
                NSObject ver = NSBundle.MainBundle.InfoDictionary["CFBundleShortVersionString"];
                return ver.ToString();
            }
        }

    }
}

Для Android:

using Xamarin.Forms;

[assembly: Dependency(typeof(ScreenAndroid))]

namespace XXX.Droid
{
    class ScreenAndroid : Java.Lang.Object, IScreen
    {

        public string Version
        {
            get
            {
                var context = Forms.Context;
                return context.PackageManager.GetPackageInfo(context.PackageName, 0).VersionName;
            }
        }

    }
}

И интерфейс:

interface IScreen
{
    string Version { get; }
}

Ответ 3

В Xamarin.Android вы всегда можете попробовать:

public double GetAppVersion()
{
   var info = AppContext.PackageManager.GetPackageInfo(AppContext.PackageName, 0);
   return info.VersionCode;
}

а затем вам понадобится инъекция зависимостей, чтобы вызвать этот метод из вашего проекта Xamarin.Forms.

Ответ 4

В Xamarin.Essentials вы можете использовать следующее:

Version version = AppInfo.Version;

Оттуда вы можете получить версию сборки.

Если вам действительно нужен номер сборки, вы также можете использовать ярлык:

string buildNumber = AppInfo.BuildString;