当前位置: 首页 > news >正文

android将打包文件的password和alias写入到本地文件

1.gradle.properties定义


mysign.properties= D\:\\mysign.properties
2.D盘创建mysign.properties文件

storeFile = D:/1.keystore

storePassword = 1

keyAlias = 1

keyPassword = 1

3.app-build.gradle创建方法,引用方法调用变量。

// 定义签名配置
def getSigningConfig() {
    def signCloudPath = ""
    if (project.hasProperty('mysign.properties')) {
        signCloudPath = project.getProperties().get('mysign.properties')
    }
//    def signingPropsFile = rootProject.file("mysign.properties")
    if (new File(signCloudPath).exists()) {
        println "Found mysign.properties, using it for signing."

        // 加载 mysign.properties 文件
        def props = new Properties()
        props.load(new FileInputStream(new File(signCloudPath)))
        println "Fprops['storeFile']"+props['storeFile']
        // 获取签名信息
        def storeFile = file(props['storeFile'])
        def storePassword = props['storePassword']
        def keyAlias = props['keyAlias']
        def keyPassword = props['keyPassword']
        println "keyAlias="+storePassword+"storePassword = "+keyAlias

        return [
            storeFile :storeFile,
            storePassword : storePassword,
            keyAlias : keyAlias,
            keyPassword : keyPassword
        ]
    } else {
        println "mysign.properties not found, using default debug signing config."
        return null
    }
}
 

signingConfigs {
        // 创建一个用于release版的签名配置项
        release {
            // 动态加载签名配置
            def signingConfig = getSigningConfig()
            println("signingConfig")
            println(signingConfig)
            println(signingConfig)
            if (signingConfig != null) {
                storeFile signingConfig.storeFile
                storePassword signingConfig.storePassword
                keyAlias signingConfig.keyAlias
                keyPassword signingConfig.keyPassword
            }
        }
    }

http://www.xdnf.cn/news/139699.html

相关文章:

  • 区块链如何达成共识:PoW/PoS/DPoS的原理、争议与适用场景全解
  • 一些有关ffmpeg 使用(1)
  • LSPatch官方版:无Root Xposed框架,自由定制手机体验
  • MySQL的日志--Undo Log【学习笔记】
  • MCP认证考试技术难题实战破解:从IP冲突到PowerShell命令的深度指南
  • Hadoop进阶之路
  • 第100+39步 ChatGPT学习:R语言实现Xgboost SHAP
  • AI网络渗透kali应用(gptshell)
  • 第十二天 使用Unity Test Framework进行自动化测试 性能优化:Profiler分析、内存管理
  • 【QQmusic自定义控件实现音乐播放器核心交互逻辑】第三章
  • PyCharm 中 FREECAD 二次开发:从基础建模到深度定制
  • uni-app中获取用户实时位置完整指南:解决权限报错问题
  • 运维之SSD硬盘(SSD hard Drive for Operation and Maintenance)
  • Spring Cloud Gateway 如何将请求分发到各个服务
  • AI 工程师崛起:科技浪潮下的新兴力量
  • 机器学习的基本概念
  • 纯HTMLCSS静态网站——元神
  • 论文阅读笔记——ZeroGrasp: Zero-Shot Shape Reconstruction Enabled Robotic Grasping
  • 什么是视频上墙
  • 【研究学习】开源调制识别数据集
  • freeswitch配置视频对接
  • 第11章 面向分类任务的表示模型微调
  • 图论---Kruskal(稀疏图)
  • Bytebase 3.3.1 - DML一键回滚支持 Oracle
  • 在Python中设置现有Word文档的缩进
  • 正则表达式及其游戏中应用
  • 系统架构师2025年论文《论软件架构评估》
  • SecureCRT配置端口转发-通过跳板机SSH到其他服务器
  • Go 语言 TCP 端口扫描器实现与 Goroutine 池原理
  • 【AI插件开发】Notepad++ AI插件开发1.0发布和使用说明