[解決済み] ルーム - スキーマエクスポートディレクトリがアノテーションプロセッサに提供されていないため、スキーマをエクスポートできない
質問内容
Android Database Component Roomを使用しています。
すべて設定したのですが、コンパイルするとAndroid Studioでこのような警告が出ます。
スキーマエクスポートディレクトリがアノテーションプロセッサーに提供されていないため スキーマをエクスポートできません。スキーマをエクスポートするには
room.schemaLocation
アノテーションプロセッサの引数を指定するか exportSchema を false に設定します。
DBファイルが置かれる場所だと理解しています。
私のアプリにどのような影響があるのでしょうか?ここでベストプラクティスは何ですか?デフォルトの場所を使うべきでしょうか?
false
の値) を使用できますか?
どのように解決するのですか?
の通りです。 ドキュメント :
<ブロッククオート注釈プロセッサーの引数 (room.schemaLocation) を設定すると、スキーマをフォルダにエクスポートするように Room に指示することができます。必須ではありませんが、コードベースにバージョン履歴を持つことは良い習慣であり、そのファイルをバージョン管理システムにコミットする必要があります(ただし、アプリと一緒に出荷しないように!)。
ですから、スキーマをチェックする必要がなく、警告を消したいのであれば、単に
exportSchema = false
を
RoomDatabase
は、以下のようになります。
@Database(entities = { YourEntity.class }, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
//...
}
あなたが@mikejonesguyをフォローしている場合
回答
の下にある、ドキュメントで言及されているグッドプラクティスに従うことになります :) 。
基本的に、あなたは
.json
ファイルを
../app/schemas/
フォルダーに格納します。
そして、このような感じになります。
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "53db508c5248423325bd5393a1c88c03",
"entities": [
{
"tableName": "sms_table",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message` TEXT, `date` INTEGER, `client_id` INTEGER)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER"
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT"
},
{
"fieldPath": "date",
"columnName": "date",
"affinity": "INTEGER"
},
{
"fieldPath": "clientId",
"columnName": "client_id",
"affinity": "INTEGER"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"53db508c5248423325bd5393a1c88c03\")"
]
}
}
私の理解が正しければ、データベースのバージョンを更新するたびにこのようなファイルを入手し、データベースの履歴を簡単に追うことができるようになります。
関連
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
java の例外が発生しました java
-
javaの模造品QQ WeChatのチャットルーム
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Methodのinvokeメソッド実装のJavaリフレクション
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
[解決済み] アイコンのミップマップ描画可能
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
プロローグでのコンテンツは禁止されています
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
javaでよく使われる英単語
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み】Android room persistent: AppDatabase_Impl が存在しない。