Android 4.2 ZBarCodescan java应用程序需要在Windows 7 x64计算机中编译。
其源代码为located here。
安装了Android Studio,并使用Github导入命令导入代码。 在gradle文件中API已更改为23
compileSdkVersion 23
根据
How to use eclipse project from github for Android development
Android studio Build APK命令会产生异常
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
尝试通过添加行来解决此问题
dexOptions {
preDexLibraries = false
}
根据项目gradle行
Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat
导致错误
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoJellyBeanMr2;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;
如何解决这个问题?
Answer here建议检查依赖树。如何在Android Studio中获取此树以及如何修复它?
删除android-support-v4.jar异常后
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
仍然会发生。
更新。我尝试使用https://github.com/cricket007/DeviceSDK/tree/fixes importfixes分支 url但是测试按钮和导入产生错误
如何导入此分支?
答案 0 :(得分:5)
意外的顶级例外情况: com.android.dex.DexException:多个dex文件定义了Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoVersionImpl;
这是因为你加了两次同一个班级。
在您使用的情况下:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:appcompat-v7:23.1.1'
}
appcompat-v7
与support-v4
有依赖关系
您的libs文件夹中有android-support-v4.jar
。
删除android-support-v4.jar(你不需要它,因为appcompat已经有了它)。
答案 1 :(得分:1)
在Android中使用后,我向该库创建了pull request。
如果在尝试构建时出现此错误
找不到SDK位置。使用sdk.dir在local.properties文件中或使用ANDROID_HOME环境变量定义位置。
或者您没有看到,但是在导入时会遗漏任何错误local.properties
,然后添加指向Android SDK位置的local.properties
文件,然后尝试导入/重建。
例如在Mac上,该文件将包含此行,但显然会将文件路径更改为指向各自SDK的位置
sdk.dir=/usr/local/opt/android-sdk
完成后,它应该加载到Android Studio没有问题。
代码也在4.2仿真器上进行了测试。
通过Git终端的简单方法(可以使用Git Desktop执行相同操作)。
git clone https://github.com/cricket007/DeviceSDK /path/to/download/
cd /path/to/download/
git branch fixes
然后将/ path / to / download / DeviceSDK导入Android Studio作为导入项目Gradle
漫长的道路(通过Android Studio)
使用 https://github.com/cricket007/DeviceSDK.git 作为Git回购
打开Project,您可以忽略弹出的大多数错误
进入菜单栏,选择 VCS>启用版本控制集成
选择Git
返回 VCS> Git>分支强>
Checkout修复为新的本地分支
命名分支。
如果出现提示,请选择强制结帐
我不知道点击“运行”按钮对Gradle项目的影响,但是您应该打开右侧的Gradle View并打开TestDemo,选择 installDebug
从这里开始,您需要上面的local.properties
文件解决方案,并在物理设备上启用ADB调试或在模拟器上进行测试。
答案 2 :(得分:0)
当我遇到同样的错误时,我必须在build.gradle文件中注释掉以下行:
编译fileTree(dir:' libs',包括:' * .jar')