• android学习day1


    1.android系统框架

    android大致可分为四层架构:linux内核层,系统运行库层,应用框架层和应用层

    1.1 linux内核层

    为android设备的各种硬件提供底层驱动,如显示驱动,音频驱动,wifi驱动,电源管理等。

    1.2 系统运行库层

    通过一些c/c++库为android系统提供了主要的特性支持,如SQLite库提供数据库支持,OpenGL|ES库提供3D绘图支持,Webkit提供浏览器内核的支持。

    这一层还有android运行时库,他主要提供了一些核心库,允许开发者使用java语言来编写Android应用。另外还包含了Dakvik虚拟机(5.0系统后改为ART运行环境),是的每个android应用都能运行在独立的进程中。

    1.3应用框架层

    本层主要提供各种API,开发者通过这些API来构建自己的应用程序。

    1.4应用层

    所有的应用程序都属于这一层。

    2android特色

    2.1四大组件:

    android系统四大组件为Activity,Service,BroadcastReceiver和ContentProvider。activity是所有android应用程序的门面,看到的东西都在activity中。service在后台默默运行,即使退出应用也可以继续运行。broadcastreceiver允许接收来自各处的广播消息。contentprovider为应用程序提供数据共享。

    2.2丰富的系统控件:

    方便我们轻松编写漂亮的界面。

    2.3SQLite数据库:

    系统自带的轻量级,运算极快的嵌入式关系型数据库,支持标准的SQL语法,通过封装好的API进行操作

    2.4强大的多媒体:

    如音乐,拍照,视频,录音等,都可以通过程序代码控制。

      2.5地理位置定位:

        gps

    3.创建第一个项目

    1.android视图下

    app目录下:

    manifests:包含xml文件,是app运行的配置文件

    java:第一个包存放当前模块的java源码,后面两个包存放测试用的java代码

    res:存放当前模块的资源文件,标在mipmap目录,图片在drawable目录,布局在layout目录,字符串在values目录。

    Gradle Scripts目录下:

    build.gradle:描述App工程的编译规则

    proguard-rules.pro:用于指定项目代码的混淆规则,打包成安装包时不希望被破解

    gradle.properties:用于配置编译工程的命令行参数一般不用改动

    settings.gradle:配置了需要编译哪些模块,初始内容为include':app'表示只编译app模块

    local.properties:项目的本地配置文件自动生成

    2.project视图下

    .gradle和.idea:自动生成的文件

    app:项目中所有代码资源都在里面

    gradle:包含gradle wrapper的配置文件

    .gitignore:将指定的文件或目录排除在版本控制之外

    build.gradle:项目全局的gradle构建脚本

    gradle.properties:全局的gradle配置文件

    gradlew和gradlew.bat:在命令行界面执行gradle命令,gradlew.bat只用于windows

    local.properties:指定本机中的android sdk路径

    settings.gradle:指定项目中所有引入的模块

    app目录下

    build:编译自动生成的文件

    src中:

    androidTest:用来编写测试用例

    main中:

    java:放置java代码

    res:存放图片布局字符串等资源,图标在mipmap目录,图片在drawable目录,布局在layout目录,字符串在values目录

    test:用来编写Unit Test测试用例

    .gitignore:将app中指定目录或文件排除在版本控制之外,与外层类似

    build.gradle:app模块的gradle构建脚本

    proguard-rules.pro:用于指定项目代码的混淆规则,打包成安装包时不希望被破解

    4.app中build.gradle分析

    1. plugins {
    2. alias(libs.plugins.android.application)
    3. }//模块
    4. android {
    5. namespace 'com.example.zcc'
    6. compileSdk 34//指定项目编译的版本
    7. defaultConfig {
    8. applicationId "com.example.zcc"//每个应用的唯一标识符
    9. minSdk 29//最低兼容的android版本
    10. targetSdk 34//在目标版本上已经做过测试,系统会给你的应用程序启用新的功能
    11. versionCode 1//指定项目的版本号
    12. versionName "1.0"//指定项目的版本名
    13. testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//用于当前项目启动JUnit测试
    14. }
    15. buildTypes {
    16. release {
    17. minifyEnabled false//指定是否对项目代码进行混淆,
    18. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'//指定混淆时使用的规则文件
    19. }
    20. }
    21. compileOptions {
    22. sourceCompatibility JavaVersion.VERSION_1_8
    23. targetCompatibility JavaVersion.VERSION_1_8
    24. }
    25. }
    26. dependencies {
    27. //指定依赖
    28. implementation libs.appcompat
    29. implementation libs.material
    30. implementation libs.activity
    31. implementation libs.constraintlayout
    32. testImplementation libs.junit
    33. androidTestImplementation libs.ext.junit
    34. androidTestImplementation libs.espresso.core
    35. }

    buildTypes闭包用于生成安装文件的相关配置通常会有两个子闭包:debug、release

      debug:用于指定测试版安装文件的配置,可以忽略不写

      release:用于指定正式版安装文件额的配置

    5.清单文件AndroidManifest.xml

    android:allowBackup:是否允许备份

    android:icon:指定app在手机屏幕上显示的图标

    android:label:指定app在手机屏幕上显示的名称

    android:roundIcon:指定app的圆角图标

    android:supportsRtl:是否支持阿拉伯语/波斯语这种从右往左的文字顺序 android:theme:指定app风格 android:dataExtractionRules:指定应用备份时的规则 android:fullBackupContent:定义了应用的全备份内容 tools:targetApi="31"

    6.日志工具的使用

    日志工具Log

    v、d、i、w、e

    Log.d("MainActivity","onCreate")第一个参数是tag一般传入当前的类名就好主要用于对打印信息的过滤;第二个参数是msg即想打印的内容

    补充:

    1:引用res/values/strings.xml:

     
    

    hello

    有两种方法引用res目录下的资源:

    1.在代码中通过R.string.app_name可以获得该字符串的引用

    2.在xml中通过@string/app_name可以获得该字符串的引用

    2.2008年,HTC发布第一台android智能机

  • 相关阅读:
    git上传报错:Object too large, rejecting the pack
    [附源码]Python计算机毕业设计SSM乐跑(程序+LW)
    Mac M2芯片配置PHP环境
    MarkdownQuote:简化 Markdown 中的代码引用!
    makefile-c
    Linux高性能服务器编程——ch5笔记
    EDA实验-----4*4矩阵键盘与数码管显示测试(Quartus ‖)
    操作系统中的进程是什么?(详细讲解进程调度相关PCB信息)
    数据结构二叉树前序遍历递归和非递归算法
    MySQL 多表查询
  • 原文地址:https://blog.csdn.net/qq_57170705/article/details/140421320