AS的版本
| AS版本 | 对应下载包 | 备注 |
| 3.0 | 最稳定的版本,正式版 | |
| 3.1 | 比较稳定,正式版 | |
| 3.2 | 比较稳定,正式版 | |
| 3.4 | 正式版 |
Android应用结构分析
使用AS开发android十分简单,除了创建Android项目,开发者只需要使用
activity_main.xml文件定义用户界面
MainActivity.java源代码编写业务实现。
工程文件结构
首先是Project,这个显示的就是工程目录下的所有文件。

app文件结构
app目录是典型的Gradle项目,需要开发的内容都在这里面实现。
build.gradle是该项目的构建文件,注意,有项目的build.gradle和应用的build.gradle。添加依赖的时候避免出错。
build目录是该项目的构建结果,注意,有项目的build和应用的build。注意创建。
libs目录存放该项目所依赖的第三方库
src是项目的开发重点,源代码和资源都在该目录下。(截图省略了res资源的内容)

app的重要目录及文件
- build.gradle
所有android项目构架都需要改插件。除非你自己去完成构建工作。
apply plugin: 'com.android.application'
接下来的是android的定义全局属性:
android {
//解决release编译时app:lintVitalRelease错误添加
lintOptions {
checkReleaseBuilds false
abortOnError false
}
//编译sdk版本,compileSdkVersion不低于targetSdkVersion
compileSdkVersion 28
//编译工具版本,一般高版本的编译工具编译较低版本的编译sdk
buildToolsVersion "29.0.2"
//默认配合
defaultConfig {
//应用id
applicationId "com.example.myapplication202001152138"
//SDK最低版本
minSdkVersion 27
//目标SDK版本
targetSdkVersion 28
versionCode 1
versionName "1.0"
//测试监控器
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
构建所需的依赖
dependencies {
//定义项目主源码的依赖
//下面配置依赖libs库目录下的所有jar包
implementation fileTree(dir: 'libs', include: ['*.jar'])
//android编译sdk的版本与android的全局配置一致。
//'com.android.support:appcompat-v7:*.1.0',不高于compileSdkVersion
implementation 'com.android.support:appcompat-v7:28.0.0'
//下面配置从中央仓库下载依赖jar包,该包对应com.android.support.constraint库
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
//定义androidTest下的代码依赖
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
-
main
main目录下有java目录和res目录,AndroidManifest.xml
- jav目录保存java文件,res保存android的各种资源文件。其中:
layout子目录:存放界面布局文件
values目录:存放xml资源文件,比如字符串:string,颜色:color,尺寸:dimens等
drawable目录:定义了Drawable资源,对应drawable-ldpi,drawable-mdpi等
mipmap目录:as3.0出现的内容,现在该目录定义分辨率,drawable定义背景灯
- AndroidManifest.xml
android项目的系统清单文件。用来控制应用名称,图标,访问权限等整体属性。
而且android应用的四大组件:Activity,SErvice,ContentProvider,BroadcastReceiver都在其中配置。
- R.java文件
/Users/lounious/Documents/android_iot_data/MyApplication202001152138/app/build/generated/not_namespaced_r_class_sources/debug/processDebugResources/r/android/support/下一系列文件夹下都有。
暂不接触。
-
main次级目录res>values
android约定,将不同的资源放在不同的文件夹内,这样可以方便的使用aapt工具来扫描这些资源,并为他们声称对应的R.java文件。
常量文件string.xml
如下定义了两个字符串常量,这样在整个app中就可以使用语法@string/app_name,@string/click使用。
<resources>
<string name="app_name">My Application202001152138</string>
<string name="click">单击我</string>
</resources>
另外一种是分配组件标识符
通过在文件中这种定义方式,后面就可以在Java文件中调用activity的findviewbyid()方式来获取
在xml文件中则可以使用@id/<标识符代号>,即去掉+
android:id="@+id/show"
AndroidManifest.xml
文件清单信息:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
//包分发方式
xmlns:dist="http://schemas.android.com/apk/distribution"
//工具包
xmlns:tools="http://schemas.android.com/tools"
//包名称
package="com.example.myapplication202001152138">
<dist:module dist:instant="true" />
//支持各种类型的屏幕
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
//应用程序的图标,标签主题等
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
//定义组件activity
<activity android:name=".MainActivity">
<intent-filter>
//定义activity的入口
<action android:name="android.intent.action.MAIN" />
//加载该应用时的activity
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
AS开发环境踩坑
第一坑:gradle无法打开自己的zip包
https://www.cnblogs.com/maydear/p/6849745.html
创建Basic activity后,报错,gradle无法打开自己的zip包。

第二坑:需手动下载对应的SDK版本
默认新project不自动安装工程对应的android SDK,或者不自动匹配,安装。
AS默认安装最新的android SDK,但是一般在开发时要安装自己对应版本android SDK
打开偏好选项,安装对于你的SDK版本。


第三坑-project structure,无法使用preview功能(“所见即所得”设计界面)
新版默认buildToolsVersion是使用本地最新版本。但最新版本可能低于选择的SDK API版本,需手动设置较低的compileSdkVersion版本。否则可能导致xml文件全部报错,preview打不开。
File-project structur-Modules,重新配置后会自动同步。

直接现象是activiyt_main.xml打开全是红色告警,右侧的preview打不开页面。

CompileSdkVersion与buildeToolVersion区别
1、CompileSdkVersion是你SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。
2、buildeToolVersion是你构建工具的版本,其中包括了打包工具aapt、dx等等。
这个版本号一般是API-LEVEL.0.0。 例如I/O2014大会上发布了API20对应的build-tool的版本就是20.0.0
3、可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的,反之则不行。
第四坑Android resource linking failed
报错信息:com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
原因是gradle scripts--build.gradle(Module:app)中的报错:

compileSdkVersion 26 不低于 targetSdkVersion 26
implementation 'com.android.support:appcompat-v7:26.1.0',不高于compileSdkVersion
………………
………………
compileSdkVersion 26
defaultConfig {
applicationId "com.example.myapplication201912111032"
minSdkVersion 26
targetSdkVersion 26
………………
………………
implementation 'com.android.support:appcompat-v7:26.1.0'

第五坑:创建工程后,界面显示问题
在完成empty activity和basic activity之后,初始的界面是android界面,需要改成我们常用的project结构。
初始显示的android界面:
修改后的工程(project)结构

第六坑:再次打开页面import的依赖全部不可用。
需要做下文件的同步,如下图。
另外是关闭offline work选项(保证依赖可以自动联网)


第七坑:第六坑之后,仍有部分库没有匹配依赖,
比如:import android.support.annotation.Nullable;

在build.gradle的项目依赖文件中加入依赖:
implementation 'androidx.annotation:annotation:1.1.0'
同上做Sync with File System。
其实第六坑和第七坑的问题是一样的。区别在于一个有添加了依赖没有同步,一个没添加依赖。
android构建,编译与运行
apk包路径
编译完成后在对应路径下能看到release或者debug包
release版本:/app-name/build/outputs/apk/release
debug版本:/app-name/build/outputs/apk/debug
编译
常常使用很久的代码,编译不过。代码更新后重新编译的时使用。清除chche并重启build

工程管理
设置编译变量,确保编译的包是debug/release

重新编译打包
重新编译工程前先清除。

本文详细介绍了使用Android Studio(AS)进行Android应用开发的基础知识,包括AS版本、Android应用结构、常见开发环境问题及解决办法、apk的构建和编译过程。内容涵盖工程文件结构、app目录解析、AndroidManifest.xml的重要性,以及AS开发环境中的七个常见问题和解决策略。同时,阐述了apk的生成路径和编译流程,帮助开发者快速上手AS开发。

2702

被折叠的 条评论
为什么被折叠?



