返回顶部
首页 > 资讯 > 移动开发 >了解安卓,了解JDK、SDK、NDK,了解gradle
  • 894
分享到

了解安卓,了解JDK、SDK、NDK,了解gradle

androidjavaandroidstudio 2023-09-02 21:09:47 894人浏览 独家记忆
摘要

Android是一个开源的,基于linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑。 安卓开发环境: 安卓开发所使用的语言是JAVA或Kotlin,底层操作使用C\c++

Android是一个开源的,基于linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑。

安卓开发环境:

安卓开发所使用的语言是JAVA或Kotlin,底层操作使用C\c++
  安卓开发的工具主要有Eclipse或idea、Android Studio。其中Android Studio是官方指定的开发工具,推荐使用。而Eclipse目前(2020年2月14日)谷歌不再支持。推荐使用IDEA或Android Studio。
注意!无论是设置SDK的路径或者是设置你的项目或者是其它的,都不能使用中文!也尽可能的去不用中文!

jdk

JDK
  JDK是JAVA语言的编译器,全称为Java Development Kit,即Java开发工具包。因为Android应用层采用Java开发,其运行在Java虚拟机(Dalvik虚拟机,与JVM虚拟机不同)上。
  JDK建议安装1.8及其以上版本,因为不同的Android版本对JDK有相应的要求,例如Android 5.0默认使用JDK1.7编译,Android 7.0默认使用JDK1.8编译。
  如果JDK为1.6或者1.78,而SDK为最新版本,就可能会导致一下问题。
  (1)创建项目后,浏览布局文件设计图时会报错Android N requires the IDE to be running with Java 1.8 or later.
  (2)编译项目失败,提示错误 com/android/dx/command/dexer/Main: Unsupported major.minor version 52.0.
  (3)运行App失败,提示错误complieSdkVersion ‘android-24’ requires JDK 1.8 or later to compile.

SDK

SDK是Android应用的编译器,全称为 Software Development Kit,即软件开发工具包。SDK提供了App开发的常用工具合集。
在这里插入图片描述
其中主要包括:
add-ones 目录: 存放Google提供的服务扩展包。(Eclipse存在,Android Studio已经移动到其它地方去了。)
build-tools 目录: 存放各版本Android的各种编译工具。
docs 目录: 存放开发说明文档。
extras目录: 存放Android附加支持文件。主要有Android 的 support 支持包,Google 的几个工具和驱动、Intel 的 IntelHaxm。
platfORMs 目录: 存放各个版本的Android资源文件。包括字体、res 资源、模板等。
platform-tools和tools 目录,存放常用的开发辅助工具。十分重要。
samples 目录:存放各版本Android常用功能的demo 源码
sources 目录: 存放各版本Android的api开发接口源码。
system-images 目录:存放模拟器各版本的系统镜像与管理工具。
emulator 目录: 存放模拟器软件。
patcher:存放补丁文件夹。(我也不知道是啥,翻译过来就是补丁)
cmake:存放跨平台的编译工具,用来编译C/C++代码。
ndk : 存放NDK开发工具。
fonts:存放字体。
licenses:存放SDK的验证,文件中存放着SKD的校验码。
lldb:存放c/c++调试器,用于NDK的调试。
skins:皮肤文件夹,存放一些虚拟机的效果图片。
(注:图片中仅仅是刚安装上的SDK。后面下载会会新添一些文件。例如安装了NDK的话就会存在ndk文件夹。)

NDK

NDK是C\C++代码的编译器,全称Native Development Kit。即原生开发工具包。该工具主要提供JNI接口使用,先将C\C++代码编译成so库,然后由Java代码通过JNI接口调用so库。
  因为Java字节码极其容易反编译查看到源代码,所以利用C\C++编译出来的so库可以存放一些核心代码,so库与Java字节码更难破解。且C\C++运行速度比Java快,可以编写一些处理量比较大、耗时的数据。(例如,音频,视频的处理运算。

gradle

简单了解Gradle

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置。其主要用于描述Android开发所需要的环境,管理第三方jar包,第三方扩展库,jar依赖关系等。

了解开发App的工程结构

Android Studio的工程创建分成了两个层次。
第一层次是Project(项目),指定了当前项目的工作空间。其相当于Eclipse的workspace。
Project结构图
  从图中可以看到,该项目下有4个文件夹,其中.gradle用来保存gradle的依赖信息,.idea用来保存开发工具的设置信息。
  而app是我们主要开发的文件夹,gradle是存放gradle的文件。我们只要关心app文件夹即可。 不过呢,还是要需要了解一些其根目录下的一些文件。
.gitignore 文件:指明git忽略文件清单,其指定的文件夹不会上传到仓库中。

Account.iml 文件:是项目用于保存开发工具信息的文件。其文件名是项目名。

build.gradle 文件:项目级编译规则文件,用于描述整个项目工程的编译规则。

proguard-rules.pro 文件:用于描述Java文件的代码混淆规则。

gradle.properties 文件:用于配置编译工程的命令行参数,一般无需改动。

gradlew 文件: Gradle Wrapper,用于是Gradle本身的安装、部署。其为Linux 下可执行脚本。

gradlew.bat 文件: Gradle Wrapper,用于是Gradle本身的安装、部署。其为windows下可执行脚本。

local.properties 文件: 用于描述开发者本机的环境配置。SDK、NDK等指定路径就该文件中。

settings.gradle 文件:配置哪些模块一起编译。初始内容为include ‘:app’,表示只编译App模块。
第二层次是Module(模块),指定了当前项目中的模块,其中一个模块指一个单独的App工程。但也可以通过模块化编程合为一个App。其相当于Eclipse的project。
  其实app文件夹就是一个Module。当我们在创建一个新的Project时,就创建了一个默认的Module。其就是app文件夹。
在这里插入图片描述
从上方Module结构图中,我们可以看到:
build 目录:存放编译构建后的文件。
libs 目录:存放第三方jar包。
src 目录:源文件。
build.gradle 文件:当前Module的配置文件。
其中src目录和build.gradle文件比较重要。
下面会仔细讲解。

(app/src)

在这里插入图片描述
在这里插入图片描述

src文件夹包含了androidTest文件夹、main文件夹(重要!)、test文件夹。
androidTest 目录:安卓单元测试。其主要涉及Android仪器的单元测试。
main 目录:开发目录。
test 目录:单元测试。其不包含安卓的框架测试。
其中androidTest和test主要包含了java目录,其中包含着相对应的测试。

(app/src/main)

在这里插入图片描述
而main是我们主要的开发目录。主要包括如下:
(1) java 目录:主要存放java文件。其目录下是包名。

(app/src/main/res)

在这里插入图片描述
(2) res 目录: 安卓资源文件夹。主要存放布局资源,图片资源等等。
res\drawable 目录: 存放图形描述文件与用户图片。其中后面跟随着的hdpi、mdpi、xhdpi、xxhdpi等等都是指图片的分辨率,相对应的图片应该放入相对应的文件夹中。
res\layout 目录:存放app页面的布局文件。
res\mipmap 目录:app的图标文件夹。存放app的图标。其同drawable文件夹一样,都有着相对应的分辨率文件夹。
res\values 目录:存放的是一些常量定义文件。例如字符串常量定义string.xml,像素常量dimens.xml、颜色常量colors.xml,样式风格styles.xml等。

(3) AndroidManifest.xml 文件:安卓清单文件。(重要!指定其内部的运行配置!)

AndroidManifest.xml部分说明:
  AndroidManifest.xml 用于指定App内部的运行配置,其是一个XML描述文件,根节点为manifest,根节点的package 指定了该App的包名。manifest下面又有若干个子节点,分别说明如下。
app的AndroidManifest.xml文件内容详解如下:

<manifest xmlns:android="Http://schemas.android.com/apk/res/android"    xmlns:dist="http://schemas.android.com/apk/distribution"    package="com.palz.account">    <dist:module dist:instant="true" />            <application                 android:icon="@mipmap/ic_launcher"                android:label="@string/app_name"                android:roundIcon="@mipmap/ic_launcher_round"                android:supportsRtl="true"                android:theme="@style/AppTheme">                <activity android:name=".MainActivity">                        <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            intent-filter>        activity>    application>manifest>

其中,AndroidManifest.xml能够包含的节点有:

<manifest>    <dist:module>        <dist:delivery>          <dist:install-time>            <dist:conditions>                            <dist:device-feature />            dist:conditions>          dist:install-time>        dist:delivery>      dist:module>    <uses-permission />    <permission />    <permission-tree />    <permission-group />    <instrumentation />    <uses-sdk />    <uses-configuration />     <uses-feature />     <supports-screens />     <compatible-screens />     <supports-gl-texture />     <application>        <activity>            <intent-filter>                <action />                <category />                <data />            intent-filter>            <meta-data />        activity>        <activity-alias>            <intent-filter>. . .intent-filter>            <meta-data />        activity-alias>        <service>            <intent-filter>. . .intent-filter>            <meta-data/>        service>        <receiver>            <intent-filter>. . .intent-filter>            <meta-data />        receiver>        <provider>            <grant-uri-permission />            <meta-data />            <path-permission />        provider>        <uses-library />    application>manifest>

下面介绍几个常用的标签节点:
manifest 标签:
  manifest标签是AndroidManifest.xml 的根节点标签。其常用于设置与项目相关的一些属性。例如比如用于唯一标识应用程序的 package 属性,用于记录应用程序版本的 Android:versionName 属性等等。
  其中xmls:android属性必须为http://schemas.android.com/apk/res/android,
  xmlns:dist属性必须为http://schemas.android.com/apk/distribution。
其用于表示命名空间。
application 标签:
   manifest 标签中有且只有一个 application 标签。其用于指定应用程序的各种元数据(包括标题、图标和主题)。也可以作为活动(Activity),服务(Service),内容提供器(Provider)和广播接收器(Broadcast Receiver)标签的容器,用于指示应用程序组件。
uses-permission 标签:
  uses-permission标签用于指明程序会使用到的权限。而这些权限是应用正常运行所必须的。。
permission 标签:
  permission 标签用于指明其它程序访问你的组件时所需要的权限,当你提供了其它功能给其它软件时,其它软件需要在清单文件(AndroidManifest.xml)中指明其permission才可以访问到你的组件功能或者数据。
5.instrumentation 标签:
  instrumentation 标签其指明了instrumentation 类的测试类。instrumentation 类提供一个框架,用来在应用程序运行时在活动或者服务上运行测试,可以通过它来监控应用程序及其与系统资源的交互。每当应用程序新添一个测试类时,需要为其新添一个节点。
app中所包含的目录介绍到这里。下面介绍一下啊app根目录下的几个文件:

build.gradle 文件:该文件用于App工程的编译规则。
.gitignore 文件: 该文件用于指明git忽略清单,其包含的文件不会上传到仓库中。
gradle.properties 文件:该文件用于配置编译工程的命令行参数,一般无需改动。
app.iml 文件:用来保存开发工具信息。该文件名是当前模块名。

其中最为重要的是build.gradle。下面简单的介绍一下build.gradle文件:
  build.gradle分为项目级别和模块级别,项目级别的我们一般无需改动,我们只需要关注模块级别的build.gradle即可。以下是一份当前我在制作app的build.gradle的文件:

apply plugin: 'com.android.application'//指明module的类型,com.android.application为程序,com.android.library为安卓库android {    compileSdkVersion 29//编译的SDK版本    buildToolsVersion "29.0.3"//编译的Tools版本    defaultConfig {        applicationId "com.palz.account"//应用程序的包名        minSdkVersion 15 //最低支持的目标版本        targetSdkVersion 29//当前最高支持的目标版本        versionCode 1 //版本号        versionName "1.0"//版本名        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//安卓测试库    }    buildTypes {//build类型        release {//发布            minifyEnabled false //是否开启混淆代码功能            //指定代码混淆规则文件的文件名            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }}dependencies {//指定App的编译信息    implementation fileTree(dir: 'libs', include: ['*.jar'])//指定引用jar包的路径    implementation 'androidx.appcompat:appcompat:1.1.0'//引用appcompat库    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'//引用constrainlayout库    testImplementation 'junit:junit:4.12'//指定单元测试编译用的版本号    androidTestImplementation 'androidx.test.ext:junit:1.1.1'//指定安卓测试编译用的版本号    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'//使用Espresso的进行测试的版本号}

Android Code Generator根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu类。

CodeGlance:右边快速预览代码,实现快速定位。

ECTranslation:翻译软件。

Android Studio实用插件集合

来源地址:https://blog.csdn.net/qq_45926254/article/details/129626766

--结束END--

本文标题: 了解安卓,了解JDK、SDK、NDK,了解gradle

本文链接: https://www.lsjlt.com/news/391430.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 了解安卓,了解JDK、SDK、NDK,了解gradle
    Android是一个开源的,基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑。 安卓开发环境: 安卓开发所使用的语言是JAVA或Kotlin,底层操作使用C\C++...
    99+
    2023-09-02
    android java android studio
  • Android开发的IDE、ADT、SDK、JDK、NDK等名词解释
    1. IDE: Intelligent Development Environm的简称。即智能开发环境。是一种开发工具。常用的IDE有adt-bundles和Android ...
    99+
    2022-06-06
    android开发 ide adt ndk sdk jdk Android
  • Qt安装安卓环境报错!!!解决方案!折磨了两天终于解决了!!!
    折腾了好久好久的Qt,原本配好的android sdk,在我更新组件后,居然又崩了!!!泪目,  出现的问题如下: ×Android SDK Command-line Tools run. ×Android Platform-Tools...
    99+
    2023-09-30
    android
  • Android开发之Gradle 进阶Tasks深入了解
    目录前言定义Taskregister与create的区别查找Task配置Task将参数传递给Task构造函数Task添加依赖Task排序Task添加说明跳过Task使用onlyIf使...
    99+
    2024-04-02
  • 了解Spring
    Spring-第一章 初始Spring Spring是应用了很多优秀的设计模式,对于项目的实现,提供了优秀的解决方法;Spring是一个轻量级(低侵入)MVC和逻辑代码框架 .  类与类之间的解耦合 IOC MVC 框架侵入  ...
    99+
    2020-10-30
    了解Spring
  • 一起了解了解MySQL存储引擎
    目录前言一、MySQL主要存储引擎:二、实例介绍它们(不同的存储引擎在存储表的时候的异同点)前言 在日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(...
    99+
    2024-04-02
  • 了解SQL server
    使用数据库的必要性1.结构化储存大量数据信息,方便用户进行有效的检索和访问。2.保持数据的一致性,完整性,降低数据冗余。3.满足应用的共享和完全方面的要求。 数据库的基本概念 1.数据描述事物的符号记录称为...
    99+
    2024-04-02
  • SQLserver2008,卸载过一次就安装不了了?求解= =
    我之前安装成功过然后后来它莫名其妙的连接不上数据库引擎然后我把它相关的文件删了,但是没清理注册表,后来重新安装还是连接不上,然后现在安装虽然成功但是是失败的,注册表我也清理过,求解 ...
    99+
    2024-04-02
  • anaconda安装好了但是用不了怎么解决
    如果你安装了Anaconda但无法使用,可以尝试以下解决方法: 检查环境变量:确保Anaconda的路径已添加到系统的环境变量中...
    99+
    2023-10-21
    anaconda
  • linux安装了搜狗但是用不了怎么解决
    要解决Linux上安装搜狗输入法但无法使用的问题,可以尝试以下几个步骤:1. 检查依赖:确保系统已安装必要的依赖。搜狗输入法常依赖于...
    99+
    2023-10-11
    linux
  • pycharm安装不了如何解决
    如果您无法安装PyCharm,您可以尝试以下解决方法:1. 检查您的操作系统是否符合PyCharm的最低系统要求。PyCharm要求...
    99+
    2023-09-26
    pycharm
  • easyconnect安装不了如何解决
    要解决easyconnect无法安装的问题,可以尝试以下方法:1. 检查系统要求:确保您的计算机满足easyconnect的最低系统...
    99+
    2023-10-09
    easyconnect
  • windows11安装不了怎么解决
    这篇文章主要讲解了“windows11安装不了怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows11安装不了怎么解决”吧!解决方法首先准备一块至少8GB大小的u盘,将它制作...
    99+
    2023-07-01
  • win11安装不了如何解决
    本文小编为大家详细介绍“win11安装不了如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“win11安装不了如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一:安装文件不对 首先我们需要确保下载到安...
    99+
    2023-07-01
  • win7安装不了如何解决
    这篇“win7安装不了如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7安装不了如何解决”文章吧。使用快捷键wi...
    99+
    2023-07-01
  • eclipse安装不了如何解决
    要解决Eclipse安装不了的问题,可以尝试以下几种方法:1. 确保系统满足Eclipse的最低要求:Eclipse要求运行在Jav...
    99+
    2023-08-22
    eclipse
  • 一文了解Docker
    假期把之前买的几本docker的书籍阅读一遍,本文是docker的学习笔记,了解docker的核心概念。 一 docker 是什么 Docker是dotCloud公司(后更名为Docker)基于go语言开发的容器项目,2013年开源。...
    99+
    2021-02-28
    一文了解Docker
  • 了解Android OpenGLES2.0(一)
    什么是OpenGL ES? OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二...
    99+
    2022-06-06
    Android
  • c3po简单了解
    package com.hanchao.test; import java.lang.reflect.Field; import java.sql.Connection; i...
    99+
    2024-04-02
  • influxDB 基础了解
    目录 一、什么是时序数据库 1、时序数据库 InfluxDb 2、InfluxDB 的特点 3、influxdb 数据模型 4、influxdb 时间线 5、influxdb 系统架构 二、influxdb的安装 1.Windows电脑安装...
    99+
    2023-09-05
    数据库 java 系统架构
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作