将Eclipse项目导入Android Studio时出现问题

时间:2017-03-02 18:53:38

标签: android eclipse android-studio build.gradle

我在2年前在Eclipse中创建了我的第一个Android应用程序,现在我有时间来改进它。我没有安装Eclipse,所以我决定将项目导入Android Studio。

但现在我遇到了几个问题:

  

清单合并失败:uses-sdk:minSdkVersion 8不能小于库中声明的版本14 [com.google.android.gms:play-services:10.2.0]

所以在build.gradle中我把它改为14.然后我得到了下一个错误

  

检索项目的父项时出错:找不到与给定名称“android:Widget.Material.Spinner.Underlined”匹配的资源。

因此我将compileSdkVersiontargetSdkVersion更改为25(如果错误,请更正我)。我改变了

compile 'com.android.support:support-v4:20.0.0'

compile 'com.android.support:support-v4:25.2.0'

现在我可以构建我的项目了。但是当我尝试运行我的应用程序时,超过5分钟后(!)我得到了下一个错误:

  

错误:.dex文件中的方法引用数不能超过64K。   了解如何在https://developer.android.com/tools/building/multidex.html

解决此问题

然后我添加了

multiDexEnabled true

compile 'com.android.support:multidex:1.0.1'

android:name="android.support.multidex.MultiDexApplication"

到清单文件。

我的build.gradle现在看起来像这样

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "<<myApplicationId>>"
        minSdkVersion 14
        targetSdkVersion 25
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:25.2.0'
    compile 'com.google.android.gms:play-services:+'
    compile files('libs/AppFireworks.jar')
    compile files('libs/fcvtgzwtzuliivdcu.jar')
    compile 'com.android.support:multidex:1.0.1'
}

但现在我收到了以下弹出窗口和错误

  

Instant Run不支持将启用了multidex的构建变体部署到API级别为20或更低的目标。要将Instant Run与启用了multidex的构建变体一起使用,请部署到API级别为21或更高的目标。

     

错误:意外的顶级错误:

     

错误:java.lang.OutOfMemoryError:超出了GC开销限制   错误:任务':app:transformClassesWithDexForDebug'的执行失败。   com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:java.lang.UnsupportedOperationException

我做错了什么?我必须将minSdkVersion更改为21吗?我希望能够在Android 4.x上运行我的应用程序。我可以在Eclipse中开发。到目前为止,从Eclipse切换到Andriod Studio的情况越来越糟。 : - (

1 个答案:

答案 0 :(得分:1)

您正在使用compile 'com.google.android.gms:play-services:+'

进行编译 播放服务本身就是一个大型图书馆。你不应该使用+来暗示所有可用的版本来编译

而是使用特定版本的播放服务或分解库并使用locationmaps等特定服务。

此外,您可以使用dexOptions来增加编译期间的内存使用量

尝试将您的gradle文件更改为:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "<<myApplicationId>>"
        minSdkVersion 14
        targetSdkVersion 25
        multiDexEnabled true
    }

     dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:25.2.0'
    compile 'com.google.android.gms:play-services-maps:9.0.1'
    compile 'com.google.android.gms:play-services-plus:9.0.1'
    compile 'com.google.android.gms:play-services-location:9.0.1'
    compile 'com.google.android.gms:play-services-games:9.0.1'
    compile 'com.google.android.gms:play-services-gcm:9.0.1'
    compile files('libs/AppFireworks.jar')
    compile files('libs/fcvtgzwtzuliivdcu.jar')
    compile 'com.android.support:multidex:1.0.1'
}