4

以下のファイル構造を持つ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 assemble間違ったimportステートメントで動作する理由はまだわかりません。gradlew connectedCheck

4

1 に答える 1

2

これはエラーとは関係ないように見えますが、R クラスから取得した ID を使用して switch ステートメントを実行しているように見えますが、ライブラリにいます。

これらの ID は最終的なものではないため、これは不可能です。

それがエラーなのだろうかと思いますが、コンパイラが混乱して別のエラー メッセージを出力します。

于 2013-07-18T00:27:24.097 に答える