为什么活动Android不使用Gradle 2.0?

我在我的应用程序中使用活动Android。 它工作正常,直到我从1.3升级我的Android Studio到2.0。 有了这个升级,我的gradle也升级到了2.0,这对Active Android造成了一些问题。

在使用Gradle 2.0构build时遇到此错误。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.activeandroid.TableInfo.getTableName()' on a null object reference at com.activeandroid.Cache.getTableName(Cache.java:156) at com.activeandroid.query.From.addFrom(From.java:169) at com.activeandroid.query.From.toSql(From.java:250) at com.activeandroid.query.From.execute(From.java:298) 

我尝试用gradle 1.3构build我的旧工作室,它仍然工作正常。 请帮忙吗?

build.gradle文件时,应用程序正在给出上述错误

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0' classpath 'com.google.gms:google-services:2.0.0-beta2' } } allprojects { repositories { jcenter() } } 

build.gradle当应用程序工作正常

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.google.gms:google-services:2.0.0-beta2' } } allprojects { repositories { jcenter() } } 

gradle包装属性

 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip 

Solutions Collecting From Web of "为什么活动Android不使用Gradle 2.0?"

我也遇到了这个问题,我发现这只是Android 23+设备上的一个问题,如果closures即时运行(文件 – >设置 – >构build,执行,部署 – >即时运行),则可以避免这个问题。

如果你想保持即时运行,你可以尝试UnChecking“代码更改重新启动活动”

在Mac上:

首选项>构build,执行,部署>即时运行>取消选中“在代码更改上重新启动活动”

ActiveAndroid有一个问题,当Instant run被激活时无法检索DexFile中search的Model类有些关于DexFile和Instant的信息在这里运行

有三种可能的解决方法:

  1. 禁用Intant运行Android Studio – >首选项 – > Intant运行
  2. 在AndroidManifest中添加已经build议的代码:
 <meta-data android:name="AA_MODELS" android:value="com.myapp.model.Item, com.myapp.model.Category" /> 
  1. 在ActiveAndroid初始化中添加以下代码:
 Configuration.Builder config = new Configuration.Builder(this); config.addModelClasses(Model1.class, Model2.class); ActiveAndroid.initialize(config.create()); 

希望能帮助到你

我遇到了同样的问题,但是我不知道为什么。我在AndroidManifest中明确指定了Model类:

 <meta-data android:name="AA_MODELS" android:value="com.myapp.model.Item, com.myapp.model.Category" /> 

它已经解决了;

我在gradle 2.0上有同样的问题,但我不知道为什么这个错误现在,最后我解决了它通过降级gradle版本到gradle 1.5.0

我有同样的问题与活动的android ORM。 不能只在模拟器上工作。 closures即时运行。 并完全重新安装应用程序,清除错误。

要添加到由VictorG提供的答案,您可以避免禁用即时运行。 由于基本问题是由于即时运行导致的DexFile更改, Cache不保留DexFile值,因此可以检查DexFile是否包含任何表数据,并在需要时重新初始化ActiveAndroid

 if (Cache.isInitialized() && Cache.getTableInfos().isEmpty()) { ActiveAndroid.dispose(); } ActiveAndroid.initialize(HOWEVER_YOU_BUILD_YOUR_CONFIG);