由于 multidex/android 错误,在 Travis 中构建失败?
Build failing in Travis due to multidex/android bug?
我们的项目中没有使用构建工具“26.0.2”。事实上,在我们的项目目录上做 grep -RF "26.0.2" . | grep -v android-profile
除了
之外不会 return 任何东西
./CBSandbox/build/intermediates/multi-dex/release/components.flags:-libraryjars /home/gabor/Android/Sdk/build-tools/26.0.2/lib/shrinkedAndroid.jar
./CBSandbox/build/intermediates/multi-dex/debug/components.flags:-libraryjars /home/gabor/Android/Sdk/build-tools/26.0.2/lib/shrinkedAndroid.jar
虽然这本身就是假的,它会导致 Travis 构建失败(Failed to find Build Tools revision 26.0.2
因为我们的 .travis.yml
指定了我们实际使用的 ANDROID_BUILD_TOOLS_VERSION=27.0.3
)。 这是一个已知的 multidex 错误吗?早期的工具版本在 multidexing 期间被拉出? 另请注意,它不是在 proguarding 期间,因为 CBSandbox 在其构建文件中有 minifyEnabled false
(-libraryjars
在输出中让我想到了混淆器)。
我们使用 defaults to the latest build tools 的最新版本 gradle 插件。但即使我们手动指定构建工具,它仍然会在 multidex 期间尝试拉取旧版本。
编辑: 构建在 Travis 中仍然失败,但在本地和 Travis 调试环境中它成功了:
travis@travis-job-76d0d0f4-b465-4926-b6fd-6496bbea6835:~/build/ChartBoost/android-sdk$ ./gradlew :CBSandbox:assemble
...
Checking the license for package Android SDK Build-Tools 26.0.2 in /usr/local/android-sdk/licenses
License for package Android SDK Build-Tools 26.0.2 accepted.
Preparing "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)".
"Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" ready.
Installing Android SDK Build-Tools 26.0.2 in /usr/local/android-sdk/build-tools/26.0.2
"Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" complete.
"Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" finished.
...
BUILD SUCCESSFUL in 3m 3s
所以我猜这是一个 Travis 错误(在 UI 上失败,但通过 SSH 成功)和一个 Android 工具错误(在不要求的情况下拉出旧的构建工具)。
请将 link 添加到已知的 Multidex 错误中,并在打开的示例项目中重现该错误。
检查,也许有帮助。
您可以在 .travis.yml
文件中添加两者:
android:
components:
- build-tools-26.0.2
- build-tools-27.0.3
并在您的 build.gradle
文件中手动指定构建工具版本:
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
我不确定你是否已经这样做了:
But even if we manually specify the build tools, it still tries to
pull an older version during multidex.
我们的项目中没有使用构建工具“26.0.2”。事实上,在我们的项目目录上做 grep -RF "26.0.2" . | grep -v android-profile
除了
./CBSandbox/build/intermediates/multi-dex/release/components.flags:-libraryjars /home/gabor/Android/Sdk/build-tools/26.0.2/lib/shrinkedAndroid.jar
./CBSandbox/build/intermediates/multi-dex/debug/components.flags:-libraryjars /home/gabor/Android/Sdk/build-tools/26.0.2/lib/shrinkedAndroid.jar
虽然这本身就是假的,它会导致 Travis 构建失败(Failed to find Build Tools revision 26.0.2
因为我们的 .travis.yml
指定了我们实际使用的 ANDROID_BUILD_TOOLS_VERSION=27.0.3
)。 这是一个已知的 multidex 错误吗?早期的工具版本在 multidexing 期间被拉出? 另请注意,它不是在 proguarding 期间,因为 CBSandbox 在其构建文件中有 minifyEnabled false
(-libraryjars
在输出中让我想到了混淆器)。
我们使用 defaults to the latest build tools 的最新版本 gradle 插件。但即使我们手动指定构建工具,它仍然会在 multidex 期间尝试拉取旧版本。
编辑: 构建在 Travis 中仍然失败,但在本地和 Travis 调试环境中它成功了:
travis@travis-job-76d0d0f4-b465-4926-b6fd-6496bbea6835:~/build/ChartBoost/android-sdk$ ./gradlew :CBSandbox:assemble
...
Checking the license for package Android SDK Build-Tools 26.0.2 in /usr/local/android-sdk/licenses
License for package Android SDK Build-Tools 26.0.2 accepted.
Preparing "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)".
"Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" ready.
Installing Android SDK Build-Tools 26.0.2 in /usr/local/android-sdk/build-tools/26.0.2
"Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" complete.
"Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" finished.
...
BUILD SUCCESSFUL in 3m 3s
所以我猜这是一个 Travis 错误(在 UI 上失败,但通过 SSH 成功)和一个 Android 工具错误(在不要求的情况下拉出旧的构建工具)。
请将 link 添加到已知的 Multidex 错误中,并在打开的示例项目中重现该错误。
检查
您可以在 .travis.yml
文件中添加两者:
android:
components:
- build-tools-26.0.2
- build-tools-27.0.3
并在您的 build.gradle
文件中手动指定构建工具版本:
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
我不确定你是否已经这样做了:
But even if we manually specify the build tools, it still tries to pull an older version during multidex.