Конфигурация запуска Android Studio для создания конфигурации ORMLite

Я использую Android Studio и хочу использовать платформу ORMLite. ORMLite для Android имеет механизм создания DAO через файл конфигурации таблицы.

Как настроить дополнительную конфигурацию запуска в Android Studio для создания этой конфигурации?

Ответ 1

Мне это удалось, но это было немного сложно.

У меня есть класс 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 и выберите "Запустить" (опция с зеленой стрелкой). Если у вас нет созданной конфигурации запуска, она создаст ее для вас.

Теперь просто отредактируйте конфигурацию

enter image description here

В разделе "Перед запуском" удалите Make. Это не проблема, если в исходной папке у вас уже есть файл ormlite_config.txt, но если вы этого не сделаете, когда вы запустите класс, проект будет скомпилирован, что не удастся, потому что ormlite_config.txt не существует.

enter image description here

Теперь запустите проект еще раз.

Теперь все должно идти гладко.

Приветствия

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

UPDATE:

Недавно мне пришлось снова работать с ORMLite и решили, что это решение может быть автоматизировано с помощью плагина gradle. Прежде чем создать свой собственный, как ленивый разработчик, которым я являюсь, я решил проверить, пытался ли кто-нибудь сделать это раньше. К счастью, @snicolas сделал именно это, и вы можете найти его плагин здесь. Я пробовал, и он работает достаточно хорошо. Он создает задачу с именем createORMLiteConfigFile*Variant*, которую вы можете запустить для создания файла.

Ответ 2

Сбор всех комментариев в ответ @Joao дал мне это рабочее решение:

1) Измените конфигурацию для генератора файлов конфигурации DB:

edit configuration

2) Настройте Working directory как $MODULE_DIR$/src/main.

3) В Before launch замените Make на Make, no error check

working directory

Когда у вас есть эти шаги, вы можете указать только имя файла в классе 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);
    }

Ответ 3

Я получил ту же проблему, что и для класса ClassNotFoundException. Обходной путь для этого заключается в том, чтобы временно изменить код, чтобы компилятор смог скомпилировать проект.

Мне пришлось удалить значение R.raw.ormlite_config, которое я использовал в классе DatabaseHelper, который я передаю 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);
    }

}

Мой класс DBHelper, который расширяет расширения, требует, чтобы OrmLiteSqliteOpenHelper не использовал необработанную папку. Это помогает при компиляции проекта успешно.

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

enter image description here

  • скомпилировал проект.
  • измените рабочий каталог на папку app/src/main.
  • Изменено JRE на JDK1.8
  • Удалите Make из раздела Before Before.
  • Run

Ответ 4

Хорошо, я напал на ту же ClassNotFoundException, что и OP. Вот как я это решил:

Краткая заметка: у меня есть проект библиотеки и основной проект, и оба они настроены с помощью Gradle, что может быть весьма разным, поскольку ранее называемое решение не работало для моей установки.

Итак, мои шаги:

  • Я создал класс 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);
        }
    }
    
  • Обратите внимание на путь класса, который я использовал в моей документации: он в основном основан на обычном пути к классам, который вы получаете при попытке запустить вышеуказанный класс (просто скопируйте его).

  • Создайте конфигурацию прогона и добавьте путь к классу, который вы только что скопировали, как VM options
  • Убедитесь, что вы удалили все записи, содержащие "build/classes/production/MODULENAME"
  • Добавьте полный путь к вашей "сборке/классам/отладке" в путь к классам
  • Скомпилируйте и запустите конфигурацию.

Вы должны увидеть результат, который создавали классы, определенные вами в MODELS.

Боковое замечание: Жоао Соуза сказал, что вы должны изменить исходный код ORMlite. Существует более простой метод: метод writeConfigFile(fileName), кажется, разбит в новой структуре Gradle, поскольку он начинает искать в корне модуля и идет вверх, вместо перехода на src/main/res/raw, поэтому мне нужно было использовать другой где я могу указать объект файла как параметр (см. выше код).

Заключительное примечание. Когда я пытаюсь сделать много вещей при одном нажатии, я создал вторую конфигурацию запуска, которая называется "PROJECTNAME FULL", которая будет делать "make", чем запускает конфигурацию запуска ormlite и, наконец, вторую "MAKE".
Первый make компилирует источники, чтобы можно было создать конфигурацию ormlite, а вторая "make" гарантирует, что новый созданный файл конфигурации будет добавлен к вновь созданной сборке, которая будет установлена. Эта конфигурация "ПОЛНАЯ" не должна запускаться каждый раз, но не реже одного раза, когда вы изменили классы моделей.

Ответ 5

У меня были проблемы с этим, потому что мои классы DB были определены в проекте Java, внешнем по отношению к моему проекту Android. Но OrmLiteConfigUtil определен в библиотеке ormlite-android и должен быть встроен в сам проект андроида.

Все в порядке, Грей планирует впереди. Там перегрузка 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);
  }
}

Ответ 6

измените "рабочий каталог" на /src/main проекта в "Редактирование конфигураций"