Android studio2024的第一个安卓项目

目录

一、创建项目

[1、创建Empty Views Activity类型项目](#1、创建Empty Views Activity类型项目)

2、Android项目结构解析

[manifests 目录:](#manifests 目录:)

[Gradle Scripts目录](#Gradle Scripts目录)

3、创建安卓应用

二、测试

1、模拟器测试效果

[2、连接真机,然后直接选择真机运行即可(点击Run或Shift + F10运行)](#2、连接真机,然后直接选择真机运行即可(点击Run或Shift + F10运行))

三、项目过程的问题解决

1、问题:启动后,显示默认界面,不是自定义布局界面


一、创建项目

1、创建Empty Views Activity类型项目

2、Android项目结构解析

manifests 目录:
  • AndroidManifest.xml 是 Android 应用的配置中心,定义了应用的结构、行为和权限,是 Android 系统理解和管理应用的基础。每个 Android 应用都必须包含此文件。

java 目录:

  • MainActivity是一个 Activity 类的子类,负责管理用户界面和用户交互。开发者可以定义应用的 UI 控件的各种响应函数,以及其他函数。(主代码)

  • ExampleInstrumentedTest 是用于在真实设备或模拟器上进行的仪器测试,主要测试 UI 和应用功能。它可以模拟用户的操作,例如点击按钮、输入文本等。(测试代码)

  • **ExampleUnitTest**是一个单元测试类,单元测试主要用于验证代码的逻辑和算法是否正确。在本地 JVM 上运行的单元测试,主要测试应用的逻辑部分(测试代码)

res 目录:

  • drawable目录 用于存放图形资源,ic_launcher_background.xmlic_launcher_foreground.xml两个文件通常用于定义应用的启动图标的背景和前景部分
  • layout 目录 用于存放应用的布局文件,定义了 UI 组件的结构和排列方式。activity_main.xml是应用主活动的布局文件,通常包含按钮、文本框等 UI 元素的定义。

  • mipmap 目录用于存放应用的启动图标,通常包含不同分辨率的图标,以适应不同设备的屏幕密度。使用 mipmap 目录可以确保图标在不同设备上显示清晰。

  • values 目录用于存放各种资源的 XML 文件,通常包括颜色、字符串、样等。colors.xml 定义应用中使用的颜色资源,strings.xml定义应用中使用的字符串资源。

  • xml 目录用于存放其他自定义 XML 文件(如动画配置、自定义视图布局等)

Gradle Scripts目录
  • 与项目构建相关的 Gradle 脚本目录,包含构建配置文件(如 build.gradle),配置项目构建参数。

Android项目结构解析参考:

Android Studio 项目结构分析-CSDN博客https://blog.csdn.net/m0_73972962/article/details/146318933Android项目结构讲解【超详细】-CSDN博客https://blog.csdn.net/qq_40926887/article/details/136168717

3、创建安卓应用

应用主要包括两个部分:

  • UI界面设计:在res/layout/activity_main.xml中设计控件
  • 控件响应函数及其他函数:在java/com/example/myapplication22222/MainActivity.java中 设计响应函数

示例:

activity_main.xml

设计了一个文本控件TextView和一个Button按钮(响应函数为android:onClick="Welcome")

采用LinearLayout设计垂直布局(android:orientation="vertical")

TextView和Button的text属性通过在中进行定义

android:text="@string/welcome_message"

android:text="@string/button_text"

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/welcome_message"  
    android:id="@+id/tv_android"/>  <!-- text属性在res/values/strings.xml定义 -->
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:id="@+id/bt_android"
        android:onClick="Welcome"
        android:layout_gravity="center"/>  <!-- text属性在res/values/strings.xml定义 -->


</LinearLayout>

strings.xml定义了activity_main.xml中两个控件的text属性

复制代码
<resources>
    <string name="app_name">My Application22222</string>
    <string name="welcome_message">学习安卓,你准备好了吗?</string>
    <string name="button_text">准备好了</string>
</resources>

MainActivity.java中添加了Button响应函数Welcome

复制代码
package com.example.myapplication22222;

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import android.util.Log;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }
    public void Welcome(View view)  //添加控件函数-SHI
    {
        Toast.makeText(this, "欢迎来到安卓世界", Toast.LENGTH_SHORT).show();
    }
}

注意:手动构建项目,不然启动后可能显示默认布局,不是自定义布局activity_main.xml

其他问题:由于我安装的Java\jdk-23版本,所以我启动应用进行构建项目时存在问题,导致在模拟

器运行时,一直显示的默认界面,而不是我自定义的布局。具体见第三点

解决方法:在build.gradle.kts文件中修改java版本为11

复制代码
    compileOptions {
//        sourceCompatibility = JavaVersion.VERSION_1_8
//        targetCompatibility = JavaVersion.VERSION_1_8
        sourceCompatibility = JavaVersion.VERSION_11 // 修改为 11 或 17
        targetCompatibility = JavaVersion.VERSION_11
    }

二、测试

1、模拟器测试效果

创建模拟器,然后运行

测试效果:

2、连接真机,然后直接选择真机运行即可(点击Run或Shift + F10运行)

三、项目过程的问题解决

1、问题:启动后,显示默认界面,不是自定义布局界面

解决方法:

首先adb devices查看连接的设备

adb shell dumpsys activity top 查看是否使用了自定义布局

adb shell pm list packages 查看安装的包

使用./gradlew assembleDebug 构建 Android 应用调试版本的命令

我是用**./gradlew assembleDebug**构建时发现了问题:Java compiler version 23 has deprecated support for compiling with source/target version 8.(即java版本为23,不适用于目标版本8)

复制代码
Starting a Gradle Daemon, 1 stopped Daemon could not be reused, use --status for details


> Task :app:compileDebugJavaWithJavac
Java compiler version 23 has deprecated support for compiling with source/target version 8.
Try one of the following options:
    1. [Recommended] Use Java toolchain with a lower language version
    2. Set a higher source/target version
    3. Use a lower version of the JDK running the build (if you're not using Java toolchain)
For more details on how to configure these settings, see https://developer.android.com/build/jdks.
To suppress this warning, set android.javaCompile.suppressSourceTargetDeprecationWarning=true in gradle.properties.
璀﹀憡: [options] 婧愬€?8 宸茶繃鏃讹紝灏嗗湪鏈潵鍙戣鐗堜腑鍒犻櫎
璀﹀憡: [options] 鐩爣鍊?8 宸茶繃鏃讹紝灏嗗湪鏈潵鍙戣鐗堜腑鍒犻櫎
璀﹀憡: [options] 瑕侀殣钘忔湁鍏冲凡杩囨椂閫夐」鐨勮鍛? 璇蜂娇鐢?-Xlint:-options銆?
<3 涓鍛?[0K--> 85% EXECUTING [1m 35s]
<
BUILD SUCCESSFUL in 1m 50s

解决方法:我询问了AI,让我在build.gradle.kts文件中修改java版本为11或者17.

复制代码
    compileOptions {
//        sourceCompatibility = JavaVersion.VERSION_1_8
//        targetCompatibility = JavaVersion.VERSION_1_8
        sourceCompatibility = JavaVersion.VERSION_11 // 修改为 11 或 17
        targetCompatibility = JavaVersion.VERSION_11
    }

修改后,先同步构建项目,然后再用**./gradlew assembleDebug**重新构建成功。

最后重新创建一个新的模拟器,就运行成功啦,运行效果在**"二、测试"**中有展示。

相关推荐
jiet_h1 小时前
使用 Ktor 构建现代 Android 应用的后端服务
android
zilong_zzz4 小时前
文件IO4(提高LCD显示效率/BMP图像原理与应用)
android
_一条咸鱼_4 小时前
大厂Android面试秘籍:Activity 窗口管理模块(四)
android·面试·android jetpack
无极程序员7 小时前
远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件
android·java·运维·服务器·php
快乐1018 小时前
Mac下FFmpeg编译和集成
android
_一条咸鱼_8 小时前
Android大厂面试秘籍:不同Android系统版本特性分析
android·面试·android jetpack
casual_clover9 小时前
Android 中如何配置 targetSdk 值
android
zd8451015009 小时前
安卓开发提示Android Gradle plugin错误
android
pengyu11 小时前
【Flutter 状态管理 - 贰】 | 提升对界面与状态的认知
android·flutter·dart