Sta*_*nko 34 android ormlite android-studio
我正在使用Android Studio,并希望使用ORMLite框架.ORMLite for Android有一种通过表配置文件创建DAO的机制.
如何在Android Studio中设置其他运行配置以生成此配置?
Joa*_*usa 39
我设法做到了,但这有点棘手.
我有一个名为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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我们要执行的类,以便创建ormlite_config.txt.
在Android Studio项目导航面板中,右键单击DatabaseConfigUtil.java并选择"Run"(带有绿色箭头的选项).如果您没有创建运行配置,它将为您创建一个.
现在,只需编辑配置即可
在"发布前"部分中,删除Make.如果在原始文件夹中已经有文件ormlite_config.txt,这没有问题,但是如果你没有,当你运行该类时,项目将编译将失败,因为ormlite_config.txt不存在.
现在再次运行该项目.
一切都应该顺利进行.
干杯
---------------------------- ## -------------------- --------
更新:
最近我不得不再次与ORMLite合作,并决定使用gradle插件自动化这个解决方案.在创建我自己之前,作为我的懒惰开发者,我决定检查是否有人曾尝试过相同的操作.值得庆幸的是,@ snicolas就是这么做的,你可以在这里找到他的插件.我试过了,它运作得相当好.它创建一个名为的任务createORMLiteConfigFile*Variant*
,您可以运行该任务来生成文件.
Dan*_*n J 22
收集@ 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);
}
Run Code Online (Sandbox Code Playgroud)
我得到了与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);
}
}
Run Code Online (Sandbox Code Playgroud)
我扩展OrmLiteSqliteOpenHelper的DBHelper类需要不使用原始文件夹.这有助于成功编译项目.
public DBHelper(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION,1);// R.raw.ormlite_config
}
Run Code Online (Sandbox Code Playgroud)
好吧,我在OP上遇到了同样的ClassNotFoundException.这是我解决它的方式:
简短说明:我有一个库项目和一个主项目,两者都与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);
}
}
Run Code Online (Sandbox Code Playgroud)请注意我在文档中使用的类路径:它基本上是基于您尝试运行上述类时获得的正常类路径(只需复制它)
VM options
您应该看到MODELS
创建了您定义的类的输出.
旁注:Joao Sousa说您应该更改ORMlite源代码.有一个更简单的方法:该writeConfigFile(fileName)
方法似乎在新的Gradle结构中被打破,因为它开始在模块根目录中查找并向上而不是向下,src/main/res/raw
所以我需要使用另一个我可以将文件对象作为参数(见上面的代码).
最后的注意事项:当我尝试在一次按下时制作大量内容时,我创建了第二次运行配置,称为"PROJECTNAME FULL",它将执行"make"而不是运行ormlite运行配置,最后是第二次"MAKE".
第一个make编译源代码,以便可以创建ormlite配置,第二个"make"确保将新创建的配置文件添加到将要安装的新创建的构建中.这种"FULL"配置不需要每次运行,但至少在您更改模型类时运行一次.
归档时间: |
|
查看次数: |
13869 次 |
最近记录: |