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不是最终的.
我想知道这是错误,但编译器混淆并输出不同的错误消息.
标签:android,build-process,gradle,automated-tests 来源: https://codeday.me/bug/20190703/1368930.html