安卓开发日记1

本篇内容:
解决安卓工程文件慢的问题。
初识安卓工程的各项配置文件。
大致了解默认配置文件的参数配置。


前言

新建工程文件

新建空项目==>将左上角的Android切换成Project查看整个项目结构。
在这里插入图片描述
如果你的网足够好他会自动给你下载gradle,再使用gradle构建工程项目,下载所需的依赖。

注意

由于android官方下载gradle的源在外面,所以基本上大部分人下载会很慢而且很容易断掉,而且他给你下载好后还要通过gradle下载一些依赖,这些依赖也在外面,所以也会很慢。
为了解决这个问题,我们要进行两步,
1.下载gradle的.zip文件直接放到.gradle中。
2.配置gradle,把gradle的下载路径配置为国内镜像源。

在file\settings\Build,Ex…\Build Tools中更改设置,将User Gardle from 从’gradle-wrapper.properties’file改为’Specified location’
在这里插入图片描述
找和你android版本可以对应的gradle版本下载
gradle国内官方连接
腾讯镜像源下载
注意是下载(gradle-版本号-bin.zip)的文件

然后解压出来

打开C:\Users(你的电脑账户)\ .gradle\wrapper\dists…
里面可能会有乱码样子的那种文件,因为你在创建Android工程文件后AndroidStudio如果没有找到gradle就会尝试在这里下载,这一串乱码其实应该就是他下载的时候的文件校验码。
在这里插入图片描述
点进去后的文件就是没下完的gradle文件,将gradle文件解压出来的(gradle-版本号)文件替换放进去就行。

Tip:

实测可以把这个(gradle-版本号)的文件放在和乱码文件同级的位置,然后把乱码文件删了,
你的GradleHome只要选到(gradle-版本号)的文件也能成功构建。

(还可以改全局环境变量然后把gradle放在其他盘减少运行盘的内存消耗,
因为随着项目的依赖增大他占的内存也会增多)。
具体看你的需求,这里篇幅有限就先不bb改全局变量的具体步骤了,
大体就是创建GRADLE_HOME全局环境变量,然后变量值对应你在其他盘的路径仓库
文件夹中解压出来的gradle-版本号文件夹,再把最上面Gradle user home改成仓库文件夹,
下面的Use Gradle from改为gradle-版本号文件

然后打开文件夹选取解压出来的gradle-7.3.3
在这里插入图片描述
最终更改为如下图所示,第一步就完成了:
在这里插入图片描述

然后将你的settings.gradle文件中的内容改成下面国内镜像源。第二步完成。

pluginManagement {
    repositories {
        maven { url=uri ("https://jitpack.io") }
        maven { url=uri ("https://maven.aliyun.com/repository/releases") }
//        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url=uri ("https://maven.aliyun.com/repository/google") }
        maven { url=uri ("https://maven.aliyun.com/repository/central") }
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
        maven { url=uri ("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url=uri ("https://jitpack.io") }
        maven { url=uri ("https://maven.aliyun.com/repository/releases") }
//        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url=uri ("https://maven.aliyun.com/repository/google") }
        maven { url=uri ("https://maven.aliyun.com/repository/central") }
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
        maven { url=uri ("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
    }
}
rootProject.name = "first_demo"    //这里是包名,包名不一样的注意记得改这里
include ':app'

然后还需要下载安卓的虚拟机,下载这玩意有个巨坑,TM的直接给你放C盘去了,而且还不提醒你,而且这玩意大小随随便便8,9G,而且后面还会随着项目增加。
右侧栏Device Manage->Create device->选择你想要创建的机型。
在这里插入图片描述
创建完成后,我们直接修改他的位置
在C:\Users\(你的电脑账户).android\avd中找到.avd的文件夹,把这个文件夹移到你想放的其他盘的位置,然后更改.ini文件中的path路径指向你放的位置。
例如,我把它放在了我放android的程序的其中一个新建文件夹中。
在这里插入图片描述

工程目录结构

在这里插入图片描述

1.资源文件…/main/res/…

drawable:存储所有与图形相关的资源文件。如图标,背景等视觉元素。

layout:定义用户界面(UI)的布局结构。即页面组件的布局结构.

values:存储应用所需的各类静态值资源,通过 XML 统一管理。

values内的.xml文件:
strings.xml:定义文本内容。
colors.xml:定义颜色值。
styles.xml:定义主题和样式。
dimens.xml:定义尺寸值。
themes.xml:扩展 Material Design 主题。

xml:存放通用的 XML 配置文件(非布局或图形资源),如(网络,设置等)。

其余前缀名跟上诉某些名字相同但加了-后缀有所变化的文件夹,是不同版本和不同尺寸下的资源文件夹。

2…main/java/com.example.first_demo/…

com.example.包名
默认MainActivity.java

package com.example.first_demo;   //包声明
import androidx.appcompat.app.AppCompatActivity;    //导入android中的AppCompatActivity类
import android.os.Bundle;   //导入Bundle,用于存储和传递数据

public class MainActivity extends AppCompatActivity {     //继承AppCompatActivity

    @Override//重写Activity的生命周期
    protected void onCreate(Bundle savedInstanceState) {//onCreate()函数当该Activity类创建时调用
        super.onCreate(savedInstanceState);//初始化父类
        setContentView(R.layout.activity_main);//设置布局UI,R.layout.activity_main
    }
}

Bundle saveInstanceState,用于保存销毁前的临时数据。首次运行为NULL,再次运行会保留上次销毁前通过saveInstanceState保存的数据。

3.安卓配置文件 AndoridManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"   <!--android命名空间-->
    xmlns:tools="http://schemas.android.com/tools"     <!--开发工具包命名空间-->
    package="com.example.first_demo">     <!--包名-->

    <application
        android:allowBackup="true"      <!--是否允许系统备份-->
        android:dataExtractionRules="@xml/data_extraction_rules"  <!--数据导出规则-->
       android:fullBackupContent="@xml/backup_rules"      <!--自动备份包含/排除规则-->
        android:icon="@mipmap/ic_launcher"      <!--桌面图标-->
        android:label="@string/app_name"      <!--软件名字-->
        android:roundIcon="@mipmap/ic_launcher_round"    <!--圆角图标-->
        android:supportsRtl="true"     <!--是否支持从右到左-->
        android:theme="@style/Theme.First_demo"   <!--应用默认主题-->
        tools:targetApi="31">    <!--目标API级别-->
        <activity
            android:name=".MainActivity"<!--Activity类名(java类名)-->
            android:exported="true"><!--是否允许启动此Activity-->
            <intent-filter><!--意图过滤器,定义Activity的启动方式-->
                <action android:name="android.intent.action.MAIN" />    <!--表示这里是该程序的主入口-->
                <category android:name="android.intent.category.LAUNCHER" /><!--表示这里是该程序在系统的启动图标-->
            </intent-filter>
        </activity>
    </application>
</manifest>

AndoridManifest.xml是程序软件的核心配置文件, Android 系统启动和管理应用的唯一入口。它定义了应用的基本信息、组件、权限、硬件需求等。
所有四大组件(Activity、Service、BroadcastReceiver、ContentProvider)必须在此注册,否则系统无法识别它们。

4.builde.gradle

一个安卓工程文件中有两个build.gradle,分别负责项目级配置和模块级配置。
根目录gradle:

/ Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {  
// 声明插件但不立即应用(不生效)
    id 'com.android.application' version '7.2.1' apply false
    id 'com.android.library' version '7.2.1' apply false
}

task clean(type: Delete) {
// 指定删除目标路径:根项目目录下的build文件夹
    delete rootProject.buildDir
}

app下模块级gradle:

plugins {
    id 'com.android.application'                //声明这是一个应用模块
}

android {
//编译设置
    compileSdk 32       //使用编译的sdk版本

    defaultConfig {             //默认设置
        applicationId "com.example.demo1"              //应用唯一标识(包名)
        minSdk 28                      //能兼容的最小安卓版本
        targetSdk 32                  //目标适配的安卓版本
        versionCode 1            //内部版本号
        versionName "1.0"     //用户可见的版本号

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
    	// 设置Java版本为8(兼容旧设备)
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    //声明第三方库的依赖或模块
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

每当我们添加依赖时,会看到dependencies中增加相应的添加的implementation语句。

5.settings.gradle gradle配置文件

pluginManagement {      //管理插件的下载来源(仓库)
    repositories {//定义插件依赖的仓库
        maven { url=uri ("https://jitpack.io") }
        maven { url=uri ("https://maven.aliyun.com/repository/releases") }
//        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url=uri ("https://maven.aliyun.com/repository/google") }
        maven { url=uri ("https://maven.aliyun.com/repository/central") }
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
        maven { url=uri ("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {   //管理全局依赖仓库
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)//禁止模块单独定义仓库
    repositories {//定义全局依赖仓库
        maven { url=uri ("https://jitpack.io") }
        maven { url=uri ("https://maven.aliyun.com/repository/releases") }
//        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url=uri ("https://maven.aliyun.com/repository/google") }
        maven { url=uri ("https://maven.aliyun.com/repository/central") }
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin") }
        maven { url=uri ("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
    }
}
rootProject.name = "first_demo"        //设置跟项目名称
include ':app'     //定义项目模块。该项目包含了哪些模块。

settings.gradle 是 Gradle 构建系统的核心配置文件,主要用于定义项目的整体结构和全局配置。它在项目的初始化阶段被读取和执行,决定了哪些模块(子项目)参与构建,并管理项目的全局设置。

总结

安卓的工程文件主要分为资源文件,代码文件和配置文件。
资源文件往往是背景图片,UI,布局等元素。
代码文件实现程序的具体逻辑。
其中配置文件中又有安卓程序的配置文件和gradle配置文件,gradle配置文件常常是开发的时候使用的用于加载外部依赖项,负责整个构建流程(编译、打包、签名、混淆等)。安卓程序的配置文件配置安卓程序的入口和程序所包含的各模块。

posted @ 2025-04-16 21:10  Y0417  阅读(2)  评论(0)    收藏  举报  来源