我正在尝试实现RealmSearchView (链接在这里)。但是问题是,当我将它添加到我的依赖项中时,我会得到以下错误:
Error:Execution failed for task ':app:transformNative_libsWithMergeJniLibsForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK lib/x86/librealm-jni.so
File1: C:\Users\Username\.gradle\caches\modules-2\files-2.1\io.realm\realm-android\0.82.2\c6325383149a08e5cb668bdc4d3c790708636e47\realm-android-0.82.2.jar
File2: D:\MyApp\AppName\app\build\intermediates\exploded-aar\io.realm\realm-android-library\2.2.1\jni
我的依赖项看起来如下:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.android.gms:play-services:9.8.0'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
compile 'com.google.firebase:firebase-core:9.8.0'
compile 'com.google.firebase:firebase-messaging:9.8.0'
compile 'com.android.support:design:24.2.1'
compile 'com.github.thorbenprimke:realm-searchview:0.9.1'
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
testCompile 'junit:junit:4.12'
}
为了添加领域,我遵循了他们的教程(这里),我还按照RealmSearchView教程(这里)添加了这些内容。但它们似乎相互冲突?
在没有创建这些重复文件的情况下,如何将两者都包括在项目中呢?
编辑:--这是我为使其运行而添加的内容:
packagingOptions {
pickFirst 'lib/x86/librealm-jni.so'
pickFirst 'lib/arm64-v8a/librealm-jni.so'
pickFirst 'lib/armeabi-v7a/librealm-jni.so'
pickFirst 'lib/mips/librealm-jni.so'
}
但是,现在我得到了这个错误(它现在是否使用了错误的领域版本?)
E/UncaughtException: java.lang.NoSuchMethodError: No static method init(Landroid/content/Context;)V in class Lio/realm/Realm; or its super classes (declaration of 'io.realm.Realm' appears in /data/data/uk.tether.topcom.tether/files/instant-run/dex/slice-realm-android-0.82.2_f252e1b50f018c2840011d6a94a195daa3c99f49-classes.dex)
at uk.abc.def.ghi.RealmUtilities.RealmManagement.intialiseRealmDatabase(RealmManagement.java:20)
at uk.abc.def.ghi.SplashScreenActivity.onCreate(SplashScreenActivity.java:63)
at android.app.Activity.performCreate(Activity.java:5958)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5696)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
它在这里破坏了'init‘方法调用:
public void intialiseRealmDatabase(Context context){
Realm.init(context);
}
编辑2:发现在领域搜索控制器教程(这里)中使用的RealmSearchView版本已经过时。应该是0.9.6版!
发布于 2016-12-14 12:30:28
您对compile 'com.github.thorbenprimke:realm-searchview:0.9.1'
的依赖引用了领域版本0.82.2,同时还包含了领域2.1。
您应该将依赖项删除到realm-searchview
,因为它已经过时,或者您需要复制存储库并亲自更新它,并将其手动添加到项目中。
如果支持最新的领域版本,则只需将其更新到较新的版本即可。
发布于 2016-12-14 11:48:55
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
pickFirst 'lib/x86/librealm-jni.so'
}
在gradle文件中使用这一行将对您有所帮助。
https://stackoverflow.com/questions/41141733
复制相似问题