一、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)

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_android

B、安装Gradle

 下载地址:

--》http://services.gradle.org/distributions

眼下最新的版本号为 gradle-2.5-all (建议使用gradle-2.4-all.zip)

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_android_02

 

2.基本配置

1、配置Android Studio(简单的安装过程请參见)

安装完毕之后进入Setting 完毕SDK的关联配置(Setting中能够进行IDE的全部配置。详细配置方法见https://www.jetbrains.com/idea/help/android.html)

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Gradle_03

 

假设电脑硬件配置比較高建议对Android Studio进行相关的环境參数配置,这样执行会比較的流畅。

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_android_04

 

2、配置Gradle

下载完毕之后选择目标解压位置(随意无中文路径)进行解压。而且在path中改动环境变量 : X:\XX\gradle-2.4\bin,注意 : Android Studio必须使用gradle1.9以上版本号 , 才干够使用, 否则会提示报错。

測试gradle , 在cmd(管理员)模式下, 输入: gradle -version 就可以:

 

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Android_05

三、Android Studio 使用相关

1.新建项目project

完毕环境配置之后启动Android Studio

(假设已经构建过项目的老用户须要在 File 选项下

close project 关闭当前的project )

 

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Gradle_06

进入主界面之后新建

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Gradle_07

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Gradle_08

相应的编辑框分别为:project名(包名后缀)、公司名(包名前缀)、project文件夹

 

进行新建的项目内型进行选择,Phone、wear、TV...以及对应的SDk版本号

 

 

 

2.导入Studio项目project

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Android_09

点击 open an existing Android Studio project 进行Studio项目的导入,已经构建过的项目会自己主动关联Android Studio的图标。

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Android_10

3.导入Eclipse项目project

从Eclipse中导出

将你的ADT插件版本号升级到22.0以上。

在Eclipse中。选择File-->Export。

在弹出的导出窗体中,打开Android的目录,选择“Generate Gradle Build Files”。

选中你想要导入到Android Studio中的项目。Finish。

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Android_11

PS:导出的项目将会和原来的项目在同一文件夹。覆盖原来的同一时候。会新增一个叫build.gradle的文件,导入Android Studio时将首先读取这个文件。

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Android_12

导入到Android Studio

在Android Studio 中,首先关掉你当前的打开的项目。

在欢迎界面,点击Import Project(注:也是能够直接在菜单选择Open project)

选中你在Eclipse中导出的项目,展开文件夹,点击build.gradle文件,然后OK

在之后的弹出对话框中,会要求你选择Gradle的配置,选中Use gradle wrapper.(注:也能够自己定义你本机装的Gradle,这样构建project会比較的高速)。

        

        

PS:假设没有Grade build文件。也是能够将普通的安卓项目导入到Android Studio中。它会用现有的Ant build.但为了更好地使用之后的功能和充分使用构建变量,还是强烈地建议先从ADT插件中生成Gradle文件再导入Android Studio

4.项目相关构建build.gradle配置

1.根文件夹的./build.gradle

2.app Moudle下的./app/build.gradle

 

 

android在project里面moudle模块怎么创建 如何区分android studio中的project和module?_Android_13

5.

6.Android Studio引用aar

aar

何为aar?大家都知道jar文件把。假设你有一个Android Library项目。能够非常easy的导出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能够替换成详细的版本号号,这里是获取server上的最新版本号。

 

去掉反复依赖

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

文件红色:表示文件没有加入到server

绿色:表示没有更新新的改动到server

普通黑色:表示和server同步

 

单个文件签入签出操作:右键subversion

Add,加入到server

Commit:提交

Update:更新,获取新版本号

Integrate:合并

注意:SVN和VSS不同签入前假设文件被其它人改动须要比較版本号怎样其它改动有效须要合并签入




未完..待续