Android java.io.FileNotFoundException:/jacoco.exec:open失败:EROFS(只读文件系统)

Android java.io.FileNotFoundException:/jacoco.exec:open失败:EROFS(只读文件系统),android,jacoco,Android,Jacoco,在尝试实现JaCoCo脱机检测时遇到这个问题 W/System.err( 1733): java.io.FileNotFoundException: /jacoco.exec: open failed: EROFS (Read-only file system) W/System.err( 1733): at libcore.io.IoBridge.open(IoBridge.java:456) W/System.err( 1733): at java.io.FileOutputSt

在尝试实现JaCoCo脱机检测时遇到这个问题

W/System.err( 1733): java.io.FileNotFoundException: /jacoco.exec: open failed: EROFS (Read-only file system)
W/System.err( 1733):    at libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err( 1733):    at java.io.FileOutputStream.<init>(FileOutputStream.java:89)
--
W/System.err( 1733):    at libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err( 1733):    at java.io.FileOutputStream.<init>(FileOutputStream.java:89)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.openFile(FileOutput.java:67)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.startup(FileOutput.java:49)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.Agent.startup(Agent.java:122)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.Agent.getInstance(Agent.java:50)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.Offline.<clinit>(Offline.java:31)
W/System.err(1733):java.io.FileNotFoundException:/jacoco.exec:open failed:EROFS(只读文件系统)
W/System.err(1733):位于libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err(1733):位于java.io.FileOutputStream。(FileOutputStream.java:89)
--
W/System.err(1733):位于libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err(1733):位于java.io.FileOutputStream。(FileOutputStream.java:89)
W/System.err(1733):位于org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.openFile(FileOutput.java:67)
W/System.err(1733):位于org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.startup(FileOutput.java:49)
W/System.err(1733):位于org.jacoco.agent.rt.internal_14f7ee5.agent.startup(agent.java:122)
W/System.err(1733):位于org.jacoco.agent.rt.internal_14f7ee5.agent.getInstance(agent.java:50)
W/System.err(1733):位于org.jacoco.agent.rt.internal_14f7ee5.Offline(Offline.java:31)

我认为忽略脱机检测警告是安全的,因为路径应该类似:
executionData=files(${project.buildDir}/jacoco/${testTaskName}.exec”)
(在PC上-因此无需将其保存在设备上,然后提取文件)


在Android上,这会将JaCoCo代理添加到APK中:

buildTypes {
    debug {
        testCoverageEnabled = true
    }
}

该解决方案在jacoco中有很好的文档记录,但对于Android用户,您需要在
/src/androidTest/resources/jacoco agent.properties
中添加文件,内容为
output=none
,这样jacoco就可以启动而不会失败,覆盖率将正常写入,稍后由android gradle插件覆盖率实现正确传输。

在android应用程序中,您应该将jacoco-agent.properties放在何处?这对我没有帮助,但路径是“src/debug/resources/jacoco-agent.properties”
W/System.err( 1733): java.io.FileNotFoundException: /jacoco.exec: open failed: EROFS (Read-only file system)
W/System.err( 1733):    at libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err( 1733):    at java.io.FileOutputStream.<init>(FileOutputStream.java:89)
--
W/System.err( 1733):    at libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err( 1733):    at java.io.FileOutputStream.<init>(FileOutputStream.java:89)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.openFile(FileOutput.java:67)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.startup(FileOutput.java:49)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.Agent.startup(Agent.java:122)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.Agent.getInstance(Agent.java:50)
W/System.err( 1733):    at org.jacoco.agent.rt.internal_14f7ee5.Offline.<clinit>(Offline.java:31)