Android Studio:从构建中删除com.facebook.Android包
我在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的答案中找到了该文件),但仍然出现了错误: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
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无关。