【问题标题】:buildConfigField does not recover my api key from gradle.propertiesbuildConfigField 无法从 gradle.properties 恢复我的 api 密钥
【发布时间】:2019-02-08 23:34:04
【问题描述】:

我正在尝试保护我的 API 密钥,因为我想上传一个公共存储库,我在我的 gradle 中尝试了这个并将密钥添加到 gradle.properties 文件中

build.gradle

 buildTypes {

        debug {
            buildConfigField 'String', "FIRST_APIKEY", "\"FIRST_APIKEY\""
            buildConfigField 'String', "SECOND_APIKEY", "\"SECOND_APIKEY\""
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

gradle.properties

FIRST_APIKEY = "apikey"
SECOND_APIKEY = "apikey"

其中说 apikey 是当前的字母数字 apikey

当我将它实现到一个类中以获取该 apikey 时,它不会返回 apikey

例如,我试图从该 apikey 解析数据,但我什么也没得到,因为它无法访问

service.getData(BuildConfig.FIRST_APIKEY)....

BuildConfig.FIRST_APIKEY 与调试器的结果如下

结果 = FIRST_APIKEY

它应该实现我之前在gradle.properties 文件中配置的apikey,而不是FIRST_APIKEY

感谢任何提示

【问题讨论】:

    标签: java android gradle android-gradle-plugin


    【解决方案1】:

    首先,在gradle的配置阶段将你的属性加载到Properties对象:

    apply plugin: 'com.android.application'
    
    Properties localProperties = new Properties()
    localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
    

    然后你可以找到buildConfigField的房产:

    buildConfigField 'String', "FIRST_APIKEY", localProperties.getProperty('FIRST_APIKEY')
    buildConfigField 'String', "SECOND_APIKEY", localProperties.getProperty('SECOND_APIKEY')
    

    如果您的属性如下所示:

    FIRST_APIKEY=apikey
    SECOND_APIKEY=apikey
    

    那你需要把localProperties.getProperty('FIRST_APIKEY')换成"\"${props.getProperty('FIRST_APIKEY')}\""

    【讨论】:

      【解决方案2】:

      你不应该分配一个静态字符串,而是一个变量:

      buildConfigField("String", "FIRST_APIKEY", "\"${firstApiKey}\"")
      resValue("string", "first_api_key", "${firstApiKey}")
      

      它可能不关心任何.properties,除非加载它们;例如:

      def apikeys = new Properties()
      apikeys.load(new FileInputStream(rootProject.file('apikeys.properties')))
      project.ext.set('firstApiKey', apikeys['firstApiKey'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-14
        • 2021-07-26
        • 2016-06-13
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        相关资源
        最近更新 更多