Android库与Gradle组装,但在connectionCheck上“包R不存在”错误引发

我有一个带有下面文件结构的
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 import语句(我知道是不正确的)并且没有和R import语句.两者都会导致相同的错误.

解决了:

感谢@ Xav的提示(下面):我正在从一个更大的项目中提取一个库,并尝试自己构建它以进行模块化测试.

改变了

import com.example.app.R;

库文件中的语句

com.example.library.R

允许连接的检查运行.

(显然主应用程序和库的res文件是相同的).

补充说明:

由于switch语句接受R id,因此switch语句在编译时有效.但是,当gradlew connectedCheck失败时,我仍然不确定为什么gradlew汇编使用错误的import语句.

最佳答案 虽然这似乎与错误无关,但我发现您正在使用来自R类的ID执行switch语句,但您在库中.

这是不可能的,因为这些ID不是最终的.

我想知道这是错误,但编译器混淆并输出不同的错误消息.

点赞