私はbase
モジュールとquery
というフィーチャモジュールをインスタントアプリケーションプロジェクトに持っています。Androidインスタントアプリケーションを再構築した後に、フィーチャモジュールのベースモジュールで定義された色を使用できない
私のQueryActivity
内側query
モジュールは、base
モジュールにある色を使用します。
run
プロジェクトにしようと
@ColorInt
val textColor: Int = when (resultCode) {
FetchAddressIntentService.RESULT_SUCCESS -> android.R.color.white
FetchAddressIntentService.RESULT_FAILURE -> R.color.accent // this color is inside the base module
else -> R.color.accent // this color is inside the base module
}
は、それが何の問題もなく正常に動作します。しかし、rebuild
プロジェクトでは、次のエラーが表示されます。
../net/epictimes/uvindex/query/QueryActivity.kt
Error:(133, 63) Unresolved reference: color
Error:(134, 27) Unresolved reference: color
これらの色の値を指しています。
colors.xml
ファイルをquery
モジュール内に追加し、base
の色を参照して解決しました。それは正常に働いた。差分はthis commitに表示されます。
<color name="query_location_success_text">@android:color/white</color>
<color name="query_location_fail_text">@color/accent</color>
今のところ動作しますが、わかりません。これは正しい方法ですか?私の質問は、機能モジュールからアクセス可能なbase
モジュール内のリソースであってはなりませんか?
バージョン:
Android target/compile SDK: 26
Kotlin: 1.1.50
Instant Apps: 1.1.0
鉱山のオープンソースプロジェクトである、あなたはプロジェクト全体hereを見ることができます。
は、あなたが完全修飾名(package_name.R.resource_name)とそれを参照するときに
インスタントアプリのリソース管理は、この時点では完全に欠陥があります。それは現在のところ実行不可能な部分です... Lintは間違って使用されたR.xステートメントについて不平を言っていません。 多くの場合、リソースはベースモジュールからのみ使用できます。をフィーチャモジュール内で使用すると、インクルードがベースモジュールからフェッチされるはずです。 モジュール間の相互依存関係を検出できないproguardを使用した場合、完全な破壊については言及していません。 –
あなたは正しいです。各モジュールは独自のR.javaを生成します。ここで問題となるのは、間違ったRファイルを参照していたことです。ご協力ありがとうございました。しかし、私はその奇妙な "実行"はうまく動作しますが、 "再構築"は未解決の参照エラーで失敗すると思います。 –