Android Studio SDKGradleJDK等工具的正确使用

AS在安装使用过程中可能会占用C盘大量空间,对于C盘容量本来就小的人来说非常不友好,其实我们可以自定义安装路径

software development kit安卓软件开发包

Android SDK是一种免费的专门编程语言,允许您创建Android应用程序。Android SDK由谷歌为其Android平台开发,对于移动应用程序开发人员来说是一个方便的程序,无论他们是初学者还是老手。截至2015年,Android SDK现已包含在Android Studio中,Android Studio是谷歌针对Android操作系统的官方集成开发环境(IDE)。

你的应用程序的起源故事

软件开发工具包或SDK是一个可安装包中的软件开发工具的汇编。您可以期待这些工具包主要拥有从头开始编写程序甚至测试程序所需的所有工具。因此,您可以找到编译工具、调试工具,也许还有软件框架。

当您想要开发特定于某个平台的程序时,往往需要SDK。这就是为什么像Android和iOS这样的操作系统都有自己的SDK进行优化的原因。因此,这对谷歌的安卓系统来说并不是什么新鲜事,它以其免费和开源的应用程序开发方式而广受欢迎。

标题中的所有内容

如果你打算创建自己的Android应用程序,这个工具包的名字恰如其分地命名为Android SDK,是你的首选程序。如今,你可以在安卓工作室的同时获得安卓SDK,这使得事情变得更加容易,因为它扩展了安卓SDK的原始编程语言支持。从Java到C++,您可以在Android Studio中轻松使用这些语言。然而,单独使用Android SDK还是有其优点的。

首先,当你可以测试你的项目时,它有自己的虚拟设备管理器或模拟器。Android SDK还支持其Android调试桥(ADB)的命令行功能,甚至还支持APK Analyzer的命令行版本。您可以找到用于调试等的基本工具,甚至可以找到始终与旧的Android版本向后兼容的依赖于平台的工具。甚至还有一些功能,如Google Play Billing和Google Play Licensing,一旦完成,将进一步支持您的应用程序。

独处时仍然有用

当谈到为Android开发时,最好使用官方开发工具包。然而,尽管Android SDK已经集成到Android Studio中,但您仍然可以单独使用它——尤其是当您需要使用不同于Android Studio的IDE时。也许唯一的缺点是,你需要不断更新Android SDK,因为与Android Studio相比,它不容易获得更新。不过,总而言之,这是安卓应用程序开发人员不能忽视的一个程序。

SDK默认安装位置

各种版本和NDK也会安装到这个路径

如果需要使用其他版本的ndk

请在ndk归档地址查找

NDK 修订历史记录  |  Android NDK  |  Android Developers

SDK版本选择性安装

通过选择图示的按钮,可以显示SDK的版本详情,

需要根据不同的CPU架构选择不同的sdk,正常手机要编译的apk,所以默认的平台就可以

SDK Tools

compileSdkVersion : 30,  //编译APK所使用的的SDK版本
buildToolsVersion: "30.0.3"   //编译APK是所使用的的SDK工具链版本
targetSdkVersion:33  //目标SDK版本,书写代码时不使用高于此版本的android特性
minSdkVersion:28  //最低兼容版本,上架应用商店之后,低于此版本的手机无法安装

gradle(用于同步依赖的各种库,包括第三方)

此路径也可以是自定义的,因为打开的项目多了,会有多个gradle的版本,占用空间也非常大

gradle版本

dependencies {classpath 'com.android.tools.build:gradle:4.0.1'
}

android studio的版本越高,默认的gradle版本也越高,需要根据自己的项目自行选择合适的gradle版本

Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers

settings.gradle

 文件位于项目的根目录下。此设置文件会定义项目级仓库设置,并告知 Gradle 在构建应用时应将哪些模块包含在内。多模块项目需要指定应包含在最终 build 中的每个模块。

build.gradle

Android 构建系统会编译应用资源和源代码,然后将它们打包成 APK 或 Android App Bundle 文件,供您测试、部署、签名和分发。

Android Studio 使用高级构建工具包 Gradle 来自动执行和管理构建流程,同时也允许您自行指定灵活的 build 配置。每项 build 配置均可定义各自的一组代码和资源,同时重复利用所有应用版本共用的部分。Android Gradle 插件与该构建工具包搭配使用,提供专用于构建和测试 Android 应用的流程和可配置设置。

Gradle 和 Android Gradle 插件独立于 Android Studio 运行。这意味着,您可以在 Android Studio 内、计算机上的命令行或未安装 Android Studio 的计算机(如持续集成服务器)上构建 Android 应用。

如果您不使用 Android Studio,可以学习如何从命令行构建和运行应用。无论您是从命令行、在远程计算机上还是使用 Android Studio 构建项目,构建过程的输出都相同。

顶层 build.gradle 文件位于项目的根目录下。它用于定义适用于项目中所有模块的依赖项。默认情况下,顶层 build 文件使用 plugins 代码块定义项目中所有模块共用的 Gradle 依赖项。此外,顶层 build 文件还包含用于清理 build 目录的代码。

模块级 build.gradle 文件位于每个 project/module/ 目录中,用于为其所在的特定模块配置 build 设置。您可以通过配置这些 build 设置提供自定义打包选项(如额外的 build 类型和产品变种),以及替换 main/ 应用清单或者顶层 build.gradle 或 build.gradle.kts 文件中的设置。

Gradle 属性文件

Gradle 还包含两个属性文件,它们位于项目的根目录下,可用于指定 Gradle 构建工具包本身的设置:

gradle.properties

您可以在其中配置项目全局 Gradle 设置,如 Gradle 守护程序的最大堆大小。如需了解详情,请参阅构建环境。

local.properties

为构建系统配置本地环境属性,其中包括:

  • ndk.dir - NDK 的路径。此属性已被废弃。NDK 的所有下载版本都会安装在 Android SDK 目录下的 ndk 目录中。
  • sdk.dir - SDK 的路径。
  • cmake.dir - CMake 的路径。
  • ndk.symlinkdir - 在 Android Studio 3.5 及更高版本中,创建指向 NDK 的符号链接,该符号链接的路径可比 NDK 安装路径短。

注意local.properties 文件专用于 Android Gradle 插件专用的属性。在此文件中添加您自己的值可能会导致出现问题。如果您需要定义自己的本地属性,请创建一个单独的属性文件并手动加载该文件。

将项目与 Gradle 文件同步

当您在项目中对 build 配置文件进行更改时,Android Studio 会要求您同步项目文件,以便它导入 build 配置更改并执行一些检查以确保您的配置不会造成 build 错误。

如要同步项目文件,请点击做出更改后显示的通知栏中的 Sync Now(如图 2 所示),或者点击菜单栏中的 Sync Project 图标 。

如果 Android Studio 发现您的配置有任何错误(例如,您的源代码使用了只有在 compileSdkVersion 以上的 API 级别中才会提供的 API 功能),Messages 窗口就会说明相应的问题。

gradle tools版本

在gradle/gradle-wrapper.properties文件中申明

#Mon Sep 06 16:19:49 CST 2021
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip

gradle和gradle tools的版本需要匹配才能正确同步项目,个版本gradle所对应的tools版本在官网查看

常见问题

常见的布局无法预览,代码中的库文件报错或者找不到,基本都是gradle同步失败导致。

如果代码没有任何报错,布局也可以正常预览,但是写布局代码时有些属性无法联想,此时需要删掉android studio的缓存文件,然后重启android studio

缓存文件的位置

C:\Users\Admin\AppData\Local\Google\AndroidStudio2022.2
C:\Users\Admin\AppData\Roaming\Google\AndroidStudio2022.2
C:\Users\Admin\.android

JDK的选择

目前最新版本默认带的JDK是17版本,过高的的jdk版本,可能无法兼容旧项目

更换jdk在这里

也可以在文件gradle.properties中添加代码

org.gradle.java.home=D\:\\SoftWare\\Android Studio\\jbr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/159997.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day1力扣打卡

打卡记录 最长相邻不相等子序列 I(脑筋急转弯) 链接 思路:形如 11100110001 要达到最大,必须在重复数字选出一个,即在111中取一个1,在00中取一个0,以此类推最终便得到最长相邻不相等子序列。 c…

【Linux】shell运行原理及权限

主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法:算法专栏 C头疼…

Linux入门攻坚——3、基础命令学习-文件管理、别名、glob、重定向、管道、用户及组管理、权限管理

文件管理:cp,mv,rm cp:复制命令,copy cp [OPTION]... [-T] SRC DEST cp [OPTION]... SRC... DIRECTORY cp [OPTION]... -t DIRECTORY DEST... 如果目标不存在,新建DEST,并将…

笔试算法题ACM模式输入输出处理

1. Python input之后得到的全是string类型,数字需要用int(n)进行转换 读取单个数 n int(input()) 读取一串数组: nums [int(n) for n in input().split()] (nums是个数组) 读取字符串: stringinput().split(…

qt笔记之qml下拉标签组合框增加发送按钮发送标签内容

qt笔记之qml下拉标签组合框增加发送按钮发送标签内容 code review! 文章目录 qt笔记之qml下拉标签组合框增加发送按钮发送标签内容1.运行2.文件结构3.main.qml4.main.cc5.MyClass.h6.MyClass.cc7.CMakeLists.txt8.ComboBox.pro9.qml.qrc 1.运行 2.文件结构 3.main.qml 代码 …

【1314. 矩阵区域和】

目录 一、题目描述二、算法思想三、代码实现 一、题目描述 二、算法思想 三、代码实现 class Solution { public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {//先预处理数组int nmat.size();//行int mmat[0].size();…

python--短路运算,把0、空字符串和None看成 False,其他数值和非空字符串都看成 True

代码 print(3 and 4 and 5) # 5 print(5 and 6 or 7) # 6 4 > 3 and print(‘hello world’) # 输出hello world 注释&#xff1a; 在逻辑运算中&#xff0c;不一定逻辑运算符的两边都是纯表达式。也可以是数值类型的数据。 Python把0、空字符串和None看成 False&#xff…

STM32 ---- 再次学习STM32F103C8T6/STM32F409IGT6

目录 一、环境搭建及介绍 关于STM32基础介绍 新建工程 外设案例 LED流水灯 蜂鸣器 上拉电阻和下拉电阻知识 电压比较器 c语言基础知识 类型、结构体、枚举 类型int8_t int16_t int32_t 宏替换 #define 和typedef用法 结构体两种填充方法 和 命名规则 枚举用法 常用…

FPGA复习(功耗)

减小功耗 就得减小电流 电流和CF有关&#xff08; C: 电容&#xff08;被门数目和布线长度影响&#xff09; F:时钟频率&#xff09; 方法大纲 减小功耗&#xff1a;1 时钟控制 2输入控制 3减小供电电压 4双沿触发器 5修改终端 同步数字电路降低动态功耗&#xff1a;动态禁止…

langchain callback学习

文章目录 一.quickstart二.Async callbacks三.把回调消息写入文件如何提取出来正则表达式官方的方法 一.quickstart 官方文档在此&#xff1a;https://python.langchain.com/docs/modules/callbacks/ 发现自己之前用langchain都是纯纯只是跑通&#xff0c;要能灵活使用还是得深…

猫头虎博客带您使用Markdown编辑器

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

亚马逊云科技正式发布Amazon DataZone,一项新的数据管理服务

Amazon DataZone现已正式发布。作为一项新的数据管理服务&#xff0c;它能够在组织中对数据生产者和消费者之间产生的数据进行编目、发现、分析、共享和管理。 早在2022年的亚马逊云科技re:Invent上&#xff0c;就预告了Amazon DataZone产品的发布&#xff0c;并在2023年3月对其…

文件路径操作

避开-转义字符 python文件路径导致的错误常常与“\”有关&#xff0c;因为在路径中的“\”常会被误认为转义字符。 所以在上述路径中&#xff0c;\table\name\rain中的\t,\n,\r都易被识别为转义字符。 解决的办法主要由以下三种&#xff1a; #1 前面加r表示不转义 pathr&quo…

多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head

个人论文精读笔记&#xff0c;主要是翻译心得&#xff0c;欢迎旁观&#xff0c;如果有兴趣可以在评论区留言&#xff0c;我们一起探讨。 Paper: https://arxiv.org/pdf/2111.12933.pdf Code: https://github.com/Alibaba-MIIL/ML_Decoder 文章目录 0. 摘要1. 介绍2. 方法2.1 Ba…

Postman简单使用

文章目录 一.接口测试流程二、Postman接口测试工具三、接口关联四、全局变量和环境变量 一.接口测试流程 拿到API接口文档&#xff08;从开发拿或者抓包获取&#xff09;&#xff0c;熟悉接口业务&#xff0c;接口地址&#xff0c;错误码等等 编写接口的测试用例以及评审 编写…

1.SpringSecurity -快速入门、加密、基础授权

SpringSecurity简介 文章目录 SpringSecurity简介一、基本概念1.1 认证&#xff08;Authentication&#xff09;方式1.2 会话(Session)介绍1.3 授权(Authorization)介绍1.4 RBAC 二、SpringSecurity入门2.1 快速入门2.1.1 Maven坐标2.1.2 接口2.1.3 源码 2.2 配置文件配置用户名…

Bugku sql注入 基于布尔的SQL盲注 经典题where information过滤

目录 绕过空格 /**/绕过 ()绕过 回车绕过 &#xff08;键按钮&#xff09;绕过 等号绕过 绕过&#xff0c;&#xff08;逗号&#xff09;使用substr 下面存在基本绕过方式 注释符绕过 /**/绕过 #绕过 /*注释内容*/绕过 //注释绕过 大小写绕过 绕过information过…

14-k8s-基本存储之EmptyDir、HostPath、NFS

文章目录 一、相关概念二、EmptyDir存储三、HostPath存储四、NFS存储 一、相关概念 概述 Volumn定义在Pod上&#xff0c;然后被该Pod里面的多个容器挂载到具体的文件目录下。实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命周期不和Pod中的单个容器的…

MySQL逻辑架构

文章目录 逻辑架构剖析1. 连接层2. 服务层3. 引擎层4. 存储层 SQL执行流程1. MySQL中的 SQL执行流程&#xff08;理论&#xff09;2. MySQL8中的 SQL 执行流程&#xff08;实践&#xff09;确认profiling 是否开启多次执行相同SQL查询查看profiles查看profile 3. SQL语法顺序 数…

MFC-对话框

目录 1、模态和非模态对话框&#xff1a; &#xff08;1&#xff09;、对话框的创建 &#xff08;2&#xff09;、更改默认的对话框名称 &#xff08;3&#xff09;、创建模态对话框 1&#xff09;、创建按钮跳转的界面 2&#xff09;、在跳转的窗口添加类 3&#xff0…