摘要:最先尝试的方法是从eclipse导出项目时选择Generate Gradle build files,然后在Android Studio导入,需要更新gradle的版本,保留了原始的目录结构,后来在更新gradle时遇到了很多问题,也记不清了,后来使用的是直接将项目导入到Android Studio,由Android Studio来重新构造目录结构.1
在导入工程后,会在第一时间出现import summary
Android Studio会在这一步忽略掉不属于Android标准目录的文件,比如用户自定义文件夹,混淆文件,所以必须要检查一下是否有重要文件在这一步被Android Studio忽略掉
在Android Studio中你可以添加在线的jar或者库,所以常见的android-support-v4.jar兼容包都会转化com.android.support:support-v4:19.1.0,当然由于兼容包多样化,在这一步转换可能会遇到一些问题,以后会提到
在Android Studio对9-patch的检查非常严格,不允许存在bad patches,也不允许不是9-patch的图片命名为9.png
9-patch image /Users/liuende/Documents/test/app/src/main/res/drawable-mdpi/btn_style_zero_presse.9.png malformed.
AAPT: Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT: Found at pixel #6 along top edge.
aaptOptions{
cruncherEnabled=false
useNewCruncher=false
}
Error:(1, 1) 错误: 非法字符: '\ufeff'
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符,即BOM,但是在很多代码中不会忽略,导致错误
注:Java在读取Unicode文件的时候,会统一把BOM变成“\uFEFF”.2
BOM —— Byte Order Mark,中文名译作“字节顺序标记”。
UTF-8 不需要 BOM 来表明字节顺序,但可以用 BOM 来表明编码方式,其中字符 “Zero Width No-Break Space” 的 UTF-8 编码是 EF BB BF。所以如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8编码了。
对于UTF-16或者更高,字符U+FEFF如果出现在字节流的开头,则用来标识该字节流的字节序,是高位在前还是低位在前。
* Eclipse可以自动把UTF-8+BOM文件转为普通的UTF-8文件,但AndroidStudio需要手动修改*
利用Android Studio将文件编码改为GBK,再转为UTF-8即可以解决,操作位置在Android Studio右下角
利用Android Studio自带的终端打开问题文件,然后使用vim打开文件,在命令模式下set nobomb
Error:(6, 4) 错误: 编码UTF-8的不可映射字符
文件原先是使用GBK或者其他非UTF-8的编码格式,在导入Android Studio时以UTF-8编码格式加载所以产生乱码
先将文件以GBK的格式加载,再转化为utf-8
Error:(44, 28) 错误: 程序包javax.imageio.stream不存在
目录jre下的jar包并不会默认引用到项目中
注:compile 意味着你需要编译和运行应用程序的JAR。对于一个web应用程序,例如,JAR将被放置在web - inf / lib目录中。provided意味着你需要为编译JAR提供,但在运行时环境已经提供,对于一个web应用程序,这意味着JAR文件将不会被放置到web - inf / lib目录中
provided files('/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/rt.jar')
注:Android Lint是SDK Tools 16 (ADT 16)之后才引入的工具,通过它对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题
Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.
Android Studio在打包成release版时,默认会对代码进行扫描和检查,发现潜在的代码,而由于eclipse和Android Studio的代码检查不同,导致很多在eclipse警告的代码,在打包时直接报错
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
org.gradle.jvmargs=-Xmx1536M
org.gradle.daemon=true
org.gradle.parallel=true