我尝试使用CircleCI汇编调试器,但它必须无法构建(preDex).
为什么我不能这样做?
为什么我不能这样做?
>使用ProductFlavor(名称为生产)
> Android Gradle ver.1.1.0-rc1
问题
./gradlew assembleProductionDebug died unexpectedly Building 92%3% >
:app:preDexProductionDebugaction ./gradlew assembleProductionDebug
Failed
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
解决方法
我遇到过同样的问题.事实证明,我必须为ci版本禁用preDex.
把它放在root build.gradle中:
project.ext.preDexLibs = !project.hasProperty('disablePreDex') subprojects { project.plugins.whenPluginAdded { plugin -> if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs } else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs } } }
然后,您可以使用以下命令构建ci:
./gradlew ... -PdisablePreDex