代码之家  ›  专栏  ›  技术社区  ›  Ilja

如何仅为版本变体设置signingConfigs?

  •  3
  • Ilja  · 技术社区  · 6 年前

    我已经用fastlane设置了连续部署,用于处理发布应用程序的代码签名,令人恼火的是,当我在我的机器上的debug-in中运行它们时,android studio失败了,因为它找不到它们的路径(它们被声明为下面演示的env变量)。我可以通过为env变量创建虚拟数据来解决这个问题,但宁愿android studio忽略这段代码,除非它运行的是一个版本构建。

    所以在我的 app/build.gradle 刚好在…之后 defaultConfig 我有

    signingConfigs {
        release {
            storeFile file(System.getenv("MYAPP_STOREFILE"))
            storePassword System.getenv("MYAPP_STORE_PASSWORD")
            keyAlias System.getenv("MYAPP_KEY_ALIAS")
            keyPassword System.getenv("MYAPP_KEY_PASSWORD")
        }
    }
    

    我想把它放在下面 release 会成功,但运气不好:/

    1 回复  |  直到 6 年前
        1
  •  1
  •   dipdipdip    6 年前

    这不是一个非常优雅的解决方案,但只是用try-catch来包装它?

    signingConfigs {
        release {
            try {
                storeFile file(System.getenv("MYAPP_STOREFILE"))
                storePassword System.getenv("MYAPP_STORE_PASSWORD")
                keyAlias System.getenv("MYAPP_KEY_ALIAS")
                keyPassword System.getenv("MYAPP_KEY_PASSWORD")
           } catch (Exception ignored) {
                // Do stuff or just ignore
           }
        }
    }
    

    如果不想尝试捕获,可以尝试以下方法:

    signingConfigs {
        release {
            storeFile System.getenv("MYAPP_STOREFILE") ? file(System.getenv("MYAPP_STOREFILE")) : null
            storePassword System.getenv("MYAPP_STORE_PASSWORD")
            keyAlias System.getenv("MYAPP_KEY_ALIAS")
            keyPassword System.getenv("MYAPP_KEY_PASSWORD")
        }
    }