Travis CI Android 模拟器中的 EACCES(权限被拒绝)
EACCES (Permission denied) in Travis CI Android Emulator
我使用 Espresso 和 Android API 22 模拟器在本地测试我的应用程序,它可以正常工作。我的 Manifest.xml:
里有这个
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我也在 运行 时请求权限,根据 Android 23 之后的要求。但是,当 Travis CI 运行 使用相同的 API 模拟器,应用程序抛出错误:
02:10:29 V/InstrumentationResultParser: Caused by: java.io.FileNotFoundException: /storage/sdcard/dd3c49bc-efdb-41b9-90af-e814ca17c59d.png: open failed: EACCES (Permission denied)
这是我的 .travis.yml
:
language: android
jdk: oraclejdk8
sudo: false
android:
components:
- tools
- platform-tools
- build-tools-28.0.3
- android-28
- android-22
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- sys-img-armeabi-v7a-android-22
before_script:
- touch local.properties
- chmod +x gradlew
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
script:
- ./gradlew clean build connectedCheck
这是 Travis 正在构建的回购:
如果您克隆它,请使用 Android Studio 和 运行 打开您可以看到的测试,它不会抛出该错误。我该如何解决这个问题?
有同样的问题。删除和添加 Android 平台再次修复了错误,但现在应用程序崩溃了最微小的 UI 更改,没有任何错误。我每次都必须重新启动应用程序才能让它再次运行。
还有一件事,
SD 卡侧面有一个 "write lock" 滑块,与触点成 90 度角。
确保您的 SD 卡已启用写入。
为了在 Android 模拟器映像上使用外部存储,您需要创建外部存储。您可以准备好可以使用路径添加的映像,也可以使用 -c 参数提供 SD 卡映像的大小。
我使用 Espresso 和 Android API 22 模拟器在本地测试我的应用程序,它可以正常工作。我的 Manifest.xml:
里有这个<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我也在 运行 时请求权限,根据 Android 23 之后的要求。但是,当 Travis CI 运行 使用相同的 API 模拟器,应用程序抛出错误:
02:10:29 V/InstrumentationResultParser: Caused by: java.io.FileNotFoundException: /storage/sdcard/dd3c49bc-efdb-41b9-90af-e814ca17c59d.png: open failed: EACCES (Permission denied)
这是我的 .travis.yml
:
language: android
jdk: oraclejdk8
sudo: false
android:
components:
- tools
- platform-tools
- build-tools-28.0.3
- android-28
- android-22
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- sys-img-armeabi-v7a-android-22
before_script:
- touch local.properties
- chmod +x gradlew
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
script:
- ./gradlew clean build connectedCheck
这是 Travis 正在构建的回购:
如果您克隆它,请使用 Android Studio 和 运行 打开您可以看到的测试,它不会抛出该错误。我该如何解决这个问题?
有同样的问题。删除和添加 Android 平台再次修复了错误,但现在应用程序崩溃了最微小的 UI 更改,没有任何错误。我每次都必须重新启动应用程序才能让它再次运行。
还有一件事,
SD 卡侧面有一个 "write lock" 滑块,与触点成 90 度角。
确保您的 SD 卡已启用写入。
为了在 Android 模拟器映像上使用外部存储,您需要创建外部存储。您可以准备好可以使用路径添加的映像,也可以使用 -c 参数提供 SD 卡映像的大小。