簡體   English   中英

用於ORMLite配置生成的Android Studio運行配置

[英]Android Studio run configuration for ORMLite config generation

我正在使用Android Studio,並且想使用ORMLite框架。 適用於Android的ORMLite具有通過表配置文件進行DAO創建的機制。

如何在Android Studio中設置其他運行配置以生成此配置?

我設法做到了,但是有點棘手。

我有一個名為DatabaseConfigUtil的類,該類擴展了OrmLiteConfigUtil,該類是按照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,然后選擇“運行”(帶有綠色箭頭的選項)。 如果您沒有創建運行配置,它將為您創建一個。

現在,只需編輯配置

在此處輸入圖片說明

在“啟動前”部分中,刪除品牌。 如果在原始文件夾中已經有文件ormlite_config.txt,這沒有問題,但是如果沒有,則在運行類時,項目將編譯,因為ormlite_config.txt不存在,該項目將失敗。

在此處輸入圖片說明

現在再次運行該項目。

現在一切應該順利進行。

干杯

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

更新:

最近,我不得不再次使用ORMLite,並決定可以使用gradle插件將該解決方案自動化。 在創建自己的自己之前,作為我的懶惰開發人員,我決定檢查是否有人嘗試過相同的嘗試。 幸運的是,@ snicolas做到了這一點,您可以在這里找到他的插件。 我已經嘗試過了,並且效果很好。 它創建一個名為createORMLiteConfigFile*Variant*的任務,您可以運行該任務來生成文件。

收集@Joao的回答下的所有評論給了我這個可行的解決方案:

1)為您的數據庫配置文件生成器編輯配置:

編輯配置

2)將Working directory配置為$MODULE_DIR$/src/main

3)在Before launch ,將Make替換為Make, 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);
    }

我遇到了與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);
    }

}

擴展了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. 從啟動前部分中刪除品牌。

好的,我遇到了與OP相同的ClassNotFoundException。 這是我解決的方法:

簡短說明:我有一個庫項目和一個主項目,並且都通過Gradle進行了設置,這可能有很大的不同,因為先前調用的解決方案不適用於我的設置。

所以我要做的步驟:

  1. 我創建了DatabaseConfigUtil類

     public class DatabaseConfigUtil extends OrmLiteConfigUtil { public static final Class<?>[] MODELS = {Character.class, Party.class, Clazz.class}; /** * This must be called as a stand alone app by a JRE instance and NOT by android. * It will create an ormlite config file that will make the reflection for annotation and more easier and faster. * <p/> * Make sure you have pathOfProject/build/classes/debug in your class path when running! * <p/> * Working class path: * <code>-classpath /usr/lib/jvm/java-7-oracle/lib/jconsole.jar:/usr/lib/jvm/java-7-oracle/lib/dt.jar:/usr/lib/jvm/java-7-oracle/lib/sa-jdi.jar:/usr/lib/jvm/java-7-oracle/lib/tools.jar:/usr/lib/jvm/java-7-oracle/lib/javafx-doclet.jar:/usr/lib/jvm/java-7-oracle/lib/ant-javafx.jar:/usr/lib/jvm/java-7-oracle/lib/javafx-mx.jar:/home/martin/workspace/idea/Project/MainProject/libs/ormlite-android-4.45.jar:/home/martin/workspace/idea/Project/MainProject/libs/ormlite-core-4.45.jar:/opt/android-studio/lib/idea_rt.jar:/home/martin/workspace/idea/Project/MainProject/build/classes/debug:/opt/android/platforms/android-16</code> * * @param args none will be used. * @throws Exception */ public static void main(String[] args) throws Exception { writeConfigFile(new File("MODULENAME/src/main/res/raw/ormlite_config.txt"), MODELS); } } 
  2. 請注意我在文檔中使用的類路徑:它基本上基於您嘗試運行上述類時獲得的普通類路徑(只需將其復制)

  3. 創建運行配置並添加您剛剛復制的類路徑作為VM options
  4. 確保已刪除所有包含“ build / classes / production / MODULENAME”的條目
  5. 將您的“ build / classes / debug”的完整路徑添加到classpath
  6. 編譯並運行配置。

您應該看到創建在MODELS中定義的類的輸出。

旁注:Joao Sousa說您應該更改ORMlite源代碼。 有一個更簡單的方法:新的Gradle結構中的writeConfigFile(fileName)方法似乎已損壞,因為它開始在模塊根目錄中查找並向上而不是向下進入src/main/res/raw因此我需要使用另一個我可以給文件對象作為參數的地方(見上面的代碼)。

最后的注意事項:當我嘗試一次按下很多東西時,我創建了第二個運行配置,稱為“ PROJECTNAME FULL”,它將比運行ormlite運行配置執行“ make”操作,最后執行第二個“ MAKE”。
第一個make編譯源代碼,以便可以創建ormlite配置,第二個“ make”確保將新創建的配置文件添加到新創建的版本中,然后將其安裝。 不必每次都運行“ FULL”配置,而是在更改模型類時至少運行一次。

我遇到了麻煩,因為我的數據庫類是在我的android項目外部的Java項目中定義的。 但是OrmLiteConfigUtil是在ormlite-android庫中定義的,必須在android項目本身中構建。

沒關系,格雷會提前計划。 writeConfigFile的重載接受指定搜索目錄的File參數。

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);
  }
}

在“編輯配置”中將“工作目錄”更改為項目的/ src / main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM