通过 Git Hub secret 在 build.gradle Android 中传递本地属性文件 local.properties

7

我正在尝试自动化构建Android应用程序的过程,我已将baseUrl存储在local.properties文件中,并通过Github secret传递文件内容,但是Github操作一直失败。

build.gradle:

    def propFile=rootProject.file("./local.properties")
    def properties = new Properties()
    properties.load(new FileInputStream(propFile))

    def baseUrl = properties['BASEURL']
    //getProperty("BASEURL", "")


    debug {
        buildConfigField 'String', "BASEURL", baseUrl
        resValue 'string', "base_url", baseUrl
    }

YML:

name: Android CI

on:
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Decode BASEURL
      env:
        BASEURL: ${{ secrets.BASEURL }}
      run: echo BASEURL="$BASEURL" > ./local.properties


    - name: Clean
      run: ./gradlew clean
    - name: Build with Gradle
      run: ./gradlew build

如何通过Github秘密方式传递BASEURL

enter image description here

这是来自 Github Action 控制台的日志输出

enter image description here


当您在 GitHub Actions 中创建项目时,可能没有将 local.properties 放置在项目的根目录下。请尝试执行 echo BASEURL="$BASEURL" > ./local.properties 命令,并运行 ls -al 命令查看文件布局。 - smac89
我检查了项目根目录下的local.properties文件,@smac89。 - Jitendra Prajapati
2个回答

4

我解决了我的问题,原来是从 Github 密钥中传递的参数有误,应该像这样:

\"http://fakeapi.com"\

而且我在操作文件中出现错误,应该使用./gradlew build,而不是

./gradlew assembleDebug --stacktrace

只有这样,它才会从 build.gradle 中调用以下部分并将 BaseUrl 替换为 local.properties 中的新值。
debug {
            buildConfigField 'String', "BASEURL", baseUrl
            resValue 'string', "base_url", baseUrl
        }

我还使用了https://github.com/juliangruber/read-file-action来查看local.properties文件的内容,并验证其中的所有内容是否正确。


0
我使用了下面的命令,它起作用了。不需要考虑反斜杠(\)。
run: echo 'apiKey=${{ secrets.API_KEY }}' > ./local.properties

而秘钥 API_KEY 的值被存储为 "*******"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接