1-Android基础

Android系统架构
1-Android基础
  • Linux内核层 Linux内核层为Android设备各种硬件提供底层驱动。
  • 系统运行库层 通过一些C/C++库为Androin系统提供主要特性支持,以及Java核心库
  • 应用框架层 提供构建应用时的各种API
  • 应用层 安装的各种应用
四大组件
  • 活动(Activity) Android应用中,可以看见的部分都在活动中
  • 服务(Service) 后台运行,即使应用退出仍然运行
  • 广播接收器(BroadcastReceiver) 接受来自各处的广播消息以及向外发送广播消息
  • 内容接收器(ContentProvider) 应用程序之间共享信息
 
Android Studio 工程目录详解
1-Android基础
.gradle 自动生成的文件,无需手动编辑
.idea 自动生成的文件,无需手动编辑
app 项目中详细代码以及资源
build 编译时自动生成的文件
gradle gradle wrapper的配置文件
.gitignore 版本控制
build.gradle 全局gradle构建脚本
gradle.properties 全局的gradle配置文件
gradlew/gradlew.bat 在命令行界面中执行gradle命令的
xxxxx.iml 自动生成的一个文件,无需修改
local.properties 指定本机中的Android SDK路径
settings.gradle 指定项目中所有引入的模块
 
除了app目录以外,大多数文件以及目录都是自动生成,无需修改,app中包含所有源码文件。
1-Android基础
build 编译时自动生成的文件,
libs 项目中使用到了第三方jar包
androidTes 用来编写Android Test测试用例
java 放置我们所有Java代码的地方
res 项目中使用到的所有图片、布局、字符串等资源
AndroidManifest.xml 整个Android项目的配置文件
test 用来编写Unit Test测试用例
.gitignore 将app模块内的指定的目录或文件排除在版本控制之外
app.iml 项目自动生成的文件
build.gradle 这是app模块的gradle构建脚本
proguard-rules.pro 指定项目代码的混淆规则
 
对于res文件夹下的资源,由两种方法引用
//定义个程序名的字符串,位于res/ values/strings.xml文件
<resources>
    <string name="app_name">HelloWorld</string>
</resources>
代码中通过
    R.string.app_name
XML中通过
    @string/app_name    

 

build.gradle文件详解
Android Studio是采用Gradle来构建项目的。项目中有两个build.gradle文件,一个是在最外层目录下的,一个是在app目录下的。这两个文件对构建Android Studio项目都起到了至关重要的作用
//外层中build.gradle文件
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath ‘com.android.tools.build:gradle:3.5.0‘
    }
}
 
allprojects {
    repositories {
        google()
        jcenter()
    }
}
 
task clean(type: Delete) {
    delete rootProject.buildDir
}
两处repositories的闭包中都声明了jcenter()这行配置,它是一个代码托管仓库,很Android开源项目都会选择将代码托管到jcenter上,dependencies闭包中使用classpath声明了一个Gradle插件,最后面的部分是插件的版本号。最外层目录下的build.gradle文件分析完了,通常情况下并不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配。
//内层build.gradle文件
apply plugin: ‘com.android.application‘
 
android {
    compileSdkVersion 29//指定项目编译版本
    buildToolsVersion "29.0.2"//指定项目构建版本
    defaultConfig {
         applicationId "com.example.testapplication"//指定项目包名
         minSdkVersion 15//最低兼容版本
        targetSdkVersion 29//已在该版本做过详细测试
        versionCode 1//指定项目版本号
        versionName "1.0"//指定项目版本名
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {//指定生成的安装文件配置
        release {
            minifyEnabled false//是否进行代码混淆
            proguardFiles getDefaultProguardFile(‘proguard-android-optimize.
            txt‘), ‘proguard-rules.pro‘//混淆时的规则文件
        }
    }
}
 
dependencies {//指定项目的依赖关系
    //声明本地依赖 libs下的所有jar添加到项目
    implementation fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    //声明远程依赖包
    implementation ‘androidx.appcompat:appcompat:1.0.2‘
    implementation ‘androidx.constraintlayout:constraintlayout:1.1.3‘
    //声明测试库
    testImplementation ‘junit:junit:4.12‘
    androidTestImplementation ‘androidx.test:runner:1.2.0‘
    androidTestImplementation ‘androidx.test.espresso:espresso-core:3.2.0‘
}

 

 
Log日志工具
Android中的日志工具类是Log(android.util.Log)。
  • Log.v()。用于打印那些最为琐碎的、意义最小的日志信息。verbose
  • Log.d()。用于打印一些调试信息,debug
  • Log.i()。用于打印一些比较重要的数据,info
  • Log.w()。用于打印一些警告信息,warn
  • Log.e()。用于打印程序中的错误信息,error
//举例
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    switch (requestCode){
        case 1 :
            if(resultCode == RESULT_OK){
                String returnData = data.getStringExtra("data_return");
                Log.d("MainActivity",returnData);
            }
            break;
            default:
    }
}
注意:不建议使用System.out.println()方法的!该方法的日志打印不可控制、打印时
间无法确定、不能添加过滤器、日志没有级别区分。

1-Android基础

上一篇:[opencv]approxDP多边形逼近获取四边形轮廓信息


下一篇:APP中的第三方“支付”功能测试建议