Odoo安卓APP开发-1

框架

    在移动端时代,Odoo也做了不少工作,其中就包括安卓APP开发框架。在Github上虽然星星才二百多,但对有需要的人来说绝对是个好东西。当然,对于安卓大咖且熟悉Odoo的Developer来讲,他完全可以自己搞一套,否则就乖乖的用官方的框架吧。

    当然,Odoo现在凭借企业版的响应式来做移动端,这个框架呢就不是很活跃了,目前只有微量更新。所以,要有进坑的心理准备。


文档

    我是在没了解Java、不了解Android的情况下开始学习Odoo安卓APP的开发,所以有个简单清晰的文档是很有帮助的。官方对于这个框架有一个不错的文档。传送门


坑No.1

    Android Studio默认的情况下是开启Instant Run功能的,然而启用该功能的情况下,Debug方式是存在问题的。

    我遇到的问题首先就是“闪退”,闪的速度极快,根本不知道什么情况。使用Debug模式能够看到错误信息,其中最关键的贴出来:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.odoo.core.orm.OModel.getModelName()' on a null object reference

    看代码能够定位到:

public void makeReady(Context context) {
try {
DexFile dexFile = new DexFile(context.getPackageCodePath());
for (Enumeration<String> item = dexFile.entries(); item.hasMoreElements(); ) {
String element = item.nextElement();
if (element.startsWith(App.class.getPackage().getName())) {
Class<? extends OModel> clsName = (Class<? extends OModel>) Class.forName(element);
if (clsName != null && clsName.getSuperclass() != null &&
OModel.class.isAssignableFrom(clsName.getSuperclass())) {
String modelName = getModelName(context, clsName);
if (modelName != null) {
this.models.put(modelName, clsName);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

这个问题在网络上有一个参考价值很大的文档:

传送门

关闭Instant Run的方法很简单:

停用 Instant Run
要停用 Instant Run,请执行以下操作:
  1. 打开 Settings 或者 Preferences 对话框。
  1. 导航至 Build, Execution, Deployment > Instant Run
  1. 取消选中 Enable Instant Run 旁边的方框。

留下评论

你应该 登入 张贴评论