Wikipedia Android应用构建与发布工具集

Wikipedia Android应用构建与发布工具集

项目描述

这是Wikipedia官方Android应用的构建与发布工具集,提供完整的自动化构建流程。项目包含多种实用工具脚本,用于构建不同渠道的APK、管理版本号、上传发布包以及处理多语言资源等。

功能特性

  • 多平台构建支持:支持构建beta、生产环境和各应用商店(Amazon/Samsung/Huawei)的APK
  • 版本管理:自动化版本号递增和Git标签管理
  • 发布上传:自动上传APK到Wikimedia发布服务器
  • 多语言支持:自动从MediaWiki API获取语言列表并生成资源文件
  • 设计令牌处理:支持从Codex设计系统获取颜色令牌
  • 文档检查:验证字符串资源文档完整性
  • 跨平台兼容:支持Windows、macOS和Linux系统

安装指南

系统要求

  • Python 3.x
  • Git
  • Android SDK (ANDROID_HOME环境变量)
  • SCP (用于上传功能)

安装步骤

  1. 克隆仓库:
git clone https://github.com/wikimedia/wikipedia-android.git
cd wikipedia-android
  1. 安装Python依赖:
pip install requests lxml jinja2
  1. 配置签名信息(生产构建需要):
mkdir ~/.sign
echo "STORE_FILE=your.keystore" > ~/.sign/signing.properties
echo "STORE_PASSWORD=yourpassword" >> ~/.sign/signing.properties
echo "KEY_ALIAS=youralias" >> ~/.sign/signing.properties
echo "KEY_PASSWORD=yourkeypassword" >> ~/.sign/signing.properties

使用说明

构建所有发布变体

python scripts/build-all.py

构建单个发布版本

python scripts/make-release.py --prod  # 生产版本
python scripts/make-release.py --beta  # beta版本
python scripts/make-release.py --channel amazon  # Amazon渠道包

上传APK到发布服务器

python scripts/upload-apks.py

递增版本号

python scripts/bump-version.py

生成语言资源

python scripts/generate-languages.py

核心代码

多平台构建脚本 (build-all.py)

def main():
    builds = [
        ("Beta bundle", ["--beta", "--bundle"]),
        ("Production bundle", ["--prod", "--bundle"]),
        ("Amazon APK", ["--channel", "amazon"]),
        ("Samsung APK", ["--channel", "samsung"]),
        ("Huawei APK", ["--channel", "huawei"]),
    ]
    
    success_count = 0
    total_builds = len(builds)
    
    for description, args in builds:
        print(f"Building {description}...")
        if run_make_release(*args):
            success_count += 1

APK上传脚本 (upload-apks.py)

UPLOAD_CONFIGS = [
    {
        'name': 'beta',
        'pattern': './releases/wikipedia-*-beta*.apk',
        'path': 'releases.discovery.wmnet:/srv/org/wikimedia/releases/mobile/android/wikipedia/betas/'
    },
    {
        'name': 'stable',
        'pattern': './releases/wikipedia-*-r*.apk',
        'path': 'releases.discovery.wmnet:/srv/org/wikimedia/releases/mobile/android/wikipedia/stable/'
    }
]

def upload_apks(name, pattern, upload_path):
    files = glob.glob(pattern)
    if files:
        subprocess.run(['scp'] + files + [upload_path], check=True)

版本号递增脚本 (bump-version.py)

def set_version_code(data):
    match = version_code_pattern.search(data)
    version_code = int(match.group('value'))
    next_version_code = r'\g<key> {}'.format(version_code + 1)
    return version_code_pattern.sub(next_version_code, data)

def bump(file_path):
    transform_file(file_path, set_version_code)
    run_git_command('checkout', 'main')
    run_git_command('checkout', '-b', 'bumpVersionCode')
    run_git_command('add', '-u', file_path)
    run_git_command('commit', '-m', 'Bump versionCode.')

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-07-12 10:01  qife  阅读(6)  评论(0)    收藏  举报