当前位置: 首页 > news >正文

Android studio2024的第一个安卓项目

目录

一、创建项目

1、创建Empty Views Activity类型项目

2、Android项目结构解析

manifests 目录:

Gradle Scripts目录

3、创建安卓应用

二、测试

1、模拟器测试效果

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.xml 、 ic_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重新构建成功。

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

相关文章:

  • 使用Python建立双缝干涉模型
  • Linux:shell运行原理+权限
  • hutool日期转换
  • 事务隔离级别详解
  • 蓝桥杯 好数【暴力、基础知识】
  • ubnetu 服务器版本常用端口和开放的端口对应的应用
  • 基于YOLOV8的中草药识别检测系统(包含数据集+PyQt5界面+系统代码)
  • [每周一更]-(第139期):从FRP认识内网穿透及反向代理
  • python的filter()、map()、reduce()函数测试
  • C 语言 - 指针与const复杂声明完全掌握 | 右左法则详解与实践指南
  • ES6变量声明:let、var、const全面解析
  • sudo snap升级报错
  • 源码编译安装Nginx
  • tensorflow-gpu==2.6对应的 transformers 版本
  • AI Agent
  • 蓝桥杯C++组部分填空题
  • 如何为C++实习做准备?
  • Samtec行业科普 | 人工智能嵌入式解决方案
  • Mitosis:跨框架的UI组件解决方案
  • Java 与 LibreOffice 集成开发指南
  • 什么网站做免单衣服/百度公司招聘官网
  • 云主机做网站域名打不开/平台推广引流怎么做
  • 陕西省建设厅网站安全员报名/石家庄seo关键词
  • 中山做网站建设联系电话/百度平台客服电话
  • 公司网站优势/网络推广外包要多少钱
  • 重庆seo团队/aso如何优化