Eclipse转Android Studio遇到的问题小结
来源:互联网 发布:php 图片裁剪上传插件 编辑:程序博客网 时间:2024/06/07 20:19
Android Studio在近期使用已经是如火如荼,并且Google也不再支持Eclipse了。我终于下定决心,从Eclipse转过来。但是,期间,也遇到不少问题,以及一些使用上的差异点,下面分几方面小结一下:
1,安装Android Studio
2,关联模拟器
3,导入一个简单的eclipse工程
4,导入一个复杂的eclipse工程(有数十个Activity)
5,打包发布
6,几个常用快捷键
一、Android Studio环境搭建
安装了Android Studio 2.2.2,导入一个eclipse项目,AS报错:
Unsupported major.minor version 52.0
原来是jdk的版本低了,本来是jdk1.7,重新安装,更新jdk1.8。
安装jdk1.8后,在cmd里输入java -version ,验证版本,报错:
Registry key 'Software/JavaSoft/Java Runtime Environment/CurrentVersion'has value '1.8', but '1.7' is required.
复制最新版本jdk中的
java.exe javaw.exe javaws.exe到%systemroot%/system32下替换之前的三个文件
或者参考http://blog.csdn.net/aliasp/article/details/43493909,
然后运行 java -version 查看版本正常了。
二、关联模拟器
1、使用夜神模拟器
我原先使用的夜神模拟器,现在运行AS找不到了。
解决方法:
先启动夜神模拟器,启动cmd命令行,进入nox_adb.exe的路径,然后运行命令:
nox_adb.exe connect 127.0.0.1:62001
2、使用genymotion
接着,试了下genymotion,先下载genymotion,安装完成后,创建虚拟设备,选择一种:
Google Nexus S - 4.1.1 - API 16 - 480x800
下载失败,报超时。
解决办法:
打开 C:\Users\用户名\AppData\Local\Genymobile目录
打开genymotion.log文件,在里面最下面几行,找到如下日志
[Debug] Downloading file "http://files2.genymotion.com/dists/4.4.4/ova/genymotion_vbox86p_4.4.4_151118_000003.ova"
复制下载地址http://files2.genymotion.com/dists/4.4.4/ova/genymotion_vbox86p_4.4.4_151118_000003.ova 到下载器,下载好后,把文件复制到
C:\Users\用户名\AppData\Local\Genymobile\Genymotion\ova目录,重启Genymotion,ok。
三、导入一个简单的eclipse工程(只有2个java文件)
导入一个简单的eclipse项目,遇到编译报错:
1,*.9.png 失效,报错信息:
9-patch image ***.9.png malformed.No marked region found along edge.
错误原因:AAPT 工具无法确认 9-patch 图片中的拉伸区域。
因为制作该 android 9-patch 图片,图片当时只标记了纵向拉伸 ( 左侧 ) 区域 , 没有标记横向拉伸 ( 上方 ) 区域 ,因此 AAPT 无法确认 9-patch 图片当中的拉伸区域 。
解决方法:
使用AS的编辑工具重新设置可拉伸区域。
2,有乱码,编译报错。
Error:(38, 5) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?
问题原因:
源代码是 GBK 格式,Android Studio Encoding 方式是 UTF-8。
解决方法:
1、点击 Android Studio 右下角的 File Encoding UTF-8,在出现提示时点击 GBK;
2、在出现的对话框中点击 Reload -> Reload anyway,此时源代码乱码消失,出现中文;
3、点击 Android Studio 右下角的 File Encoding GBK,在出现提示时点击 UTF-8;
4、在出现的对话框中点击 Convert。
Build一切OK。注意顺序不能出错。
四、导入一个复杂的eclipse工程(有数十个Activity)
导入MyApp:
1、报错:id重复
Error:Application and test application id cannot be the same: both are 'com.lintax.MyApp' for debugAndroidTest
解决:
找到 MyApp/src 下的build.gradle,注释掉里面的testApplicationId:
//testApplicationId "com.lintax.MyApp" //testInstrumentationRunner "android.test.InstrumentationTestRunner"
2、btn.9.png.png,名称不对,删掉一个.png,改为btn.9.png。
3、重复定义(混淆问题)
Proguard returned with error code 1. See console Note: there were 4 duplicate class definitions. Warning:library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
原因:引用的Jar包中含有xmlpull类库,Android系统的类库中已经包含了xmlpull
在MyApp的 proguard-project.txt中,添加两句:
-dontwarn org.xmlpull.v1.XmlPullParser-dontwarn org.xmlpull.v1.XmlSerializer
4、扩展名ico不符合要求:
F:\android\workspase_AS\MyProject\MyApp\src\main\res\drawable-hdpi\loca_icon.icoError:Error: The file name must end with .xml or .png
找到图标,使用画图工具另存为。
5、在清单文件中,有两个图标,合并失败:
Manifest merger failed with multiple errors, see logsError:Execution failed for task ':MyApp:processDebugManifest'.> Manifest merger failed : Attribute application@icon value=(@drawable/logo_ico) from AndroidManifest.xml:53:9-42 is also present at [MyProject:andBase:unspecified] AndroidManifest.xml:18:9-45 value=(@drawable/ic_launcher). Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:50:5-290:19 to override.
原因分析:是我的工程还有个依赖工程,在清单文件里都设置了application@icon,并且使用的图标不一致,导致合并问题。
解决方法:去掉依赖工程中的application@icon设置,即删除掉依赖工程的清单文件中 application 子项下面的这句话:
android:icon="@drawable/ic_launcher"
6、程序包不存在:
错误信息:
Error:(8, 19) 错误: 程序包com.ab.util不存在
尝试1,解决库找不到的问题(失败):
在build.gradle(Module:MyApp) 下加
useLibrary ‘com.ab.util’
尝试2,混淆的问题(成功):
将依赖工程的混淆开关关闭,即不混淆了,ok。
build.gradle(Module:AndBase)
//minifyEnabled true
7、编译通过,运行不起来,报错:
AGPBI: {"kind":"error","text":"warning: Ignoring InnerClasses attribute for an anonymous inner class","sources":[{}]}AGPBI: {"kind":"error","text":"(com.iflytek.sunflower.b) that doesn\u0027t come with an","sources":[{}]}AGPBI: {"kind":"error","text":"associated EnclosingMethod attribute. This class was probably produced by a","sources":[{}]}AGPBI: {"kind":"error","text":"compiler that did not target the modern .class file format. The recommended","sources":[{}]}AGPBI: {"kind":"error","text":"solution is to recompile the class from source, using an up-to-date compiler","sources":[{}]}
解决方式:
在Module的build.gradle配置中添加
defaultConfig { ... ... multiDexEnabled true}
8、加大内存,让编译更快点:
To run dex in process, the Gradle daemon needs a larger heap.It currently has 1024 MB.For faster builds, increase the maximum heap size for the Gradle daemon to at least 1536 MB (based on the dexOptions.javaMaxHeapSize = 1g).To do this set org.gradle.jvmargs=-Xmx1536M in the project gradle.properties.
在工程的根路径下新建 gradle.properties(与这些文件同目录:build.gradle、local.properties、settings.gradle、),添加
org.gradle.jvmargs=-Xmx1536M
9、依赖库重复:
* What went wrong:Execution failed for task ':MyApp:transformClassesWithJarMergingForDevDebug'.> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v13/app/FragmentTabHost$TabInfo.class
我的主module有依赖module,都引用了同一个jar,导致依赖库重复了,注释掉主module中的依赖:
compile files('libs/android-support-v13.jar')
至此,AS终于运行起来MyApp了!
五、打包发布
1、apk存放路径:
debug版的apk存放路径:
workspase\app\Module\build\outputs\apk\***-debug.apk
release版的apk的路径,在生成时指定路径
菜单:Build->Generate Signed APK,有一个APK Destination Folder
2、jar重复指定
生成发布版时报错:
input jar file is specified twice
原因,确实是包含了两次:
dependencies { compile fileTree(include: '*.jar', dir: 'libs')}
里面已经添加过jar包,混淆文件proguard-rules.pro里面又加了句-libraryjars libs/*.jar。
解决方法:
将-libraryjars libs/*.jar 前面用#号注释或者直接删掉即可。
3、versionCode问题:
生成发布版时报错:
Error:(15, 1) A problem occurred evaluating project ':MyApp'.> Could not find method versionCode() for arguments [10] on ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=DefaultApiVersion{mApiLevel=14, mCodename='null'}, targetSdkVersion=DefaultApiVersion{mApiLevel=20, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode=null, versionName=null
问题原因:
defaultConfig { 中 在10外面多了引号: versionCode “10”
这是由于Eclipse中是:android:versionCode=”10”
拷贝到AS中模块的build.gradle中时,忘记去掉那个引号了。应该是
defaultConfig { ...versionCode 10...}
4、名字冲突:
Error:(44, 1) A problem occurred evaluating project ':MyApp'.> BuildType names cannot collide with ProductFlavor names
是名字冲突了,模块的build.gradle中,productFlavors中自定义名字不能和上面buildType中相同,不然Gradle编译会不通过。
5、有时需要同步一下工程文件:
Error:FAILURE: Build failed with an exception.* What went wrong:Task 'generateDevDebugSources' not found in project ':MyApp'.* Try:Run gradle tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
解决方法:
点击一次工具栏上的 “Sync Project With Gradle Files”
或者从菜单进入:Tools->Android->Sync Project With Gradle Files
六、几个常用快捷键
Ctrl+C,Ctrl+V 是不变的,重点关注有变化的:
F4:查看定义
alt + F7 :查看所有引用
shift + F6 :统一修改变量名(非常强大的功能!)
alt + <- :返回上一编辑位置(文件级别)
ctrl + alt + <- :返回上一编辑位置(文件内)
Ctrl+ Shift + F12 :最大化代码编辑区
Ctrl+ Shift + F:在路径中搜索
- Eclipse转Android Studio遇到的问题小结
- eclipse到android studio遇到的问题
- eclipse转android studio常遇到的问题
- Eclipse转Android Studio 项目过程中遇到的问题
- Android eclipse转studio过程中遇到的问题
- Eclipse项目转Android studio项目遇到的问题
- Android Studio导入Eclipse的Android项目问题的小结
- android studio 2.4遇到问题小结
- 从Eclipse迁入到Android Studio遇到的问题
- eclipse工程导入android studio遇到的问题
- Eclipse 项目转移到Android Studio遇到的问题
- android studio 导入eclipse遇到的相关问题
- 迁移eclipse项目至Android studio遇到的问题
- android studio导入Eclipse遇到的问题一
- eclipse转成Android studio过程中遇到的问题
- Eclipse工程导入Android Studio遇到的问题及解决方法
- eclipse 转 android studio (使用及遇到的问题集合)
- Android Studio遇到的问题
- 51nod 1020 逆序排列
- Text I/O
- 高级排序
- 自建网页项目-蚁族财富网-记录20
- Struts2拦截器详解
- Eclipse转Android Studio遇到的问题小结
- 时间
- Java之主函数——main函数
- poj3292 素数筛选
- mybatis和hibernate
- 用友uap开发nc65按钮配置
- win10 64位安装绿色版mysql-5.7.16-winx64
- Python中元组,列表,字典的区别
- 理解异方差