2016-02-20 77 views
2

为了模拟Espresso的服务器响应,我决定创建一个新的生成类型。我试图通过项目设置来做到这一点,我得到了一些错误,所以我决定手动添加它。Android工作室(Gradle)不会创建签名的apk

我在build.gradle文件下面的配置 - 在我的项目的根目录:

androidConfiguration = { 
     signingConfigs { 
      debug { 
       storeFile file("$rootProject.projectDir/debug.keystore") 
       storePassword "android" 
       keyAlias "androiddebugkey" 
       keyPassword "android" 
      } 

      release { 
       storeFile file("$rootProject.projectDir/androd-prod.keystore") 
       storePassword System.getenv("KEYSTORE_PASSWORD") 
       keyAlias System.getenv("KEY_ALIAS") 
       keyPassword System.getenv("KEY_PASSWORD") 
      } 
     } 
} 

build.gradle文件我的主要模块的添加新mock构建类型。

buildTypes { 
     mock { 
      // Setup default urls 
      buildConfigField "String", "MY_URL_BASE", "\"\"" 

      // Enabling multidex support. 
      multiDexEnabled true 

      dexOptions { 
       incremental true 
       javaMaxHeapSize "4g" 
      } 

      applicationIdSuffix '.mock' 
      versionNameSuffix '-mock' 
      debuggable true 
     } 

     debug {...} 

     release { 
      signingConfig signingConfigs.release 
      ... 
     } 

     applicationVariants.all { variant -> 
      variant.outputs.each { v -> 
       def f = v.outputFile 
       def sha = 'git rev-parse --short HEAD'.execute().text.trim() 
       def fname = f.name.replace(".apk", "-${defaultConfig.versionName}-${defaultConfig.versionCode}-${sha}.apk") 
       v.outputFile = new File(f.parent, fname) 
      } 
     } 
    } 

我运行./gradlew clean aGM命令和应用程序编译成功。但是,我的编译配置上有x符号。那么,有什么想法是我的错误? enter image description here

回答

2

此行添加到您的模拟buildType使用默认的调试signingConfig:

buildTypes { 
    mock { 
     signingConfig signingConfigs.debug 
    } 
} 

这也将使gradle这个任务installMock,这将是没有signingConfig不可用。 assembleMock只是创建一个没有它的未签名的构建。

+0

omg !!在我输入''后,我真的做了它,它只是建议我释放''。由于我没有在我的“调试”类型中,我决定不使用它。基于你的建议我复制/粘贴,它的工作。感谢道格;) – Hesam

+0

我正在寻找这2年...我的男人!你救了我 :) –