注意:通过对项目进行一些修改,我可以使用以下代码再次构建:https://github.com/imsizon/ant-android-scala。对于在Android上构建Scala有困难的任何人来说,这是一个良好的开端。
我正在使用ant在Android SDK的第12版中构建scala(遵循此处的说明:http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android。)一切顺利,直到我升级到最新的Android SDK(版本14)。现在我得到了以下输出:
Buildfile: /Users/matt/Documents/workspace/ScalaEclipseAndroid/build.xml
-set-mode-check:
-set-debug-files:
-set-debug-mode:
-debug-obfuscation-check:
-setup:
[echo] Gathering info for ScalaEclipseAndroid...
[setup] Android SDK Tools Revision 14
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 2.1
[setup] API level: 7
[setup] ------------------
[setup] Resolving library dependencies:
[setup] No library dependencies.
[setup] ------------------
[setup] WARNING: Attribute minSdkVersion in AndroidManifest.xml (4) is lower than the project target API level (7)
-build-setup:
[echo] Creating output directories if needed...
-pre-build:
-code-gen:
[echo] ----------
[echo] Handling aidl files...
[aidl] No aidl files to compile.
[echo] ----------
[echo] Handling RenderScript files...
[renderscript] No renderscript files to compile.
[echo] ----------
[echo] Handling Resources...
[aapt] No changed resources. R.java and Manifest.java untouched.
-pre-compile:
-compile:
[scalac] Compiling 0 scala and 1 java source files to /Users/matt/Documents/workspace/ScalaEclipseAndroid/bin/classes
[javac] /Development/android-sdk-mac_x86/tools/ant/build.xml:615: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[scalac] Compiling 0 scala and 1 java source files to /Users/matt/Documents/workspace/ScalaEclipseAndroid/bin/classes
-post-compile:
-obfuscate:
-dex:
[dex] Converting compiled files and external libraries into /Users/matt/Documents/workspace/ScalaEclipseAndroid/bin/classes.dex...
[dx] UNEXPECTED TOP-LEVEL ERROR:
[dx] java.lang.AssertionError
[dx] at com.android.dx.dex.code.OutputFinisher.findExpandedOpcodeForInsn(OutputFinisher.java:525)
[dx] at com.android.dx.dex.code.OutputFinisher.calculateReservedCount(OutputFinisher.java:466)
[dx] at com.android.dx.dex.code.OutputFinisher.reserveRegisters(OutputFinisher.java:402)
[dx] at com.android.dx.dex.code.OutputFinisher.finishProcessingAndGetList(OutputFinisher.java:358)
[dx] at com.android.dx.dex.code.DalvCode.finishProcessingIfNecessary(DalvCode.java:108)
[dx] at com.android.dx.dex.code.DalvCode.getInsns(DalvCode.java:185)
[dx] at com.android.dx.dex.file.CodeItem.place0(CodeItem.java:223)
[dx] at com.android.dx.dex.file.OffsettedItem.place(OffsettedItem.java:242)
[dx] at com.android.dx.dex.file.MixedItemSection.placeItems(MixedItemSection.java:312)
[dx] at com.android.dx.dex.file.DexFile.toDex0(DexFile.java:543)
[dx] at com.android.dx.dex.file.DexFile.toDex(DexFile.java:216)
[dx] at com.android.dx.command.dexer.Main.writeDex(Main.java:574)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:218)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:174)
[dx] at com.android.dx.command.Main.main(Main.java:95)
BUILD FAILED
/Development/android-sdk-mac_x86/tools/ant/build.xml:772: The following error occurred while executing this line:
/Development/android-sdk-mac_x86/tools/ant/build.xml:774: The following error occurred while executing this line:
/Development/android-sdk-mac_x86/tools/ant/build.xml:786: The following error occurred while executing this line:
/Development/android-sdk-mac_x86/tools/ant/build.xml:248: null returned: 3
错误本身不会导致很多信息,而且我对Ant不是最好的。如果有人能够对这个问题有所了解,那将非常感激。
答案 0 :(得分:2)
您可能会遇到dex文件中方法总数的65,535限制:Android issue 20814。在这种情况下,正如您提到的页面所示,使用ProGuard缩小和优化已编译的代码可能会有所帮助。
答案 1 :(得分:0)
来自问题:通过对项目的一点修改,我可以使用它来再次构建:https://github.com/imsizon/ant-android-scala。对于在Android上构建Scala有困难的人来说,这是一个良好的开端。