【发布时间】:2021-10-27 14:49:00
【问题描述】:
我们正在尝试将我们的 android 应用与 travis CI 集成。但它总是以cannot access ‘gradlew’: No such file or directory 失败。我们可以在本地计算机上运行 gradlew 脚本,该文件由 git 跟踪。可能是什么问题?
我们的.travis.yml 文件:
sudo: false
language: android
jdk: oraclejdk8
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
- $HOME/.android/build-cache
before_script:
- cd TreasurePleasure
- echo no | android create avd --force -n test -t "android-"$ANDROID_EMULATOR_LEVEL --abi $ANDROID_ABI --tag $ANDROID_TAG
- emulator -avd test -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
android:
components:
- tools
- tools # Running this twice get's the latest build tools (https://github.com/codepath/android_guides/wiki/Setting-up-Travis-CI)
- platform-tools
- build-tools-27.0.3
- android-27
- android-$ANDROID_EMULATOR_LEVEL
- sys-img-armeabi-v7a-google_apis-$ANDROID_EMULATOR_LEVEL
licenses:
- '.+'
env:
global:
- ANDROID_API_LEVEL=27
- ANDROID_EMULATOR_LEVEL=21
- ANDROID_BUILD_TOOLS_VERSION=27.0.3
- ANDROID_ABI=armeabi-v7a
- ANDROID_TAG=google_apis
- ADB_INSTALL_TIMEOUT=20
before_install:
- chmod +x gradlew
- yes | sdkmanager "platforms;android-27"
script:
- "./gradlew clean build connectedCheck -PdisablePreDex --stacktrace"
# run tests against the emulator
- ./gradlew connectedAndroidTest
# run tests against the JVM
- ./gradlew test
其中大部分是复制粘贴,因为这是我们第一个使用 Travis CI 的项目。
我们的错误:
【问题讨论】:
-
问题是在执行 chmod 命令的位置不存在 gradlew 文件。您可以记录路径并查看其中的内容吗?
-
@Vall0n 是的,我知道。你想让我在脚本中记录路径吗?我怎样才能做到这一点?你可以在我的
before_script:看到我做了一个` - cd TreasurePleasure` 那是因为那是git repo中包含gradlew文件的文件夹。 -
但是看起来远程机器上的文件丢失了。一切都是从本地机器推送的吗?也许回购不是最新的。查看远程机器上的路径并确保 gradlew 文件在那里。
-
@Vall0n 是的,
gradlew脚本位于存储库中,路径是TreasurePleasure/gradlew(我直接在 github 中查找) -
也许你可以使用gradlew文件的绝对路径