Codename1 Android未基于3.4构建

Codename1 Android未基于3.4构建,android,codenameone,Android,Codenameone,嘿,我在新库(3.4)上遇到了一个构建错误,但我的应用程序在3.3上仍然可以正常工作 问题似乎与此有关: 我将android.supportV4设置为false 我还将android.gradle设置为false 错误日志的relvent部分如下所示: [dx] UNEXPECTED TOP-LEVEL EXCEPTION: [dx] com.android.dex.DexException: Multiple dex files define Landroid/suppo

嘿,我在新库(3.4)上遇到了一个构建错误,但我的应用程序在3.3上仍然可以正常工作

问题似乎与此有关:

我将android.supportV4设置为false 我还将android.gradle设置为false

错误日志的relvent部分如下所示:

       [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
   [dx] com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
   [dx]     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
   [dx]     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
   [dx]     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
   [dx]     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
   [dx]     at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
   [dx]     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
   [dx]     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
   [dx]     at com.android.dx.command.dexer.Main.run(Main.java:277)
   [dx]     at com.android.dx.command.dexer.Main.main(Main.java:245)
   [dx]     at com.android.dx.command.Main.main(Main.java:106)
这是在dex合并阶段

如果启用等级,则生成时会出现不同的错误: (这就是我禁用它的原因)


我可以发布codenameone_setting.properties文件,如果这有帮助的话

如果您在gradle中使用google服务,请尝试删除所有像这样的大软件包:

compile 'com.google.android.gms:play-services:9.0.0'
试着只导入像这样需要的

compile 'com.google.android.gms:play-services-maps:9.0.0'
这里的示例显示,不需要导入所有谷歌服务(它们非常庞大),您只需要使用地图即可使用地图

尝试添加到渐变:

android {
    dexOptions {
        preDexLibraries = false
    }
}  

确保您没有使用android.includePlayServices的构建提示
。查看备选方案。

请同时提供build.gradle文件。使用代码名One,构建在远程服务器上完成,并且没有本地build.gradle文件,因此值得注意的是:在3.3上使用gradle时,构建仍然失败。我想这和我使用的图书馆有关@Stepan Maksymov的回答很有道理。他从未使用过codenameone,但我知道appcompat-v7库对v4库有一个可传递的依赖关系,因此这可能是您拥有多个文件的一种方式。这如何回答这个问题?当项目变得太大时(通常发生在LIB更新和变大时),最终结果不能保存在一个索引中,应用程序必须拆分为多个,并且您可能会出现这样的错误。对吗?这将在错误中明确说明,因为已达到65k dalvik限制,并且需要启用多索引。问题中的错误是包含了重叠的v4支持库,正如我前面提到的,Codename One应用程序构建在远程服务器上。然而,这些信息可能对经常出现堆栈溢出的开发人员有用。仅供参考,这是我们在defaultSounds的Codename One中已经做过的事情,就像解决方案一样。现在我的问题是让它和gradle一起工作,你知道什么会导致我的gradle问题吗?这是给gradle的。您需要用新的hintsYes替换gplay服务,但在您链接的页面上显示“…仅适用于gradle版本”。我不是需要启用gradle才能使用它吗?是的,gradle应该启用,Google不推荐使用旧的ant支持,因此如果出现问题,他们通常不会提供解决方案
android {
    dexOptions {
        preDexLibraries = false
    }
}