在 Android Studio 1.3.1 中多次导入库项目导致库消失

Posted

技术标签:

【中文标题】在 Android Studio 1.3.1 中多次导入库项目导致库消失【英文标题】:Importing library project multiple times in Android Studio 1.3.1 causes library to disappear 【发布时间】:2015-11-05 01:19:57 【问题描述】:

我有一个名为 Common 的库项目,我将其用于由我的其他项目 Consumer 和 Management 共享的功能。 Consumer 本身也是一个库项目,供其他应用程序使用。

Common 中的 build.gradle 文件包含其他项目使用的所有外部依赖项,如下所示:

dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'com.android.support:support-v4:22.1.0'
    compile 'com.squareup.picasso:picasso:2.5.2'

这会下载以下库:

当我将 Common 添加到 Consumer、Management 或两者中时,此列表保持不变。当我像这样将消费者添加到 MyApp 时:

dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':consumer')

发生这种情况:

支持库消失了,对我的项目造成了彻底的破坏。这在更新到 Android Studio 1.3.1 之前没有发生,所以我真的想知道问题可能是什么。

这些是完整的 gradle.build 文件供参考:

常见

apply plugin: 'com.android.library'

android 
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig 
        minSdkVersion 11
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'com.android.support:support-v4:22.1.0'
    compile 'com.squareup.picasso:picasso:2.5.2'

管理

apply plugin: 'com.android.application'

android 
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig 
        applicationId "eu.test.mgmt"
        minSdkVersion 11
        targetSdkVersion 22
        multiDexEnabled = true
    
    packagingOptions 
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/ASL2.0'
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        
    


dependencies 
    compile project(':common')

消费者

apply plugin: 'com.android.library'

android 
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    lintOptions 
        checkReleaseBuilds false
        abortOnError false
    

    defaultConfig 
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 18
        versionName "1.3"
        multiDexEnabled = true

    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    sourceSets  main  res.srcDirs = ['src/main/res', 'src/main/xml', 'src/main/res/xml']  

repositories 
    mavenCentral()


dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':common')

我的应用:

apply plugin: 'com.android.application'

android 
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig 
        applicationId "eu.test.myapp"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 19
        versionName "1.4"
        multiDexEnabled = true
    
    packagingOptions 
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/ASL2.0'
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    


dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':consumer')

【问题讨论】:

我能看到的唯一奇怪的事情是您在消费者build.gradle 中指定了存储库。也许尝试删除该块,因为它似乎没有必要,尽管我也不确定这会导致您的问题。 两个问题!!您是否尝试添加 :common 作为直接依赖项?那么appCompat库也没有显示?并添加 :management 作为依赖项也会导致同样的问题? 是否仅在 IDE 中丢失?尝试./gradlew your_app:dependencies 并提供输出 【参考方案1】:

尝试单击项目结构的图标并检查有关结构的详细信息。有时可能只是您导入的库缺少一些重要步骤

【讨论】:

【参考方案2】:

在导入或删除任何库后cleanrebuild项目是好的,这样就不会有任何GC 在 Android Studio 中。

【讨论】:

我认为这个问题是在旧的 Android 工作室。通过使用最新版本 4.2.1,我们不会出现这些类型的错误。

以上是关于在 Android Studio 1.3.1 中多次导入库项目导致库消失的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 1.3.1 中的错误 Java 堆大小

android Service中多线程交互

Android中多表的SQLite数据库(译)

Android开发中多进程共享数据

在Android Studio中查看Sqlite的方法

android 一个Dialog中多页面切换,如何实现?