使用脚本更新 Android 应用程序版本和内部版本号,而无需更改 android 清单版本代码和版本名称



我已经能够在游戏开始前通过脚本文件自动将我的版本代码更改为我当前的 git 提交号,以用作 androidmanifest 中的内部版本号.xml为我当前的 git 提交号。但由于特殊原因,我不想使用版本代码作为我的游戏内部版本号。我想使用版本代码和版本名称以外的其他东西,我可以在游戏开始前通过脚本保存我的 git 提交编号,稍后在游戏期间我可以读取该值并显示在我的游戏中。所以我需要两样东西

  1. 如何在androidManifest文件中创建一个额外的标签,我可以在其中保存此值
  2. 和脚本,用于在游戏运行之前更改要在脚本文件中使用的标记值

我使用以下脚本更改清单中的版本代码标记

newverfull=$(git --git-dir="../../.git" --work-tree="../../" rev-list master | wc -l)
manf=AndroidManifest.xml
newvers=`echo $newverfull | sed 's/[^0-9].*$//'`
vers=`sed -n '/versionCode=/s/.*"([0-9][0-9]*)".*/1/p' $manf`
sed /versionCode=/s/'"'$vers'"'/'"'$newvers'"'/ $manf  >new$manf && cp new$manf $manf && rm -f new$manf

我感谢您的帮助。谢谢!

看看这个 shell 脚本。

https://github.com/eaglesakura/jenkins-script/blob/master/update-AndroidManifest.sh

我设法更改了之前发布的脚本。我还在清单文件中制作了一个元数据,并使用下面的脚本更改了其值。

感谢您的帮助。干杯!


newverfull=$(git --git-dir="../../.git" --work-tree="../../" rev-list master | wc -l)
manf=AndroidManifest.xml
verbase=`echo $newverfull | sed 's/(.*.)([0-9][0-9]*).*$/1/'`
vername=`sed -n '/GameVersion/s/.*"([^"]*)".*/1/p' $manf`
sed /GameVersion/s/'"'$vername'"'/'"'$verbase'"'/ $manf  >new$manf && cp new$manf $manf && rm -f new$manf

下面是一个示例。 自定义标签是游戏版本。

<application android:name=".MyApplication"
             android:icon="@drawable/icon"
             android:label="@string/app_name">
    <meta-data android:name="GameVersion" android:value="1.9" />
    <activity android:name="com.someone.something.MainActivity"
              android:theme="@android:style/Theme.Translucent.NoTitleBar"
              android:screenOrientation="sensor"
              android:label="@string/app_name">

要访问它:

    ApplicationInfo ai = _context.getPackageManager().getApplicationInfo(_context.getPackageName(),PackageManager.GET_META_DATA);
    ai.metaData.get("GameVersion")

如您所见,您需要一个上下文来获取对 PackageManager 的引用。 我更喜欢使用 getApplicationContext() 来执行此操作,但如果这是您获取数据的地方,则可以使用您的活动上下文。

最新更新