Android文件夹简介

** 安卓外层文件夹简介**

.gradle和.idea:如果用Android Studio编程,这两个目录为Android Studio自动生成的文件,无需关心。

app:项目中代码资源等内容几乎都放在这个目录下。

build:主要包含了编译时自动生成的文件。无需关心。

gradle:这个目录下包含了gradle wrapper的配置文件,使用geadle wrapper的方式不需要提前将agradle下载好,而是自动根据本地缓存情况觉得是否需要联网下载geadle。Android Studio默认没有启用gradle wrapper的方式。

.gitignore:这个文件是用来将指定的目录或文件排除在版本控制之外的。

build.gradle:这是项目全局的gradle构建脚本,通常不需要修改。

.gradle.properties这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有gradle编译脚本。

gradlew和gradlew.bat:这两个文件夹是用来在命令行界面中执行gradle命令的,其中gradlew是在linux和mac系统中使用的,gradlew.bat是在windows系统中使用。

HelloWorld.iml:无需修改的文件夹。

local.properties:指定本机中的Android SDK路径,通常内容自动生成,无需修改。

settings.gradle:用于指定项目中所有引入的模块。通常引入自动完成,不需修改。


外层app内目录简介
build:编译时自动生成的文件,无需关心。

libs:如果项目中使用第三方jar包,就需要把这些jar包放入libs目录下,
放在这个目录下的jar包都会被自动添加到构建路径去。

androidTest:此处是用来编写androidTest测试用例的,可以对项目进行一些自动化测试。

java:放置java代码的目录。

res:项目中的图片,布局,字符串等资源存放在这个目录下。此目录下子目录
drawable存放图片,layout存放布局,values存放字符串。

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

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

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

app.iml:Intellij IDEA项目自动生成的文件,无需修改。

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

.proguard-rules.pro:这个文件用于指定项目代码的混肴规则。

--

java文件内代码简介
activity是安卓系统提供的一个活动基类,我们项目中所有活动都必须继承它或者他的子类才能拥有活动的特性(AppCompatActivity是Activity的子类,onCreate()方法是一个活动创建时必须执行的方法。setContentView()方法是给当前活动引入一个布局

public class HelloWorldActivity extends AppCompatActivity {   //表明HelloWorldActivity继承自AppCompatActivity,这是一种向下兼容的activity
    private static final String TAG = "HelloWorldActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hello_world_layout);


AndroidManifest.xml内代码解析

        <activity android:name=".HelloWorldActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这段代码表示对HelloWorldActivity这个活动进行注册。没有在AndroidManifest里注册的活动是不能使用的。其中

<action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />

这两段代码表示HelloWorldActivity是这个项目的主活动,在手机上点击app图标,首先加载这个活动。

在代码中通过R.String.Hello_World获得字符串的引用
在xml中通过@String/HelloWorld获得字符串的引用


        <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"    //设置应用图标属性
        android:label="@string/app_name"         //设置应用名称属性
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".HelloWorldActivity">
</application>


日志Log
android中的日志类是Log,一般添加在src/java文件夹里,在活动中的onCreate()方法内添加。Log.d("活动名","onCreate execute")有5个方法打印日志。
Log.v():打印最为琐碎的,意义最小的日志信息。对应级别是varbose。是android里面级别最低的。
Log.d():用于打印一些调试信息。这些信息对你调试程序和分析问题是有帮助的。对应级别debug。比varbose高一级。
Log.i():用于打印一些比较重要的数据,可以帮你分析用户行为的数据。对应级别info。比debug高一级。

Log.w():用于打印一些警告信息,提示程序在这个地方可能存在潜在风险,最好修复一下出现警告的地方。对应级别warn。比info高一级。
Log.e():用于打印程序中的错误信息。比如程序进入到catch语句中,当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别error。比warn高一级。



app内build.gradle文件夹内代码简介

apply plugin: 'com.android.application'  //com.android.application表示这是一个应用程序模块,可以直接运行。如果是com.android.library表示这是一个库模块,只能作为代码库依附于别的应用程序运行

android {   //一个安卓闭包
    compileSdkVersion 21  //用于指定项目的编译版本,如果是24就表示android7.0系统的SDK编译
    buildToolsVersion "21.1.0"   //用于指定项目构建工具的版本,

    defaultConfig {  //闭包内的闭包
        applicationId "com.nian.hua"    //包名
        minSdkVersion 14     //用于指定项目兼容android最低版本   如果是15表示最低兼容android4.0系统
        targetSdkVersion 21   //指定的值用来表示用来表示你在安卓系统做了充分测试,如果是23或更大,就会出现android6.0系统的运行时权限功能,如果是22只会出现android5.1的功能,6.0的实时权限功能就没有
        versionCode 1    //用于指定项目的版本号(仅应用市场可见)
        versionName "1.0"    //用于指定项目的版本名(终端可见)
    }
    buildTypes {   //这个闭包用于指定生成安装文件的相关配置,通常只会有两个子闭包,debug(用于指定生成测试版安装文件的配置,可忽略不写)和release(用于指定生成正式版安装文件的配置)
        release {  //用于指定生成正式版安装文件的配置
            minifyEnabled false  //用于指定是否对项目的代码进行混肴,false表示不混肴
            proguardFiles  /*  用于指定混肴时的规则文件*/ getDefaultProguardFile('proguard-android.txt'/*android SDK目录下,里面是所有项目通用的混肴规则*/), 'proguard-rules.pro'//当前项目的根目录下,可以编写当前项目特有的混肴规则
        }
    }
}

dependencies {  //指定当前项目所有依定的关系Android Studio中有三种依赖关系,本地依赖(对本地jar包或目录添加依赖关系),库依赖(可以对项目中的库模块添加依赖关系)和远程依赖(可以对jcenter库上的开源项目添加依赖关系)。
    compile fileTree /*这是一个本地声明*/(dir: 'libs', include: ['*.jar'])  //将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中
    //compile(远程依赖声明)'com.android.support:appcompat-v7:24.2.1'   (com.android.support:appcompat-v7:24.2.1是一个标准的远程依赖库格式,其中com.android.support是域名部分,用于和其他公司的库做区分。24.2.1是版本号,用于和同一个库不同版本做区分。声明这行代码后gradle构建项目时会自动检查本地是否有这个库的缓存,没有自动联网下载,在添加到构建路径当中。
}


最外层buile.gradle文件内代码注释

buildscript {
    repositories {
        jcenter()  //jcenter是代码托管仓库,声明这行代码可以引用任何jcenter上的开源项目
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.+'  //使用classpath声明了一个Gradle插件,最后面部分是版本号(最新版是2.2.0)

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,567评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,358评论 6 343
  • Gradle对于很多开发者来说有一种既熟悉又陌生的感觉,他是离我们那么近,以至于我每天做项目都需要他,但是他又是离...
    阿_希爸阅读 9,513评论 10 199
  • 1. 权利义务相对等,天下没有免费的午餐 2. 用智慧做一个逗比的人而不是光用节操 3. 自由是只属于年轻人的,中...
    阿呸姑娘阅读 896评论 20 15