Buildozer.spec配置package.domain含大写时编译被自动转小写如何解决
Buildozer包名大写字母自动转小写问题成因与修复方案
问题成因
Android官方应用包名(Application ID)规范默认推荐全小写格式,Buildozer为了避免后续Android构建工具抛出兼容性错误、符合Google Play商店上传规则,在源码层面对读取到的package.domain、package.name参数做了强制转小写处理。无论你在buildozer.spec中配置的参数包含多少大写字母,最终拼接生成APK包名时都会被转换为全小写,这就是你设置的com.Anderson.flute变为com.anderson.flute的根本原因。
注:Android系统本身技术上支持包名包含大写字母,仅Google Play商店要求上传的应用包名必须全小写。
修复方案
方案1:修改Buildozer源码关闭强制转小写逻辑
在Google Colab环境中,先定位到Buildozer的安装目录,默认路径为/usr/local/lib/python3.x/site-packages/buildozer/(x对应你Colab环境使用的Python次版本号),找到targets/android/__init__.py文件,搜索文件内处理package.domain和package.name参数的代码行,删掉对应代码末尾的.lower()调用,保存后重新执行编译流程,即可保留配置文件中设置的大写字母。方案2:编译完成后手动修改APK包名
如果你不想修改Buildozer源码,可以通过反编译修改APK配置即可:
- 安装APKTool工具后,执行
apktool d 你的编译输出的apk路径反编译生成的APK文件- 打开反编译输出目录下的
AndroidManifest.xml,将根节点的package属性值修改为你需要的com.Anderson.flute- 执行
apktool b 反编译输出目录重新生成未签名的APK- 使用jarsigner或apksigner工具对新生成的APK重新签名即可正常使用
内容的提问来源于stack exchange,提问作者Viny G
相关产品推荐
相关产品推荐

