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()
    }
}

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 131,488评论 19 558
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 79,161评论 12 120
  • Gradle对于很多开发者来说有一种既熟悉又陌生的感觉,他是离我们那么近,以至于我每天做项目都需要他,但是他又是离...
    阿_希爸阅读 7,425评论 15 197
  • 1. 权利义务相对等,天下没有免费的午餐 2. 用智慧做一个逗比的人而不是光用节操 3. 自由是只属于年轻人的,中...
    阿呸姑娘阅读 528评论 20 15
  • 作者:史遇春 一 记得小时候,我们乡下的人常说:“三岁看老。”意思是,一个人未来有没有出息,能不能做事,在年纪很小...
    史遇春之尘境心影录阅读 100评论 0 1