在这里插入图片描述

我使用的教材是《第一行代码》,感谢开放的互联网。

本篇内容包含:课程ppt与自学教材结合后对安卓知识体系的初步理解和总结,所添加代码块为向其中添加注释进行学习理解。如有不足,欢迎批评指正!


安卓系统架构

  1. linux内核层:依托于这种内核,用来驱动硬件
  2. 系统运行库层:通过c/cpp提供特性支持;提供java核心库;存在虚拟机(线程相关)
  3. 应用框架层:提供api,支持最基本的安卓应用
  4. 应用层:所有应用程序(最浅层)

由深到浅,本次课程基本涉及第四层知识。

安卓系统特色

  • 四大组件
  • 丰富的系统控件
    • Activit: 所有表象呈现的内容
    • Service: 程序退出后默默运行
    • BroadcastReceiver: 电话,短信等广播信息
    • ContentProvider: 程序间共享数据
  • sqlite数据库:存储和读取数据
  • 强大的多媒体

开发环境

工具

  • JDK: java开发包
  • Androd SDK:安卓开发包,使用andriod的相关api
  • Androd Studio:开发平台

开发练习:

在这里插入图片描述

我的第一个程序

分析HelloWorld程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAbtfIin-1661069849441)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b305fa8ea23b4379ab80e7f4b369d020~tplv-k3u1fbpfcp-watermark.image?)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z8lfDj0K-1661069849442)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/afd25f73dea34cd192b32de4c8f7b41b~tplv-k3u1fbpfcp-watermark.image?)]

需要关注的是:

  • app:存放代码和资源
    • libs:放第三方jar包
    • java:放置java/kotlin代码
      • MainActivity:
    • res:图片,布局,字符串等媒体文件
      • drawable: 图片
      • mipmap: 应用图标
      • values: 字符串,样式,颜色等配置
    • build.gradle:app脚本
    • proguard-rules.pro:项目代码的混淆规则

如何使用这些资源?

代码中:R.string.app_name

XML中:@string/app_name

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aB7wFK4p-1661069849442)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/042836c6a5f54a3abcd97e24c30a04f0~tplv-k3u1fbpfcp-watermark.image?)]

layout中存放了这样的布局文件;

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"//显示文字的控件
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

app中的build.gradle代码为:

plugins {
    id 'com.android.application'//声明这是一个程序模块
    id 'org.jetbrains.kotlin.android'//应用插件
}

android {//安卓闭包
    compileSdk 32//指定项目的编译版本

    defaultConfig {//镶嵌又一个闭包,对项目的更多细节进行配置
        applicationId "com.example.helloworld"//应用唯一标识符
        minSdk 21//最低兼容版本
        targetSdk 32//在这个版本充分调试
        versionCode 1//版本
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"//用于测试
    }

    buildTypes {//指定生成安装文件的相关配置
        release {
            minifyEnabled false//是否进行代码混淆
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'//混淆规则
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {//依赖关系

    implementation 'com.android.support:appcompat-v7:28.0.0'//远程依赖
    implementation 'com.android.support.constraint:constraint-layout:2.0.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
  • AndroidManifest.xml:配置文件,声明/修改组组件权限

文件内看到代码:

//对MainActivity进行注册
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />//表示主Activity

        <category android:name="android.intent.category.LAUNCHER" />//表示主Activity
    </intent-filter>
</activity>

其中MainActivity的代码

class MainActivity : AppCompatActivity() {//继承关系
    override fun onCreate(savedInstanceState: Bundle?) {//OnCreat在Activity被创建时必须执行
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)//引入activity_main布局
    }
}
  • .gitignore:版本控制
  • build.gradle:项目全局脚本

百尺竿头,更进一步!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐