我正在跟踪TODO应用程序的Dagger2示例,但遇到OutOfMemoryError:超出了GC开销限制。伴随着它的还有600多个警告,如:警告:忽略不带有关联的EnclosingMethod属性的匿名内部类(org.eclipse.osgi.internal.baseadaptor.BaseStorage $ StateSaver $ 1)的InnerClasses属性。此类可能是由不面向现代.class文件格式的编译器生成的。推荐的解决方案是使用最新的编译器从源代码重新编译类,而无需指定任何“ -target”类型选项。忽略此警告的结果是,对该类的反射操作将错误地指示它不是内部类。这是我的代码:
dagger2找不到符号,在gk5885的帮助下我解决了以前的问题。再次感谢您:-)。
刚过我加入SharedPreferences sharedPreferences()
到NetComponent
重建,程序编译9分钟,最终会把这个错误。但是在没有Dagger2的情况下编译我的应用程序的先前版本的时间为几秒钟,因此,我确定Dagger2会导致此错误。但是我不知道为什么以及如何解决这个问题。
而我的虚拟机大小:-Xms256m -Xmx1280m。我认为这绰绰有余。
任何帮助表示赞赏。
编辑:事实上,在我重建之前,我得到了apk错误中复制的重复文件。我通过在gradle中添加它来解决了这个问题:
packagingOptions {
exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
}
也许我应该显示我的依赖关系:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'me.yokeyword:indexablestickylistview:0.6.1'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'in.srain.cube:ultra-ptr:1.0.11'
compile files('libs/ormlite-android-4.49-SNAPSHOT.jar')
compile files('libs/ormlite-core-4.49-SNAPSHOT.jar')
compile 'com.jakewharton:butterknife:8.1.0'
apt 'com.jakewharton:butterknife-compiler:8.0.1'
compile 'com.google.dagger:dagger:2.2' // dagger2
compile 'com.google.dagger:dagger-compiler:2.2' // dagger2
compile project(':ToggleButtonLib')
compile project(':IMKit')
}
很抱歉有这么多描述...。
你应该改变
compile 'com.google.dagger:dagger-compiler:2.2' // dagger2
到
apt 'com.google.dagger:dagger-compiler:2.2' // dagger2
因为您当前正在将整个dagger2编译器包含到您的项目中,并且其中包括Guava和各种各样的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句