Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio:从构建中删除com.facebook.Android包_Android - Fatal编程技术网

Android Studio:从构建中删除com.facebook.Android包

Android Studio:从构建中删除com.facebook.Android包,android,Android,我在Android Studio中导入了一个Eclipse项目。它使用facebook SDK。为了导入它,我必须确保FacebookSDK文件夹位于项目路径中。导入成功,我可以进行构建,没有错误。但是,当我尝试在模拟器中运行应用程序时,我得到以下错误: 意外的顶级异常: com.android.dex.DexException:多个dex文件定义Lcom/facebook/AccessToken$SerializationProxyV1 根据我的研究,这表明com.facebook.andro

我在Android Studio中导入了一个Eclipse项目。它使用facebook SDK。为了导入它,我必须确保FacebookSDK文件夹位于项目路径中。导入成功,我可以进行构建,没有错误。但是,当我尝试在模拟器中运行应用程序时,我得到以下错误:

意外的顶级异常: com.android.dex.DexException:多个dex文件定义Lcom/facebook/AccessToken$SerializationProxyV1

根据我的研究,这表明com.facebook.android包位于两个位置:在我的项目中和FacebookSDK模块中,这是一个依赖项。为了解决这个问题,我的研究表明,我需要从我的项目中删除包,并将其保留在FacebookSDK模块中

我尝试在Android Studio中通过从Build文件夹(Build\generated\source\r\debug\com.facebook.Android)中删除包来实现这一点。但是,当我重建项目时,它会重新生成包。所以我决定从Android Studio之外的Finder中删除这个包。但当我运行重建时也会发生同样的事情

请让我知道我做错了什么,或者是否有某种方法将此包从构建中排除,而不是删除它

顺便说一下,为了将包从构建中排除,我尝试将其放入项目的build.gradle中(我在stackoverflow的答案中找到了该文件),但仍然出现了错误:

configurations {
all*.exclude group: 'com.facebook.android'
}
这是我的格拉德尔:

apply plugin: 'com.android.application'

android {
compileSdkVersion 19
buildToolsVersion "21.1.2"
defaultConfig {
    applicationId 'org.bicsi.fall2015'
    minSdkVersion 14
    targetSdkVersion 17
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
productFlavors {
}
}

configurations {
all*.exclude group: 'com.facebook.android'
}

dependencies {
compile project(':facebookSDK')
compile 'com.android.support:support-v4:19.1.0'
compile files('libs/Parse-1.3.8.jar')
compile files('libs/PushIOManager.jar')
compile files('libs/crittercism_v4_3_0_sdkonly.jar')
compile files('libs/facebooksdk.jar')
compile files('libs/httpclient-4.0.1.jar')
compile files('libs/libGoogleAnalyticsServices.jar')
compile files('libs/stackmob-android-sdk-1.3.5.jar')
compile files('libs/twitter4j-core-3.0.5.jar')
}

我建议您放置“gradle.build”文件,显示依赖项部分,以便更容易帮助您

根据你的解释,你从导入的模块和你自己的构建中导入了两次facebook模块,对吗

使用compileproject包含模块,并从maven存储库获取模块。也许是这样的

dependencies {
   compile 'com.facebook.android:facebook-android-sdk:4.0.0'
   compile project(':my_project_that_contains_facebook')
}
如果是这样的话,你可以做以下事情

dependencies {
   compile 'com.facebook.android:facebook-android-sdk:4.0.0'
   compile (project(':my_project_that_contains_facebook')) {
      exclude module: 'com.facebook.android'
   }
}

我建议您放置“gradle.build”文件,显示依赖项部分,以便更容易帮助您

根据你的解释,你从导入的模块和你自己的构建中导入了两次facebook模块,对吗

使用compileproject包含模块,并从maven存储库获取模块。也许是这样的

dependencies {
   compile 'com.facebook.android:facebook-android-sdk:4.0.0'
   compile project(':my_project_that_contains_facebook')
}
如果是这样的话,你可以做以下事情

dependencies {
   compile 'com.facebook.android:facebook-android-sdk:4.0.0'
   compile (project(':my_project_that_contains_facebook')) {
      exclude module: 'com.facebook.android'
   }
}
你的问题在这里:

compile project(':facebookSDK')
compile files('libs/facebooksdk.jar')
您正在使用同一个库(可能具有不同的版本)两次

从依赖项中删除jar

另外,使用Android Studio和gradle系统,我建议您在本地删除模块并使用

compile 'com.facebook.android:facebook-android-sdk:4.0.0'
而不是编译项目(':facebookSDK')

您的问题是:

compile project(':facebookSDK')
compile files('libs/facebooksdk.jar')
您正在使用同一个库(可能具有不同的版本)两次

从依赖项中删除jar

另外,使用Android Studio和gradle系统,我建议您在本地删除模块并使用

compile 'com.facebook.android:facebook-android-sdk:4.0.0'

而不是编译项目(':facebookSDK')

使缓存失效并重新启动。删除现在通过gradle dependency system.Eugen Pechanec导入的任何lib的
.jar
s,这是有效的。将此添加为答案。使缓存无效并重新启动。删除您现在通过gradle dependency system导入的任何库的
.jar
s。Eugen Pechanec,这很有效。加上这个作为答案。好的,我在问题中包括了我的分数。我看到它正在编译facebooksdk项目和facebooksdk.jar。这就是问题所在吗?我会试试你上面说的。看看Eugen Pechanec说的,你包括了.jar和facebookSDK,它可能也包含了代码。如果您不再打算在eclipse上使用此项目,您也可以尝试直接从gradle导入facebook。是的,删除facebooksdk.jar的编译是可行的。现在我得到了另一个重复的问题,但与facebooksdk无关。好的,我在问题中包括了我的gradle。我看到它正在编译facebooksdk项目和facebooksdk.jar。这就是问题所在吗?我会试试你上面说的。看看Eugen Pechanec说的,你包括了.jar和facebookSDK,它可能也包含了代码。如果您不再打算在eclipse上使用此项目,您也可以尝试直接从gradle导入facebook。是的,删除facebooksdk.jar的编译是可行的。现在我得到了另一个重复的问题,但与facebooksdk无关。