Android之路(二)

(一)app内文件详解

1. build包含编译时自动生成的文件。

2. libs第三方jar包,需要把jar包放在libs,会被自动添加到构建路径里去。

3. AndroidTest 此处是用来编写Android Test 测试用例的,可以对项目进行一些自动化测试

4. java 放置java代码的地方 activity文件就在里面。

5. res项目中使用到的所有图片/布局/字符串等资源都要存放在这个目录下。图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下。

6. AndroidManifest.xml

整个Android项目的配置文件,程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

7. test 此处是用来编写 Unit Test测试用例的,是对项目进行自动化检测的另一种方式。

8. .gitignore  将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。

9. app.iml intellij IDEA自动生成的文件

10. build.gradle app模块的gradle构建脚本,这个文件会指定很多项目构建相关的配置。

11. proguard-rules.pro 用于指定项目代码的混淆规则,当代码开发完成后达成后打成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆。

(二)代码分析

Androidmanifest.xml 中,对activity进行注册,intent-filter里的两行代码非常重要,

<action android:name= "android.intent.action.MAIN" />和<category android:name="android.intent.category. LAUNCHER" />表示 HelloWorldActivity 是这个项目的主活动,在手机上点击应用图标,首先启动 的就是这个活动。

activity.java 中,

Activity 是 Android 系统提供的一个活动基类,我们项目中所有的活动都必须继承它或者它的子 类才能拥有活动的特性(AppCompatActivity 是 Activity 的子类)。

HelloWorldActivity 中有一个 onCreate()方法,这个方法是一个活动被创建时必定要执行的方法

onCreate() 方法的第二行调用了 setContentView()方法,就是这个方法给当前的活动引入了一个 hello_world_layout

(三)项目中的资源

drawable图片,mipmap图标,values字符串样式颜色等配置,layout布局文件

之所以有这么多 mipmap 开头的文件夹,其实主要是为了让程序能够更好地兼容各种设备。 drawable 文件夹也是相同的道理,虽然 Android Studio 没有帮我们自动生成,但是我们应该自己创 建 drawable-hdpi、drawable-xhdpi、drawable-xxhdpi 等文件夹

res/values/strings.xml 两种引用方式:

1. 在代码中R.string.app_name 2.在xml中@string/app_name string部分可以替换成drawable mipmap layout等。

AndroidManifest.xml中应用图标通过Android:icon指定,应用名称android:label指定。修改图标或者名字在此处进行。

(三)build.gradle文件

Android studio 采用Gradle来构建项目的。Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言DSL来声明项目设置,摒弃了传统基于XML 如Ant 和 Maven的各种繁琐配置。有两个build.gradle文件,一个在最外面一个在app里。

外面(如果想添加一些全局项目构建配置,可以改动):

两处repositories的闭包中都声明了jcenter()这行配置。它是一个代码托管仓库。很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置之后,我们就可以在项目中轻松引用任何jecenter上的开源项目了。

dependencies闭包中使用了classpath声明了一个Gradle插件。因为Gradle不是专门构建Android项目而开发的,Java,C++等很多种项目都可以使用Gradle来构建。因此如果我们想用它构建Android要声明,com.android. tools.build:gradle:版本号

app内:

第一行应用了一个插件 apply plugin,一般有两种值可以选择:com.android.application 表示这是一个应用程序模块com.android.library表示这是一个库模块。应用程序模块和库模块的最大区别在于,一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块。

接下来是一个android 闭包,用于配置项目构建的各种属性。

compileSdkVersion 用于指定项目的编译版本,这里指定成 24 表示使用 Android 7.0 系统的 SDK 编译

buildToolsVersion 用于指定项目构建工具的版本

Android闭包里嵌套的defaultConfig闭包

applicationId 用于指定项目的包名,前面我们在 创建项目的时候其实已经指定过包名了,如果你想在后面对其进行修改,那么就是在这里修改的。

minSdkVersion 用于指定项目最低兼容的 Android 系统版本 ,15 表示最低兼容到 Android 4.0 系统

targetSdkVersion 指定的值表示你在该目标版本上已经做过了充分的测试, 系统将会为你的应用程序启用一些最新的功能和特性。比如说 Android 6.0 系统中引入了运行时 权限这个功能,如果你将 targetSdkVersion 指定成 23 或者更高,那么系统就会为你的程序启 用运行时权限功能,而如果你将 targetSdkVersion 指定成 22,那    么就说明你的程序最高只在 Android 5.1 系统上做过充分的测试,Android 6.0 系统中引入的新功能自然就不会启用了。

versionCode 用于指定项目的版本号,versionName 用于指定项目的版本名

buildTypes闭包,用于指定生成安装文件的相关配置。通常只会有两个字闭包,debug和release。debug用于指定生成测试版安装文件的配置,release用于指定生成正式版安装文件的配置。

未完。。。

原文地址:https://www.cnblogs.com/developerchen/p/8605884.html

时间: 2024-08-06 09:44:28

Android之路(二)的相关文章

Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行h264视频编码和aac音频编码,并发送到RTMP服务器,从而实现Android摄像头直播.程序名为NdkRtmpEncoder,在这里把整个过程,和大体框架介绍一下,算是给需要的人引路. 开发思路 首先,为什么要用NDK来做,因为自己之前就已经实现过RTMP推流.RTMP播放.RTSP转码等等各种

【喵&quot;的Android之路】【开篇】序

[喵"的Android之路][开篇] [序] 本人Nodin,偶尔也叫MoNodin,朋友们都喜欢叫我丁,还有个笔名叫陌上幽人,文艺时叫恋风,发奋时叫不肯腐烂的土壤...也许你觉得我逗,其实25年来我从没长过青春痘——看来还太年轻,(唱起来)我的青春期它还没来到! 开个玩笑,言归正传. 2011年3月份开始试水Android手游,三个月后转而做应用层开发,目前在百度垂直搜索部图片团队担任客户端研发工程师.至今从事Android工作已经有三年时间,主要参与过五个项目的开发.其中三个是针对特定客户的

Android 面试题总结之Android 进阶(二)

Android 之美 从0到1 之Android 进阶(二) 在上一章节中<Android 之美 从0到1 之Android 进阶(一)>中我们已经理解了一些View的基本知识并且知道如何自定义View.那么本章节将继续深入理解View,关于View的绘制流程,View的事件分发.刷新机制等等. 在阅读过程中有任何问题,请及时联系.如需转载请注明 fuchenxuan blog 本章系<Android 之美 从0到1 – 高手之路>Android 深入理解View的绘制流程. An

Android 面试题总结之Android 基础(二)

Android 面试题总结之Android 基础ContentProvider(二) 在上一章节Android 面试题总结之Android 基础Activity(一) 我们讲的Activity基础知识.有许多朋友反映看着比较乱,我又回去看了看 ,确实很乱,不够细心.然后我又重新整理了一遍.让大家阅读体验更好! 在阅读过程中有任何问题,请及时联系. 本章系<Android 之美 从0到1 – 高手之路>Android基础ContentProvider 总结了Android 开发者面试比较常见的C

我的编程之路(二十一) 规范

不知不觉一周就过去了,这周细想真的没有做成什么,因为几乎都是做了改,改了做··· 1.代码规范 以前自认为自己很注重代码规范,但是没有想到自己项目组的开发会将代码规范审查的那么严谨,这突然让我想到之前说到程序员都喜欢追求完美,都喜欢自己和自己的风格一致,否则就会觉得别扭,不过与此不同,这是团队开发,代码规范是为了统一风格,便于别人的阅读与后人的修改与维护,虽然因为这我前前后后改了三次dao层的代码,一是要用公司封装的借口,二是要把异常处理都放在这一层或者service层,三是要用公司自己写的工具

Android学习Scroller(二)——ViewGroup调用scrollTo()

MainActivity如下: package cc.ac; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.app.Activity; /** * Demo描述: * 对ViewGroup调用sc

android binder 机制二(client和普通server)

在讲它们之间的通信之前,我们先以MediaServer为例看看普通Server进程都在干些什么. int main() { -- // 获得ProcessState实例 sp<ProcessState> proc(ProcessState::self()); // 得到ServiceManager的Binder客户端实例 sp<IServiceManager> sm = defaultServiceManager(); -- // 通过ServiceManager的Binder客户

【喵&quot;的Android之路】【番外篇】有关于null的一些知识点

[喵"的Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象.因此,下面的做法是错误的: int a = null; 但: Object obj = null; 是可以的,因为null表示Object类型的一个空对象引用,符合其用意. [注1]引用类型使用null声明对象变量后,无法使用该变量访问对象的成员.例如上述obj对象如果使用obj.toString()

详解Android ActionBar之二:ActionBar添加Tabs标签和下拉导航

本节主要讲解ActionBar如何添加Tabs标签和下拉导航. 一.添加标签 Tabs 在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重写onTabSelected.onTabUnselected和onTabReselected方法来关联Fragment.代码如下: Java代码 private class MyTabListener implements ActionBar.TabListener { private TabCon