将Eclipse工程转Android Studio工程的步骤与注意事项

 更新时间:2017年11月28日 11:55:54   作者:laocaixw  
这篇文章主要给大家介绍了将Eclipse工程转Android Studio工程的方法步骤,并给大家分享了其中的一些注意事项,文中将实现的步骤一步步介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧。

Gradle的基础

想要将Eclipse转为Android Studio项目,那么Gradle语法是必修课。此处引进一篇文章,基础就不写了,Gradle基础

引言

目前,用 Android Studio 来开发 Android 项目已是大势所趋,就连 Google 也已经宣布了不再支持 Eclipse 。所以一些老的 Eclipse 工程转 Android Studio 工程也是有必要的。工程转换有两种:一种是兼容模式,即 Eclipse 和 Android Studio 都可以用的工程结构;一种是 Android Studio 的目录结构。这里先记录下兼容模式的转换方法。

一.从 Eclipse 中导出 Gradle 文件

首先保证 Eclipse 包含 Gradle 插件,选择菜单 File->Export->Generate Gradle build files,

然后一路无脑 next ,勾选需要转换的工程(如果有依赖工程,把依赖工程也勾选上),在 finish 之前最好勾选上 Force overriding of existing files ,以保证覆盖掉工程中由于之前有过类似操作而存在的文件。

二.修改 gradle 文件参数

现在,工程中多出了几个 gradle 相关的文件。修改两个地方为最新版本:

1.build.gradle。

找到

classpath 'com.android.tools.build:gradle:0.8.+'

改为

classpath 'com.android.tools.build:gradle:2.2.3'(目前最高版本)

2.gradle/wrapper/gradle-wrapper.properties。

找到

distributionUrl=http\://services.gradle.org/distributions/gradle-1.10-all.zip

改为

distributionUrl=http\://services.gradle.org/distributions/gradle-2.14.1-all.zip(目前最高版本)

三.导入 Android Studio

在 Android Studio 的 Welcome 界面选择 import project(Eclipse ADT,Gradle,etc)

选择工程,等待编译完成。这时候,不会马上编译成功,需要耐心,根据编译错误信息修改错误。常见的错误有: jni 库位置、构建工具版本低、图片检查报错、Manifest 冲突、jar 包冲突等。

四.常见编译错误解决方法

1.jni 库位置。在 build.gradle 中添加:

sourceSets {
 main {
 jniLibs.srcDirs = ['libs']
 }
}

2.构建工具版本低。提高构建工具版本,一般 Android Studio 都会有提示。

3.图片检查报错。把 .9 图片放到 dawable 文件夹而不是 mipmap 文件夹;在 build.gradle 中添加:

aaptOptions {
 cruncherEnabled false
 useNewCruncher false
}

4.Manifest 冲突。删除重复的 uses-permission 权限;忽略 Manifest 资源值冲突:

在 manifest 根标签上加入:

然后,在 application 标签下添加:

tools:replace="android:icon, android:theme"(多个属性用,隔开)

或者直接在 gradle 中添加:

useOldManifestMerger true

5.jar 包冲突。删除 library 工程中与主工程冲突的 jar 包。

五.库工程(Library)打 aar 包

如果工程中有依赖工程(即 Library 工程,Android Studio 中称 Module 工程),那么最好将它打成 aar 包,以提高日常调试时的编译速度。因为 Android Studio 每次编译的时候,都会把项目下的所有工程都编译一遍,这样会浪费一些不必要的时间。所以,如果不是特殊情况,最好将 Module 工程打成 aar 包来使用。那这个 aar 怎么生成呢?

首先,当我们做完前面的操作,程序都正常跑起来了之后。

在 Module 工程的 \build\outputs\aar\ 下可以找到编译生成的 aar 包,把 aar 包拷到主工程的 \libs\ 下。

去掉根目录下 settings.gradle 文件中原来工程的 include :

// include ':XXXXX'

将主工程中 build.gradle 文件的工程依赖关系,改为 aar 包依赖:

// compile project(':XXXXX')
compile(name: 'XXXXX', ext: 'aar')

点击右上角 Sync Now,等待 gradle 完成,这样就 OK 了,是不是很简单!

Android Studio新手导入Eclipse项目注意事项

1. 在引入moudle的build.gradle中的apply plugin: 'com.android.library',标识当前的moudle是一个libary,而不是apply plugin: 'com.android.application'

2. 用Eclipse到处的Gradle,libary中的清单文件中如果有application节点,请删除,否则会报错,因为编译的时候gradle会找到两个application节点。

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>

3. 由于Android Stduio对于图片格式要求比较严格,从Eclipse转过来的情况下,一般都会报图片格式错误AAPT err(Facade for 1059284777): libpng error: Not a PNG file,那么请按下面说明修改:

在APP的build.gradle下的android项中添加:

//放宽PNG图片检查条件
aaptOptions.cruncherEnabled = false;
aaptOptions.useNewCruncher = false;

4. 主工程和libary中如果有相同的jar,Eclipse中是不会报错的,而Android Studio中则会报类重复错误,那么我们将主工程中和libary中重复的jar删除即可。

5. 从Eclipse转过来的Android Studio项目不会默认添加so的路径,能够编译成功,也能安装成功,但就是启动报错,可以看出so报错,然后VM就挂掉了,说明没有找到so的路径所在。在主工程的build.gradle中配置以下代码即可,表示so库的路径在libs下,也可指定为其他路径。

sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}


6. 引入本地jar推荐使用这种方式,不需要每添加一个jar都add一次。

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}

7. 编译ok后,运行报错:Could not find XXXX in APK; aborting.请按如下设置重新运行。

File - Settings - Build,Execution,Deployment - Instant Run,去掉Enable Instant Run...边上的钩

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 一文带你了解Android中的网络请求

    一文带你了解Android中的网络请求

    安卓开发网络请求可谓是安卓开发的灵魂,如果你不会网络请求,那么你开发的应用软件就是一具没有灵魂的枯骨。本文主要为大家介绍的是Android的网络请求,感兴趣的可以跟随小编一起学习一下
    2022-11-11
  • OpenGL Shader实例分析(8)彩色光圈效果

    OpenGL Shader实例分析(8)彩色光圈效果

    这篇文章主要为大家详细介绍了OpenGL Shader实例分析第8篇,彩色光圈效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 超详细的Android开发调试工具ADB命令及安装介绍

    超详细的Android开发调试工具ADB命令及安装介绍

    这篇文章主要介绍了Android调试工具ADB安装使用技巧,非常详细,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家早日升值加薪
    2021-09-09
  • Android实现机房座位预约系统

    Android实现机房座位预约系统

    这篇文章主要为大家详细介绍了Android实现机房座位预约系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 详解Flutter中listview的高级用法

    详解Flutter中listview的高级用法

    一般我们使用Listview的方式是构建要展示的item,然后将这些item传入ListView的构造函数即可,通常情况下这样做是够用了,但是不排除我们会有一些其他的特殊需求。今天我们会来讲解一下ListView的一些高级用法,希望对大家有所帮助
    2023-01-01
  • Android Studio 3.6 正式版终于发布了,快来围观

    Android Studio 3.6 正式版终于发布了,快来围观

    Android Studio 3.6 正式版终于发布了,值得兴奋呀,毕竟 3.5 大版本更新也已经差不多半年了,撒花撒花!这次更新又更新了什么呢?快来跟随小编一起看看吧
    2020-02-02
  • Android中TextView限制最大行数并在最后用显示...全文

    Android中TextView限制最大行数并在最后用显示...全文

    TextView在android开发中是一个经常用到的基础控件,功能也很强大,限制输入字符类型,字数什么的,下面这篇文章主要给大家介绍了关于Android中TextView限制最大行数并在最后用显示...全文的相关资料,需要的朋友可以参考下
    2022-04-04
  • Android之Spinner用法详解

    Android之Spinner用法详解

    这篇文章主要介绍了Android之Spinner用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Android访问assets本地json文件的方法

    Android访问assets本地json文件的方法

    这篇文章主要介绍了Android访问assets本地json文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android 5.0及以上编程实现屏幕截图功能的方法

    Android 5.0及以上编程实现屏幕截图功能的方法

    这篇文章主要介绍了Android 5.0及以上编程实现屏幕截图功能的方法,结合实例形式分析了Android5.0以上实现截图功能的相关类、函数及权限控制等操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论