我有一个具有以下文件结构的 android 库。
Android_Library
├── libs
└── src
├── instrumentTest
│ ├── assets
│ └── java
└── main
├── aidl
├── gen
├── java
└── res
当我用 Gradle 组装库时,任务运行成功。但是,当我尝试运行 connectedCheck 时,我收到以下有关未找到 R 文件的错误:
:validateDebugSigning
:packageDebug
:assembleDebug
:prepareTestDependencies
:compileTestAidl
:processTestTestManifest
:generateTestBuildConfig
:mergeTestAssets
:compileTestRenderscript
:mergeTestResources
:processTestResources
:compileTest
Android_Library/src/instrumentTest/java/com/example/library/util/UtilTests.java:514: error: package R does not exist
case R.plurals.time_days_ago: {
^
...
Note: Recompile with -Xlint:unchecked for details.
18 errors
:compileTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileTest'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
本来以为是R资源生成的问题,后来想组装的时候也会失败。
编辑:
我已经尝试过有和 R 导入语句(我知道这是不正确的)和没有和 R 导入语句。两者都会导致相同的错误。
解决了:
感谢@Xav 的提示(如下):我正在从一个更大的项目中提取一个库,并尝试自行构建它以进行模块化测试。
改变
import com.example.app.R;
库文件中的语句
com.example.library.R
允许连接的检查运行。
(显然主应用程序和库的 res 文件是相同的)。
补充说明:
由于 switch 语句采用 R id,因此 switch 语句在编译时起作用。但是,我仍然不确定为什么在失败时gradlew assemble
使用不正确的import
语句gradlew connectedCheck
。