6

CircleCI を使用しようとassembleDebugしましたが、ビルド (preDex) に失敗するはずです。なぜ私はそれができないのですか?

  • ProductFlavor の使用 (名前は production)
  • Android Gradle ver.1.1.0-rc1

問題

./gradlew assembleProductionDebug が予期せず終了しました ビルド 92%3% > :app:preDexProductionDebugaction ./gradlew assembleProductionDebug が失敗しました

circle.yml

general:
  artifacts:
    - "app/build/outputs/apk/app-production-release-unaligned.apk"
machine:
  java:
    version: openjdk7
  environment:
    ANDROID_HOME: /usr/local/android-sdk-linux

dependencies:
  pre:
    - echo y | android update sdk --no-ui --all --filter "build-tools-21.1.2"
    - echo y | android update sdk --no-ui --all --filter "platform-tools"
    - echo y | android update sdk --no-ui --all --filter "tools"
    - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services"
    - echo y | android update sdk --no-ui --all --filter "extra-google-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-android-support"
    - echo y | android update sdk --no-ui --all --filter "android-21"
    - git submodule sync
    - git submodule update --init
  cache_directories:
    - ~/.android
    - ~/android
  override:
    - ./gradlew dependencies

test:
  override:
    - ./gradlew test

deployment:
  master:
    branch: master
    commands:
      - ./gradlew assembleProductionDebug
4

3 に答える 3

6

だから私は同じ問題を抱えていて、Javaとgradleのヒープサイズが設定されていても、dexタスクが独自のヒープサイズで大量の新しいスレッドを生成するため、それらが完全に尊重されていないことを発見しました(メモリログを確認すると、同じことが表示される場合があります) ) もしそうなら、私が Android Gradle プラグイン 1.3 以降でそれを修正するために使用した方法は、以下を使用することでした:

-Pcom.android.build.threadPoolSize=1 

これにより、一連の新しい 1G スレッドを生成する dexing ステップが停止します。もあります:

-Porg.gradle.parallel=false

しかし、何らかの理由でマルチデックスを使用する場合、これは効果がないことがわかりました。CircleCI の場合、少し時間がかかるものの、これが最も一貫性のあるビルド タスクであることがわかりました。より良い結果を得るために、ヒープサイズをもう少し調整できると確信しています。

./gradlew build -PpreDexEnable=false -Pcom.android.build.threadPoolSize=1 -Dorg.gradle.parallel=false -Dorg.gradle.jvmargs="-Xms512m -Xmx512m" -Dorg.gradle.daemon=false
于 2015-10-30T09:18:02.630 に答える