一、Android studio 基本简介
1.Android studio和Eclipse的区别:
1、Studio中有Project和Module的概念,Studio中一个窗口只能有一个项目,即Project,代表一个workspace,但是一个Project可以包含多个Module,比如你项目引用的Android Library, Java Library等,这些都可以看做是一个Module。
2、目录中将java代码和资源文件(图片、布局文件等)全部归结为src,在src目录下有一个main的分组,同时划分出java和res两个文件夹,java文件夹则相当于Eclipse下的src文件夹,res目录结构则一样.
2.gradle构建工具简介
1、Gradle是一种依赖管理工具,Gradle的核心是一个丰富的可扩展的基于Groovy的领域特定语言(DSL)。Gradle通过提供说明性语言元素将说明性构建推到下一层,您可以组装。这些元素也提供build-by-convention支持Java、Groovy、OSGi、Web和Scala项目。更多,这个说明性语言是可扩展的。添加自己的新语言元素或提高现有的,从而提供简洁、易于维护和理解构建。
二、Android Studio安装配置
1.基本安装
A、安装Android Studio
安装过程和一般安装过程一致,下载地址:
--》http://developer.android.com/sdk/index.html(需Fan—Qiang)
--》http://www.android-studio.org/index.php/download
目前最新的版本为 V-1.3(141.1980579)
B、安装Gradle
下载地址:
--》http://services.gradle.org/distributions
目前最新的版本为 gradle-2.5-all (建议使用gradle-2.4-all.zip)
2.基本配置
1、配置Android Studio(简单的安装过程请参见)
安装完成之后进入Setting 完成SDK的关联配置(Setting中可以进行IDE的所有配置,具体配置方法见https://www.jetbrains.com/idea/help/android.html)
如果电脑硬件配置比较高建议对Android Studio进行相关的环境参数配置,这样运行会比较的流畅。
2、配置Gradle
下载完成之后选择目标解压位置(任意无中文路径)进行解压,并且在path中修改环境变量 : X:\XX\gradle-2.4\bin,注意 : Android Studio必须使用gradle1.9以上版本 , 才可以使用, 否则会提示报错。
测试gradle , 在cmd(管理员)模式下, 输入: gradle -version 即可:
三、Android Studio 使用相关
1.新建项目工程
完成环境配置之后启动Android Studio
(如果已经构建过项目的老用户需要在 File 选项下
close project 关闭当前的project )
进入主界面之后新建
对应的编辑框分别为:工程名(包名后缀)、公司名(包名前缀)、工程目录
进行新建的项目内型进行选择,Phone、wear、TV...以及相应的SDk版本
2.导入Studio项目工程
点击 open an existing Android Studio project 进行Studio项目的导入,已经构建过的项目会自动关联Android Studio的图标。
3.导入Eclipse项目工程
从Eclipse中导出
将你的ADT插件版本升级到22.0以上。
在Eclipse中,选择File-->Export。
在弹出的导出窗口中,打开Android的文件夹,选择“Generate Gradle Build Files”。
选中你想要导入到Android Studio中的项目,Finish。
PS:导出的项目将会和原来的项目在同一目录,覆盖原来的同时,会新增一个叫build.gradle的文件,导入Android Studio时将首先读取这个文件。
导入到Android Studio
在Android Studio 中,首先关掉你当前的打开的项目。
在欢迎界面,点击Import Project(注:也是可以直接在菜单选择Open project)
选中你在Eclipse中导出的项目,展开目录,点击build.gradle文件,然后OK
在之后的弹出对话框中,会要求你选择Gradle的配置,选中Use gradle wrapper.(注:也可以自定义你本机装的Gradle,这样构建工程会比较的快速)。
PS:如果没有Grade build文件,也是可以将普通的安卓项目导入到Android Studio中,它会用现有的Ant build.但为了更好地使用之后的功能和充分使用构建变量,还是强烈地建议先从ADT插件中生成Gradle文件再导入Android Studio
4.项目相关构建build.gradle配置
1.根目录的./build.gradle
2.app Moudle下的./app/build.gradle
5.
6.Android Studio引用aar
aar
何为aar?大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。
导出aar
首先Android Library项目的gradle脚本只需要在开头声明
apply plugin: 'com.android.library'
之后就和导出apk文件一样的方法,执行 ./gradlew assembleRelease,然后就可以在 build/outputs/aar 文件夹里生成aar文件
① 引用本地的aar
生成aar之后下一步就是如何引用本地的aar文件?本地的aar文件并没有像引用jar文件这么简单,官方也没有提供解决方案。好在国外的一些前辈总结出了方法,下面就以test.aar文件为例来详述下方法
1、把aar文件放在一个文件目录内,比如就放在libs目录内
2、在app的build.gradle文件添加如下内容
repositories {
flatDir {
dirs 'libs' //this way we can find the .aar file in libs folder
}
}
3、之后在其他项目中添加一句gradle依赖便方便的引用了该library
dependencies {
compile(name:'test', ext:'aar')
}
② 引用远程仓库的aar
这里以maven为例,当然也可以使用其他类型的仓库,例如 Ivy。只需要在jar包引用方式后面添加一个@aar就可以了。
compile 'com.alibaba:fastjson:latest.integration@aar'
包依赖(jar)
compile group: 'com.alibaba', module: 'fastjson', version: 'latest.integration'
可以简写成
compile 'com.alibaba:fastjson:latest.integration'
latest.integration可以替换成具体的版本号,这里是获取服务器上的最新版本。
去掉重复依赖
compile 'com.alibaba.fastjson.latest.integration' {
exclude module: 'annotations', group: 'com.google.android'
}
7.加速Android Studio/Gradle构建
开启gradle单独的守护进程
在下面的目录下面创建gradle.properties文件:
· /home/<username>/.gradle/ (Linux)
· /Users/<username>/.gradle/ (Mac)
· C:\Users\<username>\.gradle (Windows)
并在文件中增加:
org.gradle.daemon=true
同时修改项目下的gradle.properties文件也可以优化:
# Project-wide Gradle settings.# IDE (e.g. Android Studio) users:# Settings specified in this file will override any Gradle settings# configured through the IDE.# For more details on how to configure your build environment visit# http://www.gradle.org/docs/current/userguide/build_environment.html# The Gradle daemon aims to improve the startup and execution time of Gradle.# When set to true the Gradle daemon is to run the build.# TODO: disable daemon on CI, since builds should be clean and reliable on serversorg.gradle.daemon=true# Specifies the JVM arguments used for the daemon process.# The setting is particularly useful for tweaking memory settings.# Default value: -Xmx10248m -XX:MaxPermSize=256morg.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8# When configured, Gradle will run in incubating parallel mode.# This option should only be used with decoupled projects. More details, visit# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projectsorg.gradle.parallel=true# Enables new incubating mode that makes Gradle selective when configuring projects. # Only relevant projects are configured which results in faster builds for large multi-projects.# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demandorg.gradle.configureondemand=true
同时上面的这些参数也可以配置到前面的用户目录下的gradle.properties文件里,那样就不是针对一个项目生效,而是针对所有项目生效。
上面的配置文件主要就是做, 增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。
修改android studio配置
在android studio的配置中,开启offline模式,以及修改配置。主要是在这个地方配置的只会在ide构建的时候生效,命令行构建不会生效。
命令行构建
基于上面的配置,命令行构建时在命令后面加上这个参数即可 --daemon --parallel --offline。
三、Android Studio 使用常见错误
//设置脚本的运行环境
buildscript {
支持java 依赖库管理(maven/ivy),用于项目的依赖。
repositories {
mavenCentral()
}
依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
声明构建的项目类型,这里当然是android了
apply plugin: 'android'
设置编译android项目的参数
android {
compileSdkVersion 17
buildToolsVersion "17"
defaultConfig {
minSdkVersion 8
targetSdkVersion 17
}
默认配置
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
测试所在的路径,这里假设是tests文件夹,没有可以不写这一行
instrumentTest.setRoot('tests')
}
这个是解决lint报错的代码
lintOptions {
abortOnError false
}
/**
签名设置
*/
signingConfigs {
myConfigs {
签名文件地址")
keyAlias "..."
keyPassword "..."
storePassword "..."
}
}
/**
混淆设置
*/
buildTypes {
release {
signingConfig signingConfigs.myConfigs
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/**
渠道打包(不同包名)
*/
productFlavors {
qqqq {
包名'
}
hhhhh {
包名'
}
}
}
/**
文件的导入
*/
task copyNativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'
}
tasks.withType(Compile) {
options.encoding = "UTF-8"
}
tasks.withType(Compile) {
compileTask -> compileTask.dependsOn copyNativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = [new File(buildDir, 'lib')]
}
依赖库
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
AndroidStudio自定义属性xmlns无法识别问题解决
in Gradle projects,always use http://schemas.android.com/apk/res-auto
正如in Gradle projects,always usehttp://schemas.android.com/apk/res-auto for custom attributes所说的
将eclipse中
http://schemas.android.com/apk/res/com.xxx.xxx
换成
http://schemas.android.com/apk/res-auto
这样Gradle就会自动查找自定属性的
Android Studio svn的使用
单文件 签入当文件,右键subversion Add
文件红色:表示文件没有添加到服务器
绿色:表示没有更新新的修改到服务器
普通黑色:表示和服务器同步
单个文件签入签出操作:右键subversion
Add,添加到服务器
Commit:提交
Update:更新,获取新版本
Integrate:合并
注意:SVN和VSS不同签入前如果文件被其他人修改需要比较版本如何其他修改有效需要合并签入
未完..待续