为什么 Active Android 不能与 gradle 2.0 一起使用?
Why Active Android is not working with gradle 2.0?
我在我的应用程序中使用 Active Android。在我将 Android Studio 从 1.3 升级到 2.0 之前,它一直运行良好。通过这次升级,我的 gradle 也升级到了 2.0,这导致 Active Android.
出现了一些问题
我在使用 gradle 2.0.
构建时遇到此错误
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.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
我遇到了同样的问题,但我不知道 why.I 在我的 AndroidManifest 中明确指定了我的模型 类:
<meta-data
android:name="AA_MODELS"
android:value="com.myapp.model.Item, com.myapp.model.Category" />
已解决;
我 运行 也遇到了这个问题,我发现这只是 Android 23+ 设备上的一个问题,如果你关闭 Instant 运行 就可以避免这个问题(文件- >设置->构建、执行、部署->即时 运行).
如果你想保持 Instant 运行 你可以试试 UnChecking "Restart Activity on Code Changes"
在 Mac:
Preferences > Build, Execution, Deployment > Instant Run > Uncheck "Restart Activity on Code Changes"
我在 gradle 2.0 上有同样的问题,但我不知道为什么会出现这个错误
, 最后我 通过将 gradle 版本降级到 gradle 1.5.0
解决了
ActiveAndroid 存在问题,当 Instant 运行 激活时,它无法检索在 DexFile 中搜索的模型 类
关于 DexFile 和 Instant 的一些信息 运行
存在三种可能的解决方法:
- 禁用 Intant 运行 Android Studio -> 首选项 -> Intant 运行
- 在 AndroidManifest:
中添加已经建议的代码
<meta-data
android:name="AA_MODELS"
android:value="com.myapp.model.Item, com.myapp.model.Category" />
- 在ActiveAndroid初始化中添加如下代码:
Configuration.Builder config = new Configuration.Builder(this);
config.addModelClasses(Model1.class, Model2.class);
ActiveAndroid.initialize(config.create());
希望对您有所帮助
我在使用 android ORM 时遇到了同样的问题。不仅在模拟器上工作。关闭即时 运行。并完全重新安装应用程序,清除了错误。
要添加到 VictorG 提供的答案中,您可以避免禁用即时 运行。由于基本问题是 Cache
由于即时 运行 引起的 DexFile
更改而不会保留 ModelInfo
值,您可以检查 ModelInfo
是否包含任何table 数据并根据需要重新初始化 ActiveAndroid
。
if (Cache.isInitialized() && Cache.getTableInfos().isEmpty()) {
ActiveAndroid.dispose();
}
ActiveAndroid.initialize(HOWEVER_YOU_BUILD_YOUR_CONFIG);
我在我的应用程序中使用 Active Android。在我将 Android Studio 从 1.3 升级到 2.0 之前,它一直运行良好。通过这次升级,我的 gradle 也升级到了 2.0,这导致 Active Android.
出现了一些问题我在使用 gradle 2.0.
构建时遇到此错误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.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
我遇到了同样的问题,但我不知道 why.I 在我的 AndroidManifest 中明确指定了我的模型 类:
<meta-data
android:name="AA_MODELS"
android:value="com.myapp.model.Item, com.myapp.model.Category" />
已解决;
我 运行 也遇到了这个问题,我发现这只是 Android 23+ 设备上的一个问题,如果你关闭 Instant 运行 就可以避免这个问题(文件- >设置->构建、执行、部署->即时 运行).
如果你想保持 Instant 运行 你可以试试 UnChecking "Restart Activity on Code Changes"
在 Mac:
Preferences > Build, Execution, Deployment > Instant Run > Uncheck "Restart Activity on Code Changes"
我在 gradle 2.0 上有同样的问题,但我不知道为什么会出现这个错误 , 最后我 通过将 gradle 版本降级到 gradle 1.5.0
解决了ActiveAndroid 存在问题,当 Instant 运行 激活时,它无法检索在 DexFile 中搜索的模型 类
关于 DexFile 和 Instant 的一些信息 运行
存在三种可能的解决方法:
- 禁用 Intant 运行 Android Studio -> 首选项 -> Intant 运行
- 在 AndroidManifest: 中添加已经建议的代码
<meta-data
android:name="AA_MODELS"
android:value="com.myapp.model.Item, com.myapp.model.Category" />
- 在ActiveAndroid初始化中添加如下代码:
Configuration.Builder config = new Configuration.Builder(this);
config.addModelClasses(Model1.class, Model2.class);
ActiveAndroid.initialize(config.create());
希望对您有所帮助
我在使用 android ORM 时遇到了同样的问题。不仅在模拟器上工作。关闭即时 运行。并完全重新安装应用程序,清除了错误。
要添加到 VictorG 提供的答案中,您可以避免禁用即时 运行。由于基本问题是 Cache
由于即时 运行 引起的 DexFile
更改而不会保留 ModelInfo
值,您可以检查 ModelInfo
是否包含任何table 数据并根据需要重新初始化 ActiveAndroid
。
if (Cache.isInitialized() && Cache.getTableInfos().isEmpty()) {
ActiveAndroid.dispose();
}
ActiveAndroid.initialize(HOWEVER_YOU_BUILD_YOUR_CONFIG);