在 Android APK 中嵌入版本详细信息

2024-04-04

我的代码存储在SVN版本控制中。我使用 Eclipse 来构建我的 Android 应用程序。

在我的应用程序中,我有一个关于框。我想在其中显示正确的源代码控制修订版/标签/任何内容。

有没有一种方法可以自动执行此操作,以便我在“关于”框中的版本字符串始终正确,或者这是我每次提交时都必须手动编辑的内容?

感谢您早期关于 $keywords$ 的回答。

设置 SVN 属性svn:keywords to Rev确实扩大了private String m_svn_rev = "$Rev:$"每次我提交that file.

SVN 是一个基于文件的版本控制系统。

这导致我想知道我是否可以以某种方式预处理 Android 构建中的一些文件以注入 svnversion 输出?


一种可能的方法。 在您的 AndroidManifest.xml 中将元数据添加到您的活动中以保留修订版本或您想要使用的任何内容

<activity android:name="SampleActivity">
    <meta-data android:value="$Rev: 164 $" android:name="com.example.version" />
</activity>

然后在你的活动中

try {
    final ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    final String version = (String)ai.metaData.get("com.example.version");
    System.out.println("version: " + version);
} catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

您可能还想设置android:versionName="$Rev$"在你的清单中。

自动化增加版本号的过程android:versionCode并承诺AndroidManifest.xml有多种选择,构建maven or ant可能是替代方案,但让我们使用 Eclipse 和 ADT 来实现。

首先,将构建器添加到您的项目中(我的项目 -> 属性 -> 构建器)

这个构建器应该调用android-increment-manifest-version使用项目的AndroidManifest.xml作为论点

android-increment-manifest-version 脚本类似于

#! /bin/bash
# android-increment-manifest-version:
# increment the version number found in the AndroidManifest.xml file
# (android:versionCode="n") in place and commit it to subversion.
#
# Copyright (C) 2010 Diego Torres Milano - http://dtmilano.blogspot.com

usage() {
    echo "usage: $PROGNAME AndroidManifest.xml" >&2
    exit 1
}

PROGNAME=$(basename $0)

if [ "$#" -ne 1 ]
then
    usage
fi

MANIFEST="$1"

perl -npi -e 's/^(.*android:versionCode=")(\d+)(".*)$/"$1" . ($2+1) . "$3"/e;' $MANIFEST
svn ci -m "Version incremented" $MANIFEST
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android APK 中嵌入版本详细信息 的相关文章

随机推荐

  • 从 Perl 中的字符串中删除换行符

    我有一个从文本文件读取的字符串 但在 Ubuntu Linux 中 我尝试从末尾删除其换行符 我用了所有的方法 但对于s n r 我看看它是否找到任何替换任何新行字符串 它替换了字符串 但当我打印它时它仍然转到下一行 此外 当我使用chom
  • VueJS 获取 Div 的宽度

    我有一个 Vue 组件 它使用引导网格 在子组件中 我想获取控制器中某个 div 的当前宽度 这是子组件
  • 如何克服 Selenium 中的 Element id 异常?

    T 在 UiBinder 本身中为 GWT 小部件设置 id For eg 还添加了在 gwt xml 中 然后我在 Selenium 测试用例中尝试这个 WebElement element driver findElement By i
  • 为什么java TreeMap基于红黑树的实现?

    第三段维基百科关于 AVL 树的文章 http en wikipedia org wiki AVL tree说 因为 AVL 树更加严格平衡 所以对于查找密集型应用程序来说 它们比红黑树更快 所以 不应该TreeMap http docs
  • 具有递归类型参数的泛型类型以及抽象 self 方法如何允许方法链正常工作?

    我在读有效的 Java 版本 3 在第 2 章第 14 页中 作者讨论了构建器模式并呈现了以下代码 public abstract class Pizza public enum Topping HAM MUSHROOM ONION PEP
  • Java:获取对象的唯一哈希值

    我正在尝试获取Java对象的唯一哈希值 如下所示 If A B then A HashValue B Hash HashValue If A B then A HashValue B HashValue 假设该对象包含几个布尔值和整数字段
  • @angular-builders - 在优化阶段忽略某些脚本

    我需要让 Angular 忽略某个js文件在优化阶段 这样它就不会被优化 缩小 prod建造 为此目的 angular builders包似乎是一个可行的解决方案 我设置了angular json配置如下 architect build b
  • Android:如何通过 ueventd.rc 向设备授予 666 权限

    我需要访问连接到我的 已root Android 的USB 摄像头 我使用的是运行 Android 4 2 2 的三星 Galaxy S4 我想用普通的应用程序访问它 所以我需要该设备是世界可读的 我可以通过 shell 进行连接并输入 r
  • 读取Excel文件时如何识别单元格为空白或为空或为空

    我读取了一个 Excel 文件来传递某些数据字段的输入 但是当我运行该程序时 某些单元格值返回为 null 某些单元格值返回为空白 实际上 当我打开 Excel 文件时 单元格中没有可用值 如何手动识别 Excel 单元格为空或空白 对于某
  • PHP:为什么只能通过引用传递变量?

    如果您是 PHP 开发人员 您很可能看到过以下通知 注意 在 somefile php 中只有变量应该通过引用传递 在线 xxx 问题广泛处理于只有变量应该通过引用传递 https stackoverflow com questions 4
  • 更新属性文件的更好的类?

    Though java util properties允许读写属性文件 写入时不保留格式 这并不奇怪 因为它与属性文件无关 有没有PropertyFile那里的类 或类似的类 保留注释和空行并更新属性值 它没有比 Apache 的 Comm
  • SQLAlchemy 中的 VALUES 子句

    有没有办法建立一个QuerySQLAlchemy 中的对象相当于 SELECT FROM VALUES 1 2 3 AS sq 从我在文档中看到的 VALUES子句仅出现在与INSERT 现在 这在 SQLAlchemy 中本身就可用 您的
  • 通知通知时发生 TransactionTooLargeException

    我在 android 中录制时有更新时间 我使用 CountDownTimer 并根据通知更新到远程视图 我已经优化了最小的 数据但仍然得到 TransactionTooLargeException public void showNoti
  • 将 DMS 坐标转换为 R 中的十进制

    我有以下 DMS 格式的坐标 我需要将它们转换为十进制 Libraries gt library sp gt library magrittr Latitide Longitude as strings gt lat lt 21d11m24
  • C:赋值中的类型不兼容

    我正在编写一个程序来检查端口是否在 C 中打开 特别是其中一行将参数之一复制到 char 数组 然而 当我尝试编译时 它说 错误 类型不兼容 任务 这是代码 错误在于分配addr include
  • 如何从纯 python 创建 yaml 文件?

    示例来自将 YAML 与 Python 结合使用 http mikkel elmholdt dk p 4 原始 YAML 文件包含此内容 tree format treeroot branch1 name Node 1 branch1 1
  • Apache Beam 中的异步 API 调用

    正如标题所说 我想使用 python 在 apache beam 中进行异步 API 调用 目前 我正在为 Pcollection 中的每个元素调用 DoFn 内的 API 自由度代码 class textapi call beam DoF
  • Material UI 中的相同高度的卡片

    尝试使用 3 张水平卡片 但高度相同且响应灵敏 Like 卡A 卡 B 卡C 覆盖渲染组件
  • 切换 elseif 来切换 case

    我们如何将下面的 if else 语句切换为 switch case 语句 任何人都可以帮忙解决这个问题 if Webcc1 Contains licensePartID dtExpiryDate dtActivatedDate AddYe
  • 在 Android APK 中嵌入版本详细信息

    我的代码存储在SVN版本控制中 我使用 Eclipse 来构建我的 Android 应用程序 在我的应用程序中 我有一个关于框 我想在其中显示正确的源代码控制修订版 标签 任何内容 有没有一种方法可以自动执行此操作 以便我在 关于 框中的版