AndroidStudio导入eclipse项目扫过的坑,记录下

一:先介绍导入流程吧

我用的是android studio 的3.2版本

Eclipse项目工程:一个主工程,一个SDK的依赖库。请先关闭Android Studio当前的Project,否则你看不到Import Project。如图

AndroidStudio导入eclipse项目扫过的坑,记录下_第1张图片

选择“Import project(Eclipse ADT, Gradle, etc.)”,定位到你所需要导入的工程的主目录(这里一定要是工程的主目录,因为可能你的目录存在多级,必须进到你主工程的根目录)。由于主目录和SDK有依赖关系,Android Studio会自动关联进来。然后指定一个保存的目录,点击Next。如图:标志1是一级目录,里面包含主工程标志2 com.xxx._360和依赖工程标志3xxxSdk,、鼠标必须定位到主工程标志2(这里的主工程已经是根目录了,如果不是根目录那么还要进入主工程的根目录

AndroidStudio导入eclipse项目扫过的坑,记录下_第2张图片

这里就是你所建立的studio工程名称以及所在目录

AndroidStudio导入eclipse项目扫过的坑,记录下_第3张图片

最终结果图如下:

AndroidStudio导入eclipse项目扫过的坑,记录下_第4张图片

以下都是默认,直接finish,sdk会被android  studio自动关联

AndroidStudio导入eclipse项目扫过的坑,记录下_第5张图片

AndroidStudio导入eclipse项目扫过的坑,记录下_第6张图片

以上导入项目基本完成,下面肯定会有问题

二:解决问题,我走过的坑

1:在根目录下的build.gradle添加 google():如图

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

2:主工程和依赖工程下的AndroidManifest文件里面的必须屏蔽 uses-sdk字段,因为在配置文件里面包含这个,如果不屏蔽编译会出错



    
        
        

    

3 :主工程和依赖工程下的build.gradle中minSdkVersion和targetSdkVersion根据你下的sdk配置想要的大小,这个没影响,只要不报错,你本地包含,就默认

4:出现Manifest merger failed with multiple errors, see logs.这个问题基本就是manifest文件有问题,首先很重要android studio 导入eclipse项目时必须注意,库里面的manifest文件和主工程manifest文件定义的activity不能重复,假设你在sdk里面定义了一个activity,那么在你的主工程里面一定不能重复定义一模一样的activity;

5:出现乱码:我的eclipse的项目是GBK的,但是android studio是utf-8的,这样的话包含中文的文件一定是乱码,(这个我目前觉得最安全靠谱的方法就是只能一个文件一个文件的修改,网上介绍的也有别的,怕出问题没搞,而且这个方法简单,就是文件多了话比较费时)

AndroidStudio导入eclipse项目扫过的坑,记录下_第7张图片

      解决方式如下:

      1、点击 Android Studio 右下角的 File Encoding UTF-8,在出现提示时点击 GBK;

      2、在出现的对话框中点击 Reload -> Reload anyway,此时源代码乱码消失,出现中文;

      3、点击 Android Studio 右下角的 File Encoding GBK,在出现提示时点击 UTF-8;

      4、在出现的对话框中点击 Convert。

      注意顺序不能出错,已经亲测,如果顺序出错了,那么中文乱码改不回来了。

 

6:出现” 非法字符: '\ufeff' “之类的错误,需要class,interface或enum。

解决办法:利用Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,然后文件替换就可以了,这个不是编码的问题,纯粹文字内容替换无效,必须文件替换。

7:我导入的eclipse项目包含jni,所以这时出现一个问题:

Error:Execution failed for task ':libtermexec:compileReleaseNdk'.
> Error: Your project contains C++ files but it is not using a supported native build system.
Consider using CMake or ndk-build integration with the stable Android Gradle plugin:
https://developer.android.com/studio/projects/add-native-code.html
or use the experimental plugin:
https://developer.android.com/studio/build/experimental-plugin.html.

解决办法是:在主工程的build.gradle中的buildTypes上面添加如图所示,我的是这样添加的解决了问题,没有添加其他配置,我的AS是3.2版本的,没有gradle.properties这个文件,所以也没有添加android.useDeprecatedNdk=true这个玩意,就加了如下配置就ok了,而且也没有下载ndk,也没有其它配置

   sourceSets {
        main {
            jni.srcDirs = []
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard.cfg'
        }
    }

8:出现the same input jar is specified twice这个问题,我们在build.gradle文件中已经配置过jar文件了,然而eclipse项目的proguard文件包含了jar的配置,如图所示,所以将proguard文件中 以下内容可以删除或注释掉,我这里选择注释掉

AndroidStudio导入eclipse项目扫过的坑,记录下_第8张图片

AndroidStudio导入eclipse项目扫过的坑,记录下_第9张图片

 

最后就是所有问题都解决了,没问题了,但是运行按钮还是灰色的,如图

这个情况只是需要点下  按钮同步下就ok了,就会如图出现可运行按钮了

9:添加外部jar时,流程如图:点击 File ——> Project Structure,点红框标记的+号

AndroidStudio导入eclipse项目扫过的坑,记录下_第10张图片

弹框如下,搜索你想要的依赖包,点击ok就可以了,相应的工程下面的build.gradle中dependencies就会自动出现你添加的依赖包

AndroidStudio导入eclipse项目扫过的坑,记录下_第11张图片

注意一点就是包是否下下来如图所示的目录中有没有下载完整,如果没有,那么你的依赖包没下下来,需要重新换个

AndroidStudio导入eclipse项目扫过的坑,记录下_第12张图片

10:如果添加了多个依赖包,有重复的时候,会编译出错提示 More than one file was found with OS independent path ‘META-INF/proguard/androidx-annotations.pro’

解决办法:如果不影响的话要么删掉多余的依赖包;要么就是在build.gradle文件中添加如下代码

packagingOptions {
       exclude 'META-INF/proguard/androidx-annotations.pro'
}

AndroidStudio导入eclipse项目扫过的坑,记录下_第13张图片

而我的工程我是删除了多余的依赖包的,对我的工程没影响

 

最后,就是如果工程没有错误,但是一直出现不了运行的按钮(Run app按钮是灰色的),可以点击如下按钮进行同步,这样就ok了

 

 

你可能感兴趣的:(android,android,studio)