android studio使用-最简单的apk

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

 

 

AS的版本

AS版本

对应下载包

备注

3.0

android-studio-ide-171.4408382-mac.dmg

最稳定的版本,正式版

3.1

android-studio-ide-173.4670197-mac.dmg

比较稳定,正式版

3.2

android-studio-ide-181.5014246-mac.dmg

比较稳定,正式版

3.4

android-studio-ide-183.5452501-mac.dmg

正式版

Android应用结构分析

使用AS开发android十分简单,除了创建Android项目,开发者只需要使用

activity_main.xml文件定义用户界面

MainActivity.java源代码编写业务实现。

工程文件结构

首先是Project,这个显示的就是工程目录下的所有文件。

image.png

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

  1. jav目录保存java文件,res保存android的各种资源文件。其中:

    layout子目录:存放界面布局文件
    values目录:存放xml资源文件,比如字符串:string,颜色:color,尺寸:dimens等
    drawable目录:定义了Drawable资源,对应drawable-ldpi,drawable-mdpi等
    mipmap目录:as3.0出现的内容,现在该目录定义分辨率,drawable定义背景灯 

  1. AndroidManifest.xml

android项目的系统清单文件。用来控制应用名称,图标,访问权限等整体属性。

而且android应用的四大组件:Activity,SErvice,ContentProvider,BroadcastReceiver都在其中配置。

  1. 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包。

image.png

第二坑:需手动下载对应的SDK版本

默认新project不自动安装工程对应的android SDK,或者不自动匹配,安装。

AS默认安装最新的android SDK,但是一般在开发时要安装自己对应版本android SDK

打开偏好选项,安装对于你的SDK版本。

image.png

image.png

 

第三坑-project structure,无法使用preview功能(“所见即所得”设计界面)

新版默认buildToolsVersion是使用本地最新版本。但最新版本可能低于选择的SDK API版本,需手动设置较低的compileSdkVersion版本。否则可能导致xml文件全部报错,preview打不开。

File-project structur-Modules,重新配置后会自动同步。

image.png

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

image.png

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)中的报错:

image.png

 

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'

image.png

 

第五坑:创建工程后,界面显示问题

在完成empty activity和basic activity之后,初始的界面是android界面,需要改成我们常用的project结构。

初始显示的android界面:
image.png

修改后的工程(project)结构

image.png

第六坑:再次打开页面import的依赖全部不可用。

需要做下文件的同步,如下图。

另外是关闭offline work选项(保证依赖可以自动联网)

image.png

 

image.png

第七坑:第六坑之后,仍有部分库没有匹配依赖,

比如:import android.support.annotation.Nullable;

image.png

在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

image.png

工程管理

设置编译变量,确保编译的包是debug/release

重新编译打包

重新编译工程前先清除。

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值