Package name:项目的包名,一定要具有唯一性!
静待。。。
创建模拟器
版本问题找不到具体信息,就选择这一个把。相似度比较高。紧跟着后边我也配置了安卓10(Q)
提示你的反病毒程序可能会影响你的构建性能。
我关闭了。
智能的平台帮你生成了。Hello World!!!!
切换项目
结构模式目录
1.gradle和.idea
这两个目录下放置的都是AndroidStudio自动生成的一些文件,我们无需关心,也不要手动编辑。
2app
项目中的代码、资源等内容都是放置在这个目录下,我们后面的开发工作也基本是在这个目录下进行。
3build
这个目录主要包含了一些在编译时自动生成的文件,无需过多关心。
4gradle
目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。AndroidStudio默认就是启动gradle wrapper方式的,如果需要更改成离线模式,可以点击AndroidStudio导航栏—File—Settings—Build,Execution,Deployment—Gradle,进行配置更改。
5.gitignore
这个文件是用来指定的目录或文件排除在版本控制之外的。关于控制版本,我们将在第6章中开始正式学习。
6build.gradle
项目全局的gradle构建脚本,通常这个文件内容不需要修改。稍后详细分解gradle构建脚本中的具体内容。
7gradle.properties
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
8gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
9Hello World.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(AndroidStudio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何内容。
10local.properties
这个文件用于指定本机中的Android SDK路径,通常是自动生产的,我们并不需要修改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径修改成新的位置即可。
11settings.gradle
这个文件用于制定项目中所有引入的模块。由于Hello World项目中只有一个app模块,因此改文件中也就只引入了app这一个模块。通常下,模块的引入是自动完成的,需要我们手动修改这个文件的场景可能比较少。
(除app目录外其他都是自动生成。app目录下内容是重点。)
app目录下
build
和外层build目录类似,也包含了一些在编译时自动生成的文件,不过它里面内容更复杂,不需过多关心。
libs
如项目使用了第三方jar包,就需要存放在该目录下。目录下的jar包会被自动添加到项目的构建路径里。
androidTest
用来编写AndroidTest测试用例,可以对项目进行自动化测试。
java
存放所有Java代码(包括Kotlin),展开该目录,将看到系统帮我们自动生成了一个MainActivity文件。
res
项目中所使用到的所有图片,布局,字符串等资源。该文件下还有很多子目录
图片drawable
布局layout
字符串values
AndroidManifest.xml
整个Android项目的配置文件,可在程序中定义所有四大组件都需要在这个文件里注册,还可以在这个文件里给应用程序添加权限声明。会经常用到
text
用来编写UnitTest测试用例的,是对项目进行自动化测试的另一种方式。
.gitignore
将app模块内指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似
app.iml
IntelliJ IDEA项目自动生成的文件,不必关心或修改内容
build.gradle
app模块的gradle构建脚本,会指定很多项目构建相关的配置。
proguard-rules.pro
用于指定项目代码的混淆规则,当代码开发完成打包成安装包文件,如不希望代码被破解,通常会将代码进行混淆,从而让破解者难以阅读。
分析入门代码
class A : B————A是继承自B的。
AppCompatActivity 是AndroidX中提供的一种向下兼容的Activity,可以使Activity在不同系统版本中的功能保持一致性。Activity是Android系统的一个基类,项目中所有自定义的Activity都必须继承它或者它的子类才能拥有Activity的特性(AppCompatActivity是Activity的子类)。
可以看到MainActivity中有一个onCreate()的方法,这个方法是一个Activity被创建时必须要执行的方法,其中只有两行代码,并没有“Hello World”。
Android程序的设计讲究逻辑和试图分离,不推荐在Activity中直接编写界面的。一种通用的做法是,在布局文件中编写界面,然后在Activity中引入进来。
setContentView(R.layout.activity_main)————这个方法就是给当前activity引入了一个activity_main布局。“Hello World”就在该文件里
在<TextView 中有“Hello World”字样。
1.3.5 详解项目中的资源
res中
以drawable开头的目录都是用来存放图片的
以mipmap开头的目录都是用来存放应用图标的
以values开头的目录都是用来存放字符串、样式、颜色等配置的
以layout开头的目录都是用来存放布局文件的
目录文件多,是为了让程序更好的兼容各种设备。
制作程序时,最好能够给同一张图片提供几个不同分辨率的版本,分别放在这些目录下。当程序运行时,会自动根据当前设备分辨率的高低选择加载哪个目录下的图片(理想情况)。更多情况把所有图片都放在drawable-xxhdpi目录下就好了,因为这是最主流的设备分辨率目录。
res/values/string.xml
<resources><string name="app_name">HellowWorld</string>
</resources>
这里定义了一个应用程序的字符串,有两种方法引用它。
①在代码中通过R.string.app_name可以获得该字符串的引用。
②在XML中通过@string/app_name可以获得该字符串的引用。
其中string部分可替代。例:drawable/mipmap/layout等
AndroidMainifest.xml中
<applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.HellowWorld"...
</application>
HellowWorld项目的图标就是通过android:icon属性指定的,应用的名称则是通过android:label属性指定的。
如需修改,更改对应地址即可。
1.3.6 详解build.gradle文件
XXXX
如果想使用Kolin来开发Android项目,kotlin-android是必须的。
kotlin-android-extentsions实现非常好用的Kotlin扩展插件。
compilesSdkVersion用于指定项目构建工具的版本,(目前29.0.2,如有更新工具会更新)
defaultConfig闭包中可以对项目的更多细节进行配置。
applicationId每一个应用的唯一标识符,不可重复。默认会使用创建项目指定的包名。
minSdkVersion用于指定项目最低兼容的Android版本。
targerSdkVersion指定的值表示你在该目标版本上已经做过了充分的测试。系统将会为你的应用程序启动一些最新的功能和特性。
versionCode用于指定项目的版本号。
versionName用于指定项目的版本号。
testInstrumentationRunner用于在当前项目中启用JUnit(一个Java语言的单元测试框架。)测试,可以为当前项目编写测试用例,以保证功能的正确性和稳定性。
buildTypes闭包用于指定生成安装文件的相关配置。
debug子闭包用于指定生成测试版安装文件的配置。(可忽略不屑)
release子闭包用于指定生成正式版安装文件的配置。
minifyEnabled用于指定是否对项目的代码进行混淆。true混淆,false不混淆。
proguardFiles用于指定混淆时使用的规则文件,①proguard-android-optimize.txt是在<AndroidSKD>/tools/proguard目录下的,所有项目的通用的混淆规则;②proguard-rules.pro是在当前项目的根目录下的,可以编写当前项目特有的混淆规则。
dependencies闭包,可以指定当前项目所有的依赖关系。
三种了依赖关系:①本地依赖:可以对本地的jar包或目录添加依赖关系。②库依赖:可以对项目中的库模块添加依赖关系③远程依赖:可以对jcenter仓库上的开源项目添加依赖关系。
implementation fileTree本地依赖声明,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径中。
implementation远程依赖声明,
android : appcompat : appcompar : 1.1.0
:域名部分(用于和其他公司的库做区分):工程名部分(用于和同公司不同库工程做区分):版本号
库依赖:基本格式
implementation project + 要依赖的库的名称。例
implementation project(':库名字')
testImplementation和androidTestImplementation用于声明测试用例库。