我能够编译并运行任何问题,一个NavigationDrawer示例。
接下来,我添加了一个模块,该模块又包含google play-services库(此模块'map'已在另一个proyect中测试并使用,并且工作正常)
但是当我将此模块作为依赖项(compile proyect (':map'))
添加到build.gradle时,构建失败。
消息是:
“错误:任务'执行失败':app:transformClassesWithDexForDebug'。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中: 65536"
我理解这个错误很好,因为方法的数量超过了64K的最大值。所以我使用'multiDexEnabled true'选项。
现在它编译完美,但是在调试模式下运行,它会在尝试加载CoordinatorLayout
布局时抛出运行时异常
这是控制台抛出的内容
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.simplifiedcoding.navigationdrawerexample/net.simplifiedcoding.navigationdrawerexample.MainActivity}: android.view.InflateException: Binary XML file line #11: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at net.simplifiedcoding.navigationdrawerexample.MainActivity.onCreate(MainActivity.java:24)
我还尝试将图书馆的声明限制为我打算使用的内容,替换
compile 'com.google.android.gms:play-services:+'
带
compile 'com.google.android.gms:play-services-maps:+'
compile 'com.google.android.gms:play-services-location:+'
compile 'com.google.android.gms:play-services-gcm:+'
compile 'com.google.android.gms:play-services-plus:+'
同样的问题。它是构建,但在加载协调器布局时失败。
问题是:
是否可以与包含play-services库的项目一起运行NavigationDrawer,以及multiDexEnabled选项集(无论如何我需要设置此选项,因为我在根项目中有很多方法)< / p>
希望它足够清楚
这是NavigationDrawer的build.grade:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "net.simplifiedcoding.navigationdrawerexample"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile project (':map')
}
,这是map项目的build.gradle包含作为NavigationDrawer的依赖
apply plugin: 'com.android.library'
android {
compileSdkVersion 'Google Inc.:Google APIs:24'
buildToolsVersion "24.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}
dependencies {
//compile 'com.google.android.gms:play-services:+'
compile 'com.google.android.gms:play-services-maps:+'
compile 'com.google.android.gms:play-services-location:+'
compile 'com.google.android.gms:play-services-gcm:+'
compile 'com.google.android.gms:play-services-plus:+'
}
答案 0 :(得分:0)
除了cricket_007的评论,您可能需要检查Adding Support Libraries中给出的这种警告:
使用动态依赖项(例如,
php -i
)可能会导致意外的版本更新和回归不兼容。我们建议您明确指定库版本(例如,palette-v7:23.0.+
)。
此外,检查使用的版本。如Manifest Declaration Changes
中所述如果要包含多个支持库,则最低SDK版本必须是任何指定库所需的最高版本。例如,如果您的应用包含v14 Preference Support library和v17 Leanback library,那么您的最低SDK版本必须为17或更高。
最后,您可能还想查看此article以获取有关设计支持库的其他见解。