首页 > 其他分享 >android学习day1

android学习day1

时间:2024-07-16 11:58:37浏览次数:19  
标签:app 指定 gradle 学习 libs 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分析

plugins {
    alias(libs.plugins.android.application)
}//模块

android {
    namespace 'com.example.zcc'
    compileSdk 34//指定项目编译的版本

    defaultConfig {
        applicationId "com.example.zcc"//每个应用的唯一标识符
        minSdk 29//最低兼容的android版本
        targetSdk 34//在目标版本上已经做过测试,系统会给你的应用程序启用新的功能
        versionCode 1//指定项目的版本号
        versionName "1.0"//指定项目的版本名

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//用于当前项目启动JUnit测试
    }

    buildTypes {
        release {
            minifyEnabled false//指定是否对项目代码进行混淆,
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'//指定混淆时使用的规则文件
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    //指定依赖
    implementation libs.appcompat
    implementation libs.material
    implementation libs.activity
    implementation libs.constraintlayout
    testImplementation libs.junit
    androidTestImplementation libs.ext.junit
    androidTestImplementation libs.espresso.core
}

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:


<resources><string name="app_name">hello</string></resources>

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

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

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

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

标签:app,指定,gradle,学习,libs,android,day1,目录
From: https://blog.csdn.net/qq_57170705/article/details/140421320

相关文章

  • java学习笔记
    //单行注释/**/多行注释/** */文档注释byte:-128~127short:正负三万int:正负21亿long:如果表示的数超过int需要加L 123456789123456Lfloat:后面加fdouble:char:单引号引起来的单个字符增强for循环:for(intnum:arr)创建新的构造器,要保留空构造器,构造器也......
  • 昇思25天学习打卡营第 12 天 | mindspore 实现 ResNet50 图像分类
    1.背景:使用mindspore学习神经网络,打卡第12天;主要内容也依据mindspore的学习记录。2.ResNet介绍:mindspore实现ResNet50图像分类;ResNet基本介绍:ResidualNetworks是微软研究院KaimingHe等人于2015年在DeepResidualLearningforImageRecognition......
  • 小程序开发基础01-学习路线
    微信小程序是一种运行在微信生态系统内的轻量级应用程序。它们无需安装、即用即走,为用户提供了便捷的使用体验。对于开发者而言,小程序开发是一种更简洁、高效的方式来触达用户。小程序开发简介编程语言:小程序使用的主要语言是JavaScript,以及配套的WXML(微信的HTML)和WXSS(微信的CS......
  • 动手学深度学习6.4 多输入多输出通道-笔记&练习(PyTorch)
    以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。本节课程地址:21卷积层里的多输入多输出通道【动手学深度学习v2】_哔哩哔哩_bilibili本节教材地址:6.4.多输入多输出通道—动手学深度学习2.0.0documentation(......
  • Flutter学习01-Flutter学习路线
    Flutter是由Google开发的一套开源UI软件开发工具包,能够帮助开发者使用一套代码库创建跨平台的高性能原生应用。Flutter使用Dart编程语言,通过其内置的渲染引擎绘制界面,从而实现了原生性能和优秀的用户体验。Flutter的特点跨平台:支持iOS、Android、Web和桌面平台,不同......
  • 一起来学习孟德尔随机化临床医学SCI发表吧!!!
    如今,临床科研工作者面对越来越重的科研压力,以及越来越高的SCI文章要求,如何才能在不进实验室、不做基础科研的前提下,利用好各种公共数据资源快速发表SCI论著?这是一个困绕每一个临床科研医生的话题。真正的随机对照临床研究(RCT)往往费时,费力,费钱。因此,当前科研的热点之......
  • 机器学习策略篇:详解处理数据不匹配问题(Addressing data mismatch)
    处理数据不匹配问题如果您的训练集来自和开发测试集不同的分布,如果错误分析显示有一个数据不匹配的问题该怎么办?这个问题没有完全系统的解决方案,但可以看看一些可以尝试的事情。如果发现有严重的数据不匹配问题,通常会亲自做错误分析,尝试了解训练集和开发测试集的具体差异。技术上......
  • 《藏文翻译词典》App功能介绍,支持藏汉词典和藏文字典查单词,好用的藏语学习工具!
    《藏文翻译词典》App,作为一款功能强大的语言学习工具,不仅为藏语学习者提供了一个便捷的学习平台,也为那些对藏文化感兴趣的人们打开了一扇了解和学习的窗口。app内置藏汉词典、藏汉大词典、新术语等多本辞书,方便大家查询单词,中文藏文双语解释。藏汉双语,藏语学习的得力助手《......
  • 木舟0基础学习Java的第十九天(装饰设计模式,转换流,对象操作流(序列化),Properties集合)
    装饰设计模式创建一个接口用一个类实现接口再创建一个类实现这个接口第二个类中包含第一个类中的方法和自己的方法还可以增强案例:publicinterfaceCar{publicvoidrun();publicvoidcarry();}publicclassTaxiimplementsCar{@Overridepub......
  • Excel 学习手册 - 精进版(包括各类复杂函数及其嵌套使用)
    作为程序员从未想过要去精进一下Excel办公软件的使用方法,以前用到某功能都是直接百度,最近这两天跟着哔哩哔哩上的戴戴戴师兄把Excel由里到外学了一遍,收获良多。程序员要想掌握这些内容可以说是手拿把掐,对后续Excel的运用也会有非常好的效果,在处理数据时,比起现写一些一次......