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即可。
【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 缓存造成的)
DDMS是 Android 开发环境中的Dalvik虚拟机调试监控服务。可以进行的操作有:为测试设备截屏,查看特定行程中正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等,功能非常强大。
①Tools -> Android -> Android Device Monitor
②界面介绍
③AS查看SQLIte数据库文件
用模拟器测试,在Eclipse中打开DDMS ——>File Explorer——>data——>data——>对应包下——>databases就能看到数据库文件,导出到桌面,用SQLite Expert查看即可。
File --> Settings --> Editor --> Colors&Fonts --> Font
File --> Settings --> Appearance
打包分debug版和release包。
release版的apk会比debug版的小,release版的还会进行混淆和用自己的keystore签名,以防止别人反编译后重新打包替换你的应用。
可以用AS自带的签名,也可以通过Gradle签名。
①Build -> Generate Signed APK
②点击OK之后,jks文件生成了。
③选择版本(release),其它全部勾选即可。
adb命令。
cmd或AS中terminal命令
terminal中也可以用相同命令实现,需要注意的是配置完后,AS要重启才可以使用adb命令:
对于大型项目,分模块、每个模块下按功能分包。
Android的单元测试主要是对数据的测试,尤其是对于mvp模式下,直接调用方法即可。
并不能对界面进行测试。
如果不是系统默认目录,需要在grandle中配置目录。
sourceSets{
test{
java
res
}
}
系统默认单元测试目录:
和main同级,test->java->包名->类
注意方法要标注Test。然后对方法名右击运行即可。
public class Junit {
@Test
public void test(){
System.out.println("junit");
}
}
在未关联SVN之前,添加忽略文件,让不需要的文件不被提交。
方案①配置路径 :
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的文件里设置
在
下添加如下内如:
...
①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仓库,但是并没有提交代码)
④关联完成后,提交代码
注意:配置忽略文件必须在Share到代码库之前进行,如果在Commit后配置,则无效。
如果配置错误需要取消SVN关联,再重新关联SVN。
取消关联:
删除.idea -> vcs.xml 中
这句话,删除文件夹中的.svn文件夹
顶层的build.gradle文件的配置最终会被应用到所有项目中。它典型的配置如下:
buildscript {//定义了 Android 编译工具的类路径。
repositories {
jcenter()//jCenter是一个著名的 Maven 仓库。
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects{//定义的属性会被应用到所有 moudle 中,但是为了保证每个项目的独立性,我们一般不会在这里面操作太多共有的东西。
repositories{
jcenter()
}
}
这个 setting 文件定义了哪些module 应该被加入到编译过程,对于单个module 的项目可以不用需要这个文件,但是对于 multimodule 的项目我们就需要这个文件,否则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'
}
再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
存放java源代码
根目录。存放系统自动生成的配置文件,如R文件、类库、jar包.
R.java作用:
开发工具自动产生,存放各种资源id,方便找到对应资源。同时,未被R.java用到的资源,不会编译进软件。
存放资源文件(网页、图片、音频)。
不会自动占用生成的apk文件大小,被应用的时候才生成。
assets目录中的文件就需要借助AssetManager去访问。
AssetManager a = getAssets() ;
//fileName为assets目录下需要访问的文件的名称
InputStream is = a.open(fileName) ;
//然后就可以通过输入流来读取fileName的内容了
自动生成的编译后的文件。
第三方jar包
###src/jniLibs
存放so文件。
图片、布局文件、菜单布局文件、values文件夹:字符串、数字、颜色、样式等。
AndroidManifest.xml:清单文件,配置应用相关信息:包名、权限、组件。
系统会为res目录下的所有资源生成相应的资源ID。
res 目录下面有很多文件,例如 drawable,mipmap,raw 等。res 下面除了 raw 文件不会被压缩外,其余文件都会被压缩。同时 res目录下的文件可以通过R 文件访问。Asset 也是用来存储资源,但是 asset 文件内容只能通过路径或者 AssetManager 读取。
在res目录下。
res/raw目录下的文件,有些文档说会编译为二进制,有些文档说不会。
Android不能直接打开res raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。
InputStream is = getResources().openRawResource(R.id.fileNameID) ;
//R.id.fileNameID为需要访问的文件对应的资源ID.接着我们就可以通过输入流来读取相应文件的内容了。
两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
1)res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即 R.raw.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要路径或AssetManager类。
2)res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹
存放项目环境信息。
用于打包apk
这个工具集成了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建立调试器,从而实现发送指令到测试终端的目的。
Draw 9-patch工具允许你使用所见即所得(WYSIWYG)的编辑器轻松地创建NinePatch图形。它也可以预览经过拉伸的图像,高亮显示内容区域。
AVD Manager(安卓虚拟设备管理器):
可以配置:屏幕分辨率(Skin)、缓存区大小(RAM)、SD卡支持(SD Card Support)、键盘支持。
不能 配置蓝牙支持。
帮助你创建磁盘映像(disk image),你可以在模拟器环境下使用磁盘映像来模拟外部存储卡(例如SD 卡)。
这个工具能够让你方便地访问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等其他支持类型。
程序性能分析器。
是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot。TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。
常用工具有:
如果输入命令,如gradle,出现:‘gradle’ 不是内部或外部命令,也不是可运行的程序,则需要再Windows系统环境变量中配置相应工具的路径。
AndroidStudio Terminal 默认使用的 Shell 是Windows系统的 cmd.exe,当然如果你并不喜欢使用 cmd.exe 可以在AndroidStudio 的 Setting 中去修改,修改方法是:
Setting—->Tools—–>Terminal—–>Shell Path。
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即可知道配置是否成功。
./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版本
where git 查看安装目录
git config --list 查看已经配置的git参数
git clone https://git.oschina.net/Tocy/SampleCode.git 克隆远程仓库
//关闭adb的命令:
adb kill-server
//开启adb的命令:
adb start-server