当前位置: 首页 > 知识库问答 >
问题:

Android Gradle -从外部文件加载签名配置

彭鸿彩
2023-03-14

在Gradle for Android中,为发布版本定义签名配置似乎是常见的做法,如下所示:

android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }

    buildTypes {
        foo {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.myConfig
        }
    }
}

问题是,我想把我的build.gradle文件保存在版本控制中,并且在一些git服务器上没有我的密钥库的密码(这与我用于其他东西的密码相同,愚蠢的,我知道)没有好的感觉。

有没有办法从硬盘驱动器上的某个位置从外部文件加载签名配置?

共有3个答案

单于海荣
2023-03-14

您可以将敏感详细信息移动到单独的签名文件中,并让gradle加载这些信息。

这里有一篇关于如何做的好文章

裴凯定
2023-03-14

放入文件签名。属性,其中特定于模块的build.gradle。找到了kts。别忘了将其添加到.gitignore文件中!

signing.properties

storeFilePath=/home/willi/example.keystore
storePassword=secret
keyPassword=secret
keyAlias=myReleaseSigningKey

build.gradle.kts

android {
    // ...
    signingConfigs {
        create("release") {
            val properties = Properties().apply {
                load(File("signing.properties").reader())
            }
            storeFile = File(properties.getProperty("storeFilePath"))
            storePassword = properties.getProperty("storePassword")
            keyPassword = properties.getProperty("keyPassword")
            keyAlias = "release"
        }
    }

    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs.getByName("release")
            // ...
        }
    }
}
严宏旷
2023-03-14

我使用类似这样的东西。

我有一个signing.properties在我的应用程序根文件夹。

STORE_FILE=xxxx
STORE_PASSWORD=xxx
KEY_ALIAS=xxx
KEY_PASSWORD=xxx

此文件不在版本控制下打开。当然,您可以更改文件夹。

然后在您的build.gradle中,您可以使用这样的内容:

 android {

        signingConfigs {
            release
        }

        buildTypes {
                release {
                    signingConfig signingConfigs.release
                }     
        }
    }

    def Properties props = new Properties()
    def propFile = file('../signing.properties')
    if (propFile.canRead()){
        props.load(new FileInputStream(propFile))

        if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
                props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {

            android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
            android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
            android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
            android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
        } else {
            android.buildTypes.release.signingConfig = null
        }
    }else {
        android.buildTypes.release.signingConfig = null
    }

如果更改文件夹,则必须更改以下行:

 def propFile = file('../signing.properties')
 类似资料:
  • 我正在开发一个Spring Boot应用程序。我想提供一个(相当初级的)插件系统。最初,我希望只将JAR添加到类路径中就足够了,如下所示: 此外,如果我尝试在插件控制器中一个JpaRepository,它会失败,因为它找不到存储库接口类(我猜这是因为我乱弄类加载器引起的问题)。 不过,在我的主应用程序中自动创建存储库就可以很好地工作,因此它的配置不应该是一个问题。 是不是我做错了什么?我是否可以配

  • 问题内容: 我在github仓库中下载了spring batch admin应用程序,并将其导入了eclipse中。它完美地工作。 然后,我问自己如何将外部配置文件导入可以在我的职务定义类中使用的应用程序中。 我尝试了这个: 虚拟机参数 作业配置 XML配置 使用tomcat 7启动应用程序时的堆栈跟踪 pom.xml 我使用的文件和配置与spring batch admin github项目完全

  • 本文向大家介绍SpringBoot内部外部配置文件加载顺序解析,包括了SpringBoot内部外部配置文件加载顺序解析的使用技巧和注意事项,需要的朋友参考一下 内部配置加载顺序 SpringBoot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –cl

  • 我有一个内部application.yml文件,位于classpath资源中,包含以下字段: 有一个外部配置文件:config.properties。它定义了一些要在我的服务器上下文中重写的字段。文件配置.属性: 我正在使用以下命令运行应用程序: 如何使spring正确地重写内部配置文件,使其只重写额外的属性(redis.hostname、redis.password),但仍然保留在内部文件中定义

  • 问题内容: 到处寻找它,找到答案却迷失了。有谁知道如何从另一个js文件加载外部.js文件? innerHTML可以工作,并且可以粘贴响应文本。问题在于JS无法在该文档中工作。jQuery.getScript应该正在加载该外部js文件,但不会加载 问题答案: 这是您将外部js文件加载到Jquery的方法

  • 实际开发中,大多数项目,通常是3D美术设计师或建筑、机械等行业工程师提供的由3dmx、blender、substence、Solidworks等软件创建好的三维模型文件。 本章节第一小节以Threejs引擎自身为例,讲解Threejs模型导入导出,该小节对Threejs模型文件本身进行了讲解,让你明白你加载的三维模型文件里面都是包含什么内容。其它章节展示了一些加载外部不同格式模型的案例,除了讲解实