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 (用于上传功能)
安装步骤
- 克隆仓库:
git clone https://github.com/wikimedia/wikipedia-android.git
cd wikipedia-android
- 安装Python依赖:
pip install requests lxml jinja2
- 配置签名信息(生产构建需要):
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智能小助手)
公众号二维码


浙公网安备 33010602011771号