基础环境

qiang.zhang大约 9 分钟

基础环境

JDK

JDK是Java语言的编译器,全称为Java Development Kit,即Java开发工具包。 因为Android应用采用Java语言开发,所以开发机上要先安装JDK,下载地址为:

http://www.oracle.com/technetwork/java/javase/downloads/index.htmlopen in new window

JDK建议安装1.8及以上版本,原因是不同的Android版本对JDK有相应的要求,如Android 5.0默认使用jdk1.7编译,Android 7.0默认使用jdk1.8编译。

SDK

SDK是Android应用的编译器,全称为Software Development Kit,即软件开发工具包。SDK提供了App开发的常用工具合集,主要包括:build-tools目录,存放各版本Android的各种编译工具。docs目录,存放开发说明文档。

  • extras\android目录,存放兼容低版本的新功能支持库,比如android-support-v4.jar、v7的各种支持库、v13以上兼容库等。
  • platforms目录,存放各版本Android的资源文件。
  • platform-tools目录与tools目录,存放常用的开发辅助工具,如数据库管理工具sqlite3.exe、模拟器管理工具emulator.exe。
  • samples目录,存放各版本Android常用功能的demo源码。
  • sources目录,存放各版本Android的API开放接口源码。
  • system-images目录,存放模拟器各版本的系统镜像与管理工具。

SDK可以单独安装,也可以与Android Studio一起安装,单独安装的下载页面入口地址是:

http://sdk.android-studio.org/open in new window

建议通过Android Studio安装SDK,因为这样避免了一些兼容性与环境设置问题。无论是单独安装还是一起安装,装好SDK后都要在环境变量的系统变量中添加ANDROID_HOME,取值为SDK的安装目录,例如D:\Android\sdk。并在系统变量Path末尾添加;%ANDROID_HOME%\tools。

NDK

NDK是C/C++代码的编译器,全称为Native Development Kit,意即原生开发工具包。该工具包主要供JNI接口使用,先把C/C++代码编译成so库,然后由Java代码通过JNI接口调用so库。NDK的详细安装步骤后续单独写一篇文章阐述。装好NDK后,要在环境变量的系统变量中添加NDK_ROOT,取值为NDK的安装目录,例如D:\Android\android-ndk-r17。然后在系统变量Path末尾添加;%NDK_ROOT%。

工程目录结构

工程目录结构
工程目录结构

从结构图中可以看到,该工程下面有两个目录:一个是app,另一个是Gradle Scripts。其中,app下面又有3个子目录,功能说明如下:

(1)manifests子目录,下面只有一个xml文件,即AndroidManifest.xml,是App的运行配置文件。

(2)java子目录,下面有3个com.example.hellorworld包,其中第一个包存放的是App工程的java源代码,后面两个包存放的是测试用的Java代码。

(3)res子目录,存放的是App工程的资源文件。res子目录下又有4个子目录:drawable目录存放的是图形描述文件与用户图片。layout目录存放的是App页面的布局文件。mipmap目录存放的是启动图标。values目录存放的是一些常量定义文件,比如字符串常量strings.xml、像素常量dimens.xml、颜色常量colors.xml、样式风格定义styles.xml等。

配置文件build.gradle

plugins {
    id 'com.android.application'
}

android {
    namespace 'com.qiang.zhang.myapplication'

    //指定编译用的SDK版本号,32就是 android S 12.0编译
    compileSdk 32

    defaultConfig {
        // 指定该模块的应用编号,即APP的包名。该参数为自动生成,无需修改
        applicationId "com.qiang.zhang.myapplication"
        // 指定App 适合运行的最小SDK 版本号。如29表示至少要在Android 10 上运行
        minSdk 29
        // 指定目标设备的SDK 版本号。即该APP最希望在哪个版本的Android 上运行
        targetSdk 29
        // 指定App的应用版本号
        versionCode 1
        // 指定App的应用版本名称
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            // 指定是否开启代码混淆功能,true表示开启混淆,false 表示无需混淆
            minifyEnabled false
            // 指定代码混淆规则文件的文件名
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        // 指定的JAVA 版本
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildFeatures {
        // 开启 viewBinding
        viewBinding true
    }
}

dependencies {

    // 指定引用jar的路径
    implementation fileTree(dir: 'libs',includes: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    // 指定单元测试编译用的Junit版本号
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

配置settings.gradle

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
        // 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google'}
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}
        maven { url 'https://maven.aliyun.com/repository/public'}
        // 以下添加华为的仓库地址,引入HMS需要
        maven { url 'https://developer.huawei.com/repo/'}
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google'}
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}
        maven { url 'https://maven.aliyun.com/repository/public'}
        // 以下添加华为的仓库地址,引入HMS需要
        maven { url 'https://developer.huawei.com/repo/'}
    }
}
rootProject.name = "android"
include ':app'

配置AndroidManifest.xml

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

(1)uses-sdk,该节点有两个属性:android:minSdkVersion和android:targetSdkVersion。这两个属性是早期Eclipse开发App时使用的,现在这两个字段改成放到build.gradle文件中,故而Android Studio不配置uses-sdk也没有关系。

(2)uses-permission,该节点用于声明App运行过程中需要的权限名称。例如,访问网络需要上网权限,拍照需要摄像头权限,定位需要定位权限等。

(3)application,该节点用于指定App的自身属性,默认的属性说明如下:

android:allowBackup,用于指定是否允许备份,开发阶段设置为true,上线时设置为false。
android:icon,用于指定该App在手机屏幕上显示的图标。
android:label,用于指定该App在手机屏幕上显示的名称。
android:supportsRtl,设置为true表示支持阿拉伯语/波斯语这种从右往左的文字排列顺序。
android:theme,用于指定该App的显示风格。

application节点下还有几个子节点,比如活动activity、服务service、广播接收器receiver、内容提供器provider等

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication"
        tools:targetApi="29">
        <activity
            android:name=".FullscreenActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.MyApplication.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

快捷键

Ctrl+S:保存文件。
Ctrl+Z:撤销上次的编辑。
Ctrl+Shift+Z:重做上次的编辑,建议改为Ctrl+Y,与Eclipse、UEStudio等工具保持一致。Android Studio默认Ctrl+Y为删除当前行,这点不太好,当你习惯按Ctrl+Y重做上次编辑时,系统却删除了当前行,非常不便。
Ctrl+C:复制。
Ctrl+X:剪切。
Ctrl+V:粘贴。
Ctrl+A:全选。
Delete:删除。
Ctrl+F:查询。
Ctrl+R:替换。
Ctrl+/:注释选中代码(在每行代码前面加双斜杆)。
Ctrl+Shift+/:注释选中的代码段(在选中的代码段前面加“/*”,后面加“*/”)。
Ctrl+Alt+L:格式化选中的代码段。注意该快捷键与QQ默认的热键(锁定QQ)冲突,建议更换快捷键,或者删除QQ的同名热键。
Shift+F6:重命名。建议改为F2,与Wnidows和Eclipse的使用习惯保持一致。
Alt+Enter:给光标所在位置的类导入相应的包。
Shift+F10:运行当前模块。
Ctrl+F5:清理并重新运行当前模块。

修改快捷键的方式为:依次选择菜单File→Settings,在弹出的设置窗口中选择Keymap, 在设置界面选中某条快捷键,右击或单击上方的铅笔按钮,在弹出的菜单中选择Add Keyboard Shortcut,然后在键盘上按你要设置的快捷键组合,单击OK按钮,即可完成对应的快捷键设置。

常用插件推荐

路径: 依次选择菜单File→Settings→Plugins→下方按钮Browser repositories

  1. Android Parcelable code generator

该插件可自动生成Parcelable接口的代码。开发者先写好一个类和内部变量的定义,然后在代码中按Alt+Insert,弹出的菜单列表下方就有Parcelable选项,如图1-30所示。选中该选项,即在类中插入实现Parcelable接口的代码。

  1. Android Code Generator

该插件可根据布局文件快速生成对应的Activity、Fragment、Adapter、Menu等代码。在布局文件上右击或者在布局文件内部右击,弹出的菜单中多了一个Generate Android Code选项,具体的菜单如图1-31所示。选中生成项后,便会弹出代码窗口,把已生成的代码复制出来即可。注意该插件对汉字的支持不太好,如果XML文件中有汉字,代码就会生成失败。

  1. GsonFormat

该插件能够快速将JSON字符串转换成代码段,包含变量定义以及set、get函数。在代码中按Alt+S,弹出JSON格式化窗口,往窗口中粘贴JSON字符串,单击OK按钮,即可在代码中插入生成好的代码段。

  1. Android Postfix Completion

该插件支持在代码中快速生成Toast、Log等代码行。开发者在代码中输入字符串,后面跟上.toast并回车,即可生成Toast.makeText代码行;输入字符串后,紧接着输入.log并回车,即可生成Log.d代码行。

  1. Android Drawable Importer

该插件可对一张图片自动生成不同分辨率的图片,从而让图片对不同屏幕的适配工作变得更加容易。右击任意目录,在弹出的菜单中选择New,右方弹出的菜单列表末尾会出现*** Drawable Importer之类的菜单项。这里通常选中Batch Drawable Import,在弹出的窗口中选择图片的文件路径,并勾选需要自动生成的分辨率,然后单击OK按钮,即可在drawabe各分辨率的目录下生成对应的图片。

版本控制工具

参考GIT与SVN 工具的安装与使用 GIT与SVN

Loading...