【Android学习】Android Studio学习

1,安装

1)安装Android Studio:下载地址
2)配置JDK、SDK
3)问题:building ‘DM’ Gradle project info
问题
问题原因是Google被墙了Gradle下载太慢。
解决方案:
①关闭Android Studio;
②进入目录C:\Users\L.gradle\wrapper\dists;(L为计算机名)
③删除gradle-4.1-all文件夹;
④然后打开Android Studio,卡在gradle问题之后,再次关闭;
⑤下载gradle-4.1-all.zip文件;点击下载
⑥打开gradle-4.1-all文件夹,打开随机码文件夹,然后将gradle-4.1-all.zip放入;
⑦重启Android Studio即可。

2,常用快捷键

【AIt】 + 【回车】 导入包,自动修正
【Ctrl】+【Alt】+【L】 格式化代码
【Alt】+【Insert】生成代码,如set\get方法
【Ctrl】+【R】替换文本
【Ctrl】+【F】
【Ctrl】+【Shift】+【Space】自动补全代码
【Ctrl】+【Space】代码提示
【Ctrl】+【鼠标点击类名】 引用类的地方
【Ctrl】+【Shift】+【上下键】代码换行
【Ctrl】+【P】方法参数提示
【F6】 + 【Shift】 重构-重命名
【Ctrl】+【Y】删除行
【Ctrl】+【D】复制行
【Ctrl】+【[】跳转到大括号首尾
【Ctrl】+【Shift】+【Backspace】跳转到上次编辑的地方
【Ctrl】+【E】最近更改的代码
【Ctrl】+【N】查找类
【Ctrl】+【Shift】+【N】查找文件
【Ctrl】+【Alt】+【O】优化导入的类和包
【F2】 跳转到错误处
【Shift 双击】查找类
【Ctrl+H】 当前类目录(可查看继承)

清理缓存: Build --> clean project
(有时找不到R文件、 导入的资源、布局 、 jar包 等 . 可能是studio 缓存造成的)

3,DDMS工具使用

1)DDMS(Dalvik Debug Monitor Service)

DDMS是 Android 开发环境中的Dalvik虚拟机调试监控服务。可以进行的操作有:为测试设备截屏,查看特定行程中正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等,功能非常强大。

2)使用步骤

①Tools -> Android -> Android Device Monitor
②界面介绍
界面图片
③AS查看SQLIte数据库文件
用模拟器测试,在Eclipse中打开DDMS ——>File Explorer——>data——>data——>对应包下——>databases就能看到数据库文件,导出到桌面,用SQLite Expert查看即可。

4,设置外观

1)设置字体大小

File --> Settings --> Editor --> Colors&Fonts --> Font
16sp

2)设置主题

File --> Settings --> Appearance
深色背景

5,导出APK

1)概念

打包分debug版和release包。
release版的apk会比debug版的小,release版的还会进行混淆和用自己的keystore签名,以防止别人反编译后重新打包替换你的应用。
可以用AS自带的签名,也可以通过Gradle签名。

2)步骤

①Build -> Generate Signed APK
界面介绍
②点击OK之后,jks文件生成了。
界面
③选择版本(release),其它全部勾选即可。

3)安装到手机

adb命令。
cmd或AS中terminal命令
cmd
terminal中也可以用相同命令实现,需要注意的是配置完后,AS要重启才可以使用adb命令:
terminal命令

6,项目搭建

1)java分包

对于大型项目,分模块、每个模块下按功能分包。

2)layout分包

分包图片

7,单元测试

Android的单元测试主要是对数据的测试,尤其是对于mvp模式下,直接调用方法即可。
并不能对界面进行测试。

1)过程

①目录

如果不是系统默认目录,需要在grandle中配置目录。

sourceSets{
    test{
        java
        res
    }
}

系统默认单元测试目录:
和main同级,test->java->包名->类

②测试类

注意方法要标注Test。然后对方法名右击运行即可。

public class Junit {
    @Test
    public void test(){
        System.out.println("junit");
    }
}

8,SVN配置忽略文件

在未关联SVN之前,添加忽略文件,让不需要的文件不被提交。

1)配置忽略

方案①配置路径 :
File --> Settings --> Version Control --> Ignored Files --> +或-
通过* ?等通配符来配置。

1、.idea 文件夹,此文件夹是用来保存开发工具的设置信息。
2、 .gradle 文件夹,此文件夹是用来保存gradle的依赖信息。
3、 所有的 build 文件夹,build文件夹是用来保存编译后的文件目录。
4、 所有的 .iml 文件,是用来保存开发工具信息。
5、local.properties 文件,是用来保存项目依赖信息。
6、gradle文件夹
7、其它文件(根据需要选择忽略),如:
gradlew
gradlew.bat
*.apk

配置结果如下:
忽略目录
方案②在项目的.idea/workspace.xml的文件里设置
<component name="ChangeListManager">下添加如下内如:

<component name="ChangeListManager">    
        ...    
    <ignored path=".gradle/" />     
    <ignored path=".idea/" />     
    <ignored path="gradle/" />   
    <ignored path="xx/build/" />    
    <ignored path="gradlew" />    
    <ignored path="gradlew.bat" />    
    <ignored mask="*.iml" />     
    <ignored path="local.properties" />    
    <ignored path="build/" />   
    <ignored mask="*.apk" />  
</component> 

2)配置过程

①Android Studio配置SVN
File–>settting–>Version Control–>SubVersion–>General–>打钩:Use command line client并添加svn安装目录中的svn.exe
②添加忽略文件
③项目关联SVN
VCS–>Import Version Control–>Share Project(Subversion)
(此时本地project关联到了svn仓库,但是并没有提交代码)
④关联完成后,提交代码

3)取消关联

注意:配置忽略文件必须在Share到代码库之前进行,如果在Commit后配置,则无效。
如果配置错误需要取消SVN关联,再重新关联SVN。
取消关联:
删除.idea -> vcs.xml 中<mapping directory="" vcs="svn" />这句话,删除文件夹中的.svn文件夹

9,AS中各文件介绍

1)gradle项目基础配置文件

①build.gradle

顶层的build.gradle文件的配置最终会被应用到所有项目中。它典型的配置如下:

buildscript {//定义了 Android 编译工具的类路径。
    repositories {
        jcenter()//jCenter是一个著名的 Maven 仓库。
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

allprojects{//定义的属性会被应用到所有 moudle 中,但是为了保证每个项目的独立性,我们一般不会在这里面操作太多共有的东西。
    repositories{
        jcenter()
    }
}

②settings.gradle

这个 setting 文件定义了哪些module 应该被加入到编译过程,对于单个module 的项目可以不用需要这个文件,但是对于 multimodule 的项目我们就需要这个文件,否则gradle 不知道要加载哪些项目。这个文件的代码在初始化阶段就会被执行。

③app->build.gradle

每个项目单独的 build.gradle。针对每个moudle 的配置,如果这里的定义的选项和顶层build.gradle定义的相同,后者会被覆盖。典型的 配置内容如下:

apply plugin: 'com.android.application'//第一行代码应用了Android 程序的gradle插件,作为Android 的应用程序,这一步是必须的,因为plugin中提供了Android 编译、测试、打包等等的所有task。

android {//这是编译文件中最大的代码块,关于android 的所有特殊配置都在这里,这就是又我们前面的声明的 plugin 提供的。
    compileSdkVersion 26
    defaultConfig {//就是程序的默认配置,注意,如果在AndroidMainfest.xml里面定义了与这里相同的属性,会以这里的为主。
        applicationId "com.luo.test"//包名:com.公司名.项目名称 在我们曾经定义的AndroidManifest.xml中,那里定义的包名有两个用途:一个是作为程序的唯一识别ID,防止在同一手机装两个一样的程序;另一个就是作为我们R资源类的包名。在以前我们修改这个ID会导致所有用引用R资源类的地方都要修改。但是现在我们如果修改applicationId只会修改当前程序的ID,而不会去修改源码中资源文件的引用。
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {//定义了编译类型,针对每个类型我们可以有不同的编译配置,不同的编译配置对应的有不同的编译命令。默认的有debug、release 的类型。
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories {
    maven { url "https://jitpack.io" }
}
dependencies {//是属于gradle 的依赖配置。它定义了当前项目需要依赖的其他库。
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

2)Gradle Wrapper

再gradle文件下又一个wrapper文件夹。
Gradle Wrapper包含一些脚本文件和针对不同系统下面的运行文件。wrapper 有版本区分,但是并不需要你手动去下载,当你运行脚本的时候,如果本地没有会自动下载对应版本文件。
在不同操作系统下面执行的脚本不同,在 Mac 系统下执行./gradlew …,在windows 下执行gradle.bat进行编译。

如果你是直接从eclipse 中的项目转换过来的,程序并不会自动创建wrapper脚本,我们需要手动创建。在命令行输入以下命令即可。

gradle wrapper --gradle-version 2.4

它会创建如下目录:

myapp/
|--gradlew
|--gradlew.bat
|--gradle/wrapper/
   |--gradle-wrapper.jar
   |--gradle-wrapper.properties

3)项目结构

项目结构

src

存放java源代码

gen

根目录。存放系统自动生成的配置文件,如R文件、类库、jar包.
R.java作用:
开发工具自动产生,存放各种资源id,方便找到对应资源。同时,未被R.java用到的资源,不会编译进软件。

assets

存放资源文件(网页、图片、音频)。
不会自动占用生成的apk文件大小,被应用的时候才生成。
assets目录中的文件就需要借助AssetManager去访问。

AssetManager a = getAssets()  ;
//fileName为assets目录下需要访问的文件的名称
InputStream is = a.open(fileName) ;
//然后就可以通过输入流来读取fileName的内容了

bin

自动生成的编译后的文件。

libs

第三方jar包
###src/jniLibs
存放so文件。

res

图片、布局文件、菜单布局文件、values文件夹:字符串、数字、颜色、样式等。
AndroidManifest.xml:清单文件,配置应用相关信息:包名、权限、组件。
系统会为res目录下的所有资源生成相应的资源ID。

asset目录与res目录的区别

res 目录下面有很多文件,例如 drawable,mipmap,raw 等。res 下面除了 raw 文件不会被压缩外,其余文件都会被压缩。同时 res目录下的文件可以通过R 文件访问。Asset 也是用来存储资源,但是 asset 文件内容只能通过路径或者 AssetManager 读取。

raw

在res目录下。
res/raw目录下的文件,有些文档说会编译为二进制,有些文档说不会。
Android不能直接打开res raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。

InputStream is = getResources().openRawResource(R.id.fileNameID) ;
//R.id.fileNameID为需要访问的文件对应的资源ID.接着我们就可以通过输入流来读取相应文件的内容了。
asset目录和raw目录区别
res/raw和assets的相同点

两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。

res/raw和assets的不同点

1)res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即 R.raw.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要路径或AssetManager类。
2)res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

defalut.properties

存放项目环境信息。

4)Android SDK-tools目录下的常用工具

①android

②apkbuilder

用于打包apk

③ddms(Dalvik Debug Monitor Service,Dalvik 调试监视器服务)

这个工具集成了Dalvik(为Android 平台定制的虚拟机(VM)),能够让你在模拟器或者设备上管理进程并协助调试。
DDMS是一个程序执行查看器,可以看见线程和堆栈等信息。

功能:
为测试设备截屏;
选择某个特定的进程来调试,产生跟踪数据,观察堆(heap)和线程信息;
杀死进程;
Logcat。Log信息分为5个级别:Log.v(VERBOSE)详细信息、Log.d(DEBUG)除错讯息、Log.i(INFO)通知讯息、Log.w(WARN)警告讯息、Log.e(ERROR)错误讯息
广播状态信息;
模拟电话呼叫;
接收SMS;
虚拟地理坐标等。

工作:
DDMS将搭建起IDE与测试终端(Emulator或者connected device)的链接,他们应用到测试终端的连接情况,当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。

④draw9patch

Draw 9-patch工具允许你使用所见即所得(WYSIWYG)的编辑器轻松地创建NinePatch图形。它也可以预览经过拉伸的图像,高亮显示内容区域。

⑤emulator(Android模拟器)

AVD Manager(安卓虚拟设备管理器):
可以配置:屏幕分辨率(Skin)、缓存区大小(RAM)、SD卡支持(SD Card Support)、键盘支持。
不能 配置蓝牙支持。

⑥mksdcard

帮助你创建磁盘映像(disk image),你可以在模拟器环境下使用磁盘映像来模拟外部存储卡(例如SD 卡)。

⑦sqlite3

这个工具能够让你方便地访问SQLite 数据文件。这些数据文件是由Android 应用程序创建并使用的。
###⑧aidl(Android Interface Description Language,Android接口描述语言)
可以让你生成进程间的接口的代码,诸如service可能使用的接口。
aidl的文件的内容类似java代码;创建一个Service(服务),在服务的onBind(Intent intent)方法中返回实现了aidl接口的对象;aidl对应的接口的方法前面不能加访问权限修饰符。

AIDL支持的数据类型有:
i>不需要import声明的简单Java编程语言类型:int boolean等。
ii>String,CharSequence不需要特殊声明
iii>List,Map和Parcelables类型
(这些类型内所包含的数据成员也只能是简单数据类型,String等其他支持类型。

⑨TraceView

程序性能分析器。
是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot。TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。

5)platform-tools目录

常用工具有:

①aapt

②adb

③dx

④aidl

10,AS Terminal命令

如果输入命令,如gradle,出现:‘gradle’ 不是内部或外部命令,也不是可运行的程序,则需要再Windows系统环境变量中配置相应工具的路径。
AndroidStudio Terminal 默认使用的 Shell 是Windows系统的 cmd.exe,当然如果你并不喜欢使用 cmd.exe 可以在AndroidStudio 的 Setting 中去修改,修改方法是:

Setting—->Tools—–>Terminal—–>Shell Path。

1)ADB配置

配置环境变量
环境变量
环境变量
应用:如上文所说的,将apk直接安装到手机。

2)Gradle配置

Terminal或cmd中使用gradle命令行打包apk或者执行gradle命令会提示:“XXX”不是内部或外部命令,也不是可运行程序或批处理文件,则需要在环境变量中配置Gradle路径。有两条配置:

属性名为:“GRADLE_HOME”,属性值为:"D:\Android Studio\gradle\gradle-4.1"。
添加path:D:\Android Studio\gradle\gradle-4.1\bin

AS需重启才能生效。输入gradle即可知道配置是否成功。

3)Grandle命令

./gradlew -v 版本号
./gradlew clean 清除9GAG/app目录下的build文件夹
./gradlew build 检查依赖并编译打包(把 debug、release 环境的包都打出来,如果正式发布只需要打 Release 的包,使用命令 assemble)
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包
gradle wrapper --gradle-version 2.4  切换gradle版本

4)Git命令

where git  查看安装目录
git config --list  查看已经配置的git参数
git clone https://git.oschina.net/Tocy/SampleCode.git  克隆远程仓库

5)ADB命令

//关闭adb的命令:
adb kill-server
//开启adb的命令:
adb start-server
2014/12/9 星期二 开学典礼 2014/12/10 星期三 html 2014/12/11 星期四 css/JAVAScript基础 2014/12/12 星期五 2014/12/13 星期六 javaScript基础&DOM 2014/12/14 星期日 javaScript基础&DOM 2014/12/15 星期一 2014/12/16 星期二 DOM/xml基础 2014/12/17 星期三 xml&dom_sax&dom4j编程 2014/12/18 星期四 2014/12/19 星期五 tomcat与web程序结构与Http协议 2014/12/20 星期六 java web之servlet 2014/12/21 星期日 java web之request/respone 2014/12/22 星期一 2014/12/23 星期二 Cookie/session 2014/12/24 星期三 jsp/EL表达式/EL函数 2014/12/25 星期四 2014/12/26 星期五 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例 2014/12/27 星期六 编码实战演练(指导老师:) 2014/12/28 星期日 mysql数据库 2014/12/29 星期一 2014/12/30 星期二 jdbc 2014/12/31 星期三 jdbc 2015/1/1 星期四 元旦放假 2015/1/2 星期五 jdbc/DBUtil使用/jdbc案例 2015/1/3 星期六 jdbc分页/监听器 2015/1/4 星期日 2015/1/5 星期一 2015/1/6 星期二 javaWeb之过滤器 2015/1/7 星期三 javaWeb之文件上传和下载 2015/1/8 星期四 2015/1/9 星期五 框架学习之java基础加强 2015/1/10 星期六 巩固知识之项目实战(指导老师:) 2015/1/11 星期日 2015/1/12 星期一 巩固知识之项目实战(指导老师:) 2015/1/13 星期二 巩固知识之项目实战(指导老师:) 2015/1/14 星期三 巩固知识之项目实战(指导老师:) 2015/1/15 星期四 2015/1/16 星期五 Android应用开发-快速入门 2015/1/17 星期六 Android应用开发-数据存储和界面展现 2015/1/18 星期日 Android应用开发-数据存储和界面展现 2015/1/19 星期一 2015/1/20 星期二 Android应用开发-网络编程 2015/1/21 星期三 Android应用开发-网络编程 2015/1/22 星期四 2015/1/23 星期五 Android应用开发-页面跳转和数据传递 2015/1/24 星期六 Android应用开发-广播和服务 2015/1/25 星期日 2015/1/26 星期一 Android应用开发-广播和服务 2015/1/27 星期二 Android应用开发-多媒体编程 2015/1/28 星期三 2015/1/29 星期四 Android应用开发-内容提供者 2015/1/30 星期五 Android应用开发-新特性和知识点回顾 2015/1/31 星期六 2015/2/1 星期日 Android项目开发基础—C语言 2015/2/2 星期一 Android项目开发基础—JNI与底层调用 2015/2/3 星期二 Android项目开发基础—JNI与底层调用 2015/2/4 星期三 2015/2/5 星期四 Android应用开发-代码版本管理和实战 2015/2/6 星期五 android案例与项目—手机安全卫士 2015/2/7 星期六 android案例与项目—手机安全卫士 2015/2/8 星期日 2015/2/9 星期一 android案例与项目—手机安全卫士 2015/2/10 星期二 android案例与项目—手机安全卫士 2015/2/11 星期三 android案例与项目—手机安全卫士练习 2015/2/12-26 星期四 春节放假 2015/2/27 星期五 android案例与项目—手机安全卫士 2015/2/28 星期六 android案例与项目—手机安全卫士 2015/3/1 星期日 2015/3/2 星期一 android案例与项目—手机安全卫士练习 2015/3/3 星期二 android案例与项目—手机安全卫士 2015/3/4 星期三 android案例与项目—手机安全卫士练习 2015/3/5 星期四 2015/3/6 星期五 android案例与项目—手机安全卫士 201
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值