2017-10-05 39 views
0

我有一個Android Studio應用程序,現在有近100個與它關聯的「productFlavors」,當然全部在build.gradle中定義。我想從命令行構建它們,因爲在IDE中一次構建它們將是一場噩夢。當我在使用命令行gradlew.bat assembleRelease構建它們的過程中遇到錯誤時,出現了我的問題。一旦我解決了這個錯誤,我想在失敗的時候開始構建(可能有50個版本),而不是在開始階段。 Gradle有沒有辦法做到這一點?用Ant我不得不將它們評論出來,我希望Gradle有一個更好的方法,因爲結構在文件中更加複雜。Android gradlew.bat assembleRelease選擇開始包

UPDATE

我終於與涵蓋搖籃和Ant(難吃的,但它的工作原理)的解決方案。基本上我想建立在我的100個白標籤風格上,帶有版本的前綴,然後將它複製到沒有版本的交付APK。要做到這一點我的Ant腳本的樣子:

#!/bin/sh 
DEPLOY_DIR=C:/AndroidBuilds/MyCompany.Build 
VERSION="63" 

NAME="WhiteLabel1" 
DEPLOY_FOLDER="whitelabel1" 
APK_NAME=$NAME$".apk" 
gradlew assemble$NAME 
cp $DEPLOY_DIR/$DEPLOY_FOLDER/$VERSION"-"$APK_NAME $DEPLOY_DIR/$DEPLOY_FOLDER/$APK_NAME 

NAME="WhiteLabel2" 
DEPLOY_FOLDER="whitelabel2" 
APK_NAME=$NAME$".apk" 
gradlew assemble$NAME 
cp $DEPLOY_DIR/$DEPLOY_FOLDER/$VERSION"-"$APK_NAME $DEPLOY_DIR/$DEPLOY_FOLDER/$APK_NAME 

這導致2周的APK產生,63-WhiteLabel1.APK63-WhiteLabel2.APK,然後將其複製到各自部署的目錄爲WhiteLabel1.APKWhiteLabel2.APK

我想,如果你是聰明的你可以使這個參數運行你想要的,但Android Studio在這方面做得相當不錯。

回答

1

你不能專門做到這一點,但你可以解決這個問題,並用一些腳本魔法來解決它。

如果你有一個叫做Release構建類型,一種叫做Iron的味道,你可以運行:

gradlew.bat assembleIronRelease 

所以,你可以寫,將通過所有口味的循環中運行一個腳本,如果失敗它會告訴你哪一個失敗。然後您可以修復錯誤,並再次啓動腳本,告訴它從X flavor開始(但您必須編寫邏輯來告訴它從哪裏開始)。

+0

這是一個Gradle腳本或其他類型的腳本嗎? –

+0

使用我可以編寫一個Ant腳本來觸發Gradle腳本,其中包含上面列出的所有功能,並帶有失敗邏輯? –

+0

我最終使用了一個Ant腳本,除了構建Gradle之外還做了幾件事情。 –