35

私は Android Studio を使用しており、ORMLite フレームワークを使用したいと考えています。ORMLite for Android には、テーブル構成ファイルを使用して DAO を作成するメカニズムがあります。

この構成を生成するために Android Studio で追加の実行構成をセットアップするにはどうすればよいですか?

4

6 に答える 6

39

なんとかできましたが、ちょっと難しかったです。

OrmLiteConfigUtil を拡張する DatabaseConfigUtil というクラスがあります。これは、ormlite の公式チュートリアルに従って作成したものなので、同じことを行い、そのクラスもあると仮定します。ファイル名だけでなく、構成ファイルへの完全なパスを渡す必要があることに注意してください。それにもかかわらず、ここにあります:

public class DatabaseConfigUtil extends OrmLiteConfigUtil {
  private static final Class<?>[] classes = new Class[] {
    Class1.class, Class2.class, Class3.class, Class4.class
  };

  public static void main(String[] args) throws SQLException, IOException {
    writeConfigFile(new File("PATH/TO/ANDROID/PROJECT/src/main/res/raw/ormlite_config.txt"), classes);
  }
}

これは、ormlite_config.txt を作成するために実行したいクラスです。

Android Studio プロジェクトのナビゲーション パネルで、DatabaseConfigUtil.java を右クリックし、[実行] (緑色の矢印のオプション) を選択します。実行構成が作成されていない場合は、自動的に作成されます。

さて、構成を編集するだけです

ここに画像の説明を入力

「起動前」セクションで、Make を削除します。これは、raw フォルダーにファイル ormlite_config.txt が既にある場合は問題ありませんが、そうでない場合、クラスを実行するとプロジェクトがコンパイルされますが、ormlite_config.txt が存在しないために失敗します。

ここに画像の説明を入力

ここで、プロジェクトを再度実行します。

これですべてがスムーズに進むはずです。

乾杯

---------------------------- ## -------------------------------- --------

アップデート:

最近、私は再び ORMLite を使用する必要があり、このソリューションは gradle プラグインで自動化できると判断しました。私は怠惰な開発者なので、自分で作成する前に、誰かが以前に同じことを試みたかどうかを確認することにしました。ありがたいことに、@snicolas はまさにそれをやってくれました。彼のプラグインはここにあります。試してみましたが、かなりうまく機能します。createORMLiteConfigFile*Variant*ファイルを生成するために実行できるというタスクが作成されます。

于 2013-06-27T00:14:46.323 に答える
23

@ Joaoの回答の下にあるすべてのコメントを収集すると、次の実用的な解決策が得られました。

1) DB 構成ファイル ジェネレーターの構成を編集します。

構成の編集

2) を に設定Working directoryします$MODULE_DIR$/src/main

3)でBefore launch、に置き換えますMakeMake, no error check

作業ディレクトリ

これらの手順が整ったら、OrmLiteConfigUtilクラスでファイル名だけを指定できます。

public class DBConfigUtil extends OrmLiteConfigUtil {

    /**
     * To make this work in Android Studio, you may need to update your
     * Run Configuration as explained here:
     *   http://stackoverflow.com/a/17332546
     */
    public static void main(String[] args) throws Exception {
        writeConfigFile("ormlite_config.txt", sClasses);
    }
于 2015-05-13T18:49:52.903 に答える
9

OPがClassNotFoundExceptionで得たのと同じ問題が発生しました。これを回避するには、コードを一時的に変更して、コンパイラがプロジェクトをコンパイルするようにします。

DatabaseHelper クラスで使用した R.raw.ormlite_config 値を削除する必要がありました。これは super() に渡しています。

public class DBConfigUtil extends OrmLiteConfigUtil {
private static final Class<?>[] classes = new Class[] {Workout.class};

    public static void main(String[] args) throws IOException, SQLException {
        writeConfigFile("ormlite_config.txt",classes);
    }

}

extends OrmLiteSqliteOpenHelper を拡張する DBHelper クラスは、未加工フォルダーをまだ使用しない必要があります。これは、プロジェクトを正常にコンパイルするのに役立ちます。

public DBHelper(Context context){
    super(context,DATABASE_NAME,null,DATABASE_VERSION,1);// R.raw.ormlite_config
}

ここに画像の説明を入力

  1. プロジェクトをコンパイルしました。
  2. 作業ディレクトリを app/src/main フォルダーに変更します。
  3. JREをJDK1.8に変更
  4. 起動前セクションから Make を削除します。
  5. 走る
于 2014-08-03T17:20:21.490 に答える
1

DB クラスが Android プロジェクトの外部の Java プロジェクトで定義されていたため、これに問題がありました。ただし、OrmLiteConfigUtil は ormlite-android ライブラリで定義されているため、android プロジェクト自体でビルドする必要があります。

大丈夫です、グレイは前もって計画を立てています。検索ディレクトリを指定する File 引数を受け入れる writeConfigFile のオーバーロードがあります。

public class DatabaseConfigUtil extends OrmLiteConfigUtil {
  public static void main(String[] args) throws Exception {
      File conffile = new File("app/src/main/res/raw/ormlite_config.txt");
      File searchdir = new File("../jclip/tdb/src/main/java/");
      writeConfigFile(conffile, searchdir);
  }
}
于 2016-05-12T18:03:14.537 に答える
0

「構成の編集」で「作業ディレクトリ」をプロジェクトの /src/main に変更します

于 2015-08-20T03:14:46.160 に答える