从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项

简介: 整体要注意的地方 先说明一下整体需要注意的地方 1在Android studio建立项目的时候,要注意包名和原来的完全一致,不然会有很多需要改动. 2依赖的jar一定一定要找齐,不然新建项目引用不到,要么重新找包,严重的话,那部分代码要重写,影响很恶劣.

整体要注意的地方

先说明一下整体需要注意的地方

1在Android studio建立项目的时候,要注意包名和原来的完全一致,不然会有很多需要改动.

2依赖的jar一定一定要找齐,不然新建项目引用不到,要么重新找包,严重的话,那部分代码要重写,影响很恶劣...

3Android studio的编译器有点蠢.引用了多余的包编译会通过,但是debug会报错.此事要重点排查android.support:appcompat-v7和com.android.support:support-v4包.这2个包很有可能是多余的,lib那里记得删了.

 

然后,我建议的迁移顺序是

资源的引用(res)

values下string,id,等XML

res下其他目录的XML.

  对于图片文件,文件夹名从drawable-XX改为mipmap-XX

  除了目录变更之外.
  引用资源的方式也有所改变.
//以前的写法
<item android:drawable= "@drawable/actionsheet_bottom_pressed" android:state_focused="true"></item>
//现在的写法
<item android:drawable="@mipmap/actionsheet_bottom_pressed" android:state_focused="true"></item>

  不照做的话预览视图那里就会提示

Couldn't resolve resource @drawable/actionsheet_bottom_pressed  Failed to convert @drawable/actionsheet_bottom_pressed into a drawable  <item> tag requires a 'drawable' attribute or child tag defining a drawable

  另外.奇葩文件的命名要改

  比如我之前发现有这样的图片actionsheet_bottom_pressed.9.png.在Android studio引用@mipmap/actionsheet_bottom_pressed"的话引用不到...

  为了图快速解决问题我就只能改文件名,然后批量替换(replace )了.

 

color也是

@color/white  → @android:color/white

代码的迁移

文件的编码

万恶的傻逼eclipse用的ansi(window-1252)编码.要改成无bom 的UTF-8(我用notepad++转的,命令行批量处理,我不会...).不然Android studio无法识别其中的中文,我再说几遍,无bom 的UTF-8,无bom 的UTF-8,无bom 的UTF-8,无bom 的UTF-8......

强调无bom是因为不照做会有这个错误

非法字符: '\ufeff'

  

Android studio是基于文件目录的管理.在外部打开对文件CRUD,过一段时间之后,IDE那边会自动同步

java代码中资源的引用

drawable→_→mipmap

 

2015-11-20更新:

依赖项的迁移

关于依赖项的引入,第三个参考链接里面就写的相当好,但是不全面.要结合他的例子去看.这里我除了复述他的观点,我会再补充一些更具体的内容.

 jar的迁移

jar比较简单.

以最新版的Android studio(1.5)为例.把eclipse里libs里的jar包拖到Android studio模块里面的libs文件夹.待Android studio同步过来后,全选这些*,jar.然后点击add as library.

正常情况下.在该模块的build.gradle文件中,dependencies下面会有刚刚添加过的包的编译文件指令.

比如

 compile files('libs/baidumapapi_v3_5_0.jar')
    compile files('libs/com.umeng.fb.5.4.0.jar')
    compile files('libs/gson-2.3.1.jar')
    compile files('libs/locSDK_5.2.jar')
    compile files('libs/nineoldandroids-2.2.0.jar')
    compile files('libs/umeng-analytics-v5.5.3.jar')

 代码引用的包没有出错,即说明引入成功. 

 

二进制文件(so)的迁移

我也是拖入libs里面.然后在模块的build.gradle中android里面插入

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

 

project/modules的迁移

原本在eclipse中,可以直接新建一个Android工程,然后别的项目以library的方式引用它.但到了Android studio,这种工程换了一种更精确的说法,叫module/模块.

于是原本在eclipse中A项目引用B项目的场景,在Android studio中会被描述为A模块依赖B模块.

我再描述一下整个过程

 

处理被依赖项目B

项目B的build.gradle里面,要改3个地方

1.apply plugin: 'com.android.application'改为apply plugin: 'com.android.library'

代表B是一个类库

2.去掉applicationId

直接注释(//  applicationId "com.XXXXXX")即可

否则会出现这个错误

Error:Library projects cannot set applicationId. applicationId is set to 'com.XXXXXX' in default config.

3.(可选项)排除一些文件

 packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/ASL2.0'
    }

 

import moudule

在我的场景中为A项目里面import B module.

(见第四个链接,这里直接复制他写的过程)

    1. Goto File -> New -> Import Module.
    2. Android Studio Add Library
    3. Source Directory -> Browse the project path.
    4. Specify the Module Name – it is used for internal project reference.
    5. Android Studio Add Library - 2
    6. Let Android Studio build the project.
    7. Open build.gradle (Module:app) file.
    8. Add the following line with your module name in place of “Volley” in the dependencies block:
    9. It should look something like this:
    10. Android Studio Add Library 3

 

 这个过程完成之后,

1.在A module里的build.gradle里面会多出 compile project('moduleB')

2.setting.gradle里面会自动include模块B

3.项目里面多出一个我们新建的模块的目录,把导入的模块的内容都导入过来

 

处理冲突的节点

由于A和B项目里面都有AndroidManifest.xml文件.
并且在application里面的android:name节点内容不一致,导致合并的时候产生了冲突,这个时候.我们需要对A项目里的节点进行冲突处理.它同步的时候有个提示的.
<application
        android:name="com.xxxx"        tools:replace="android:name"
        >

在A项目的AndroidManifest.xml文件里面对节点进行替换即可.也就是上面的tools:place=''android:name'.

关于迁移,可以参照官方的指导(第8个链接)


 

 

 

 

 

体会:暂时遇到这些问题,我想,既然迁移这么蛋疼,那么这破事我以后能不做就不做,必须做,就等我整理强迫症发作后再做好了.......

 

 

 

参考链接:

  1. Android Studio drawable下的XML文件如何调用mipmap图片资源?
  2. Android studio R文件找不到
  3. Android Studio Jar、so、library项目依赖
  4. Android Studio | How To Add A Library Project?
  5. How to import android project as library and NOT compile it as apk (Android studio 1.0)
  6. Error:Library projects cannot set applicationId. applicationId is set to 'com.gdtel.eshore.anroidframework' in default config.
  7. Android studio Gradle icon error, Manifest Merger
  8. Manifest Merger

 

目录
相关文章
|
3月前
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
166 1
|
3月前
|
Ubuntu Linux Android开发
Android Studio支持多种操作系统
Android Studio支持多种操作系统
145 1
|
3天前
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
64 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
5天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
56 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
3天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
21 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
18天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
55 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
22天前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
25 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
IDE 开发工具 Android开发
移动应用开发之旅:探索Android和iOS平台
在这篇文章中,我们将深入探讨移动应用开发的两个主要平台——Android和iOS。我们将了解它们的操作系统、开发环境和工具,并通过代码示例展示如何在这两个平台上创建一个简单的“Hello World”应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧,帮助你更好地理解和掌握移动应用开发。
86 17
|
Java Android开发 开发工具
将studio项目 转换为eclipse项目
总会有些奇怪的事情,比如,有的人就有将studio项目 转换为eclipse项目的需求 首先,不要因为编译原因而放弃。studio项目是完全可以转换成eclipse的 本站的开源代码板块有很多项目都是android studio开发的,很多同学以为必须要先学会studio,才能编译这些源代码,于是花了很长时间学studio,结果发现还是不会。其实任何studio项目
1145 0
|
9月前
|
Java Maven Android开发
在Eclipse里配置Maven插件
Maven是一款比较常用的Java开发拓展包,它相当于一个全自动jar包管理器,会导入用户开发时需要使用的相应jar包。使用Maven开发Java程序,可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在Eclipse里安装和配置Maven插件。
210 0

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
  • 3
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 4
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 5
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(上)
  • 8
    Android数据库开发——SQLite
  • 9
    Android Studio安装使用图文教程
  • 10
    站在巨人的肩膀上---重新自定义 android- ExpandableListView 收缩类,实现列表的可收缩扩展
  • 推荐镜像

    更多