Android app开发入门 —— your 'Hello, World'

从这篇可以掌握到

  • Android app开发环境的搭建
  • 开发工具介绍及安装
  • 创建你的“Hello, World”
  • 工程结构的介绍
  • 工程gradle配置
  • 简单布局
  • 代码sample
  • 打包配置
  • gradle基本命令介绍

1 搭建环境&安装工具

1.1 JDK

1.1.1 安装

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

先点击Accept License Agreement 同意,然后选择下载:

Android app开发入门 —— your 'Hello, World'_第1张图片
jdk.png

1.1.2 配置环境变量

Windows环境:

JAVA_HOME:D:\Java\jdk1.8.0_25 # java的安装路径
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Path:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin # add

Mac:

在系统环境配置文件里添加:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home
export PATH=$PATH:JAVA_HOME/bin

1.2 Android Studio

1.2.1 安装

https://developer.android.google.cn/studio/

根据你的系统选择相应版本。
目前使用版本为3.2。

Android app开发入门 —— your 'Hello, World'_第2张图片
AndroidStudioVersions.png

1.2.2 设置Project Structure

打开Studio界面

Android app开发入门 —— your 'Hello, World'_第3张图片
ProjectStructure.png

需要设置的是SDK和JDK路径:

Android app开发入门 —— your 'Hello, World'_第4张图片
SDKLocation.png

1.2.3 安装Android SDK & tools

在sdk Manager中安装或更新需要的Android sdk。

Android app开发入门 —— your 'Hello, World'_第5张图片
sdkManager.png
Android app开发入门 —— your 'Hello, World'_第6张图片
sdkManager2.png
Android app开发入门 —— your 'Hello, World'_第7张图片
sdkManager3.png

当前使用工具版本:

  • SDK Build-tools 28.0.3
  • SDK Platform-tools 28.0.1 +
  • SDK Tools: 26.1.1 +
  • Support Library rev 23.2.1 +

大致说明下这几个工具:

  • Android SDK Tools
    包含了android 开发和调试的工具

    • Location: $ANDROID_HOME/tools
    • Main tools: ddms (for debugging), emulator, etc
  • Android SDK Platform-tools
    针对pc端和移动端进行交互的一些工具

    • Location: $ANDROID_HOME/platform-tools
    • Main tool: adb (to manage the state of an emulator or an Android device), sqlite3, fastboot, etc.
  • Android SDK Build-tools
    Android平台相关通用工具

    • Location: $ANDROID_HOME/build-tools/$VERSION/
    • Documentation
    • Main tools: aapt (to generate R.java and unaligned, unsigned APKs), dx (to convert Java bytecode to Dalvik bytecode), and zipalign (to optimize your APKs)

1.2.4 设置环境PATH

以Mac环境为例:

设置Android sdk的安装目录为:/Users/Izumi/Android/android-sdk-macosx,
在系统配置文件添加:

export PATH=$PATH:/Users/Izumi/Android/android-sdk-macosx/tools
export PATH=$PATH:/Users/Izumi/Android/android-sdk-macosx/build-tools/27.0.3
export PATH=$PATH:/Users/Izumi/Android/android-sdk-macosx/platform-tools

Windows环境,添加Android sdk路径到系统PATH里即可。

2. 新建工程

2.1 步骤

Android app开发入门 —— your 'Hello, World'_第8张图片
new1.png
Android app开发入门 —— your 'Hello, World'_第9张图片
new2.png
Android app开发入门 —— your 'Hello, World'_第10张图片
new3.png
Android app开发入门 —— your 'Hello, World'_第11张图片
new4.png

自定义Activity和layout name。

Android app开发入门 —— your 'Hello, World'_第12张图片
new5.png

点击Finish后,就新建好工程了。

2.2 下载模拟器AVD

打开工程后,如果想下载模拟器,可以在工具栏里看到这个icon。

avdManager.png
Android app开发入门 —— your 'Hello, World'_第13张图片
createAVD.png
Android app开发入门 —— your 'Hello, World'_第14张图片
selectHardware.png

选择需要的API(即Android SDK),如果某版本API未下载,系统名边上会显示"Download",下载后也可以选择。

Android app开发入门 —— your 'Hello, World'_第15张图片
selectImage.png

命名avd确认即可。

Android app开发入门 —— your 'Hello, World'_第16张图片
nameAVD.png

2.3 工程结构

Android app开发入门 —— your 'Hello, World'_第17张图片
project.png

2.3.1 主要说明

  • java: 包含 Java 源代码文件,包括 JUnit 测试代码。
  • res: 包含所有非代码资源,例如 XML 布局、UI 字符串和位图图像。
  • AndroidManifest.xml: Android各组件的配置文件。
  • app/build.gradle: app工程的gradle构建脚本。
  • 根目录下build.gradle: 整个工程的gradle构建脚本。
  • gradle目录:
    gradle/wrapper/gralde-wrapper.properties 文件中声明了它指向的目录和版本,新建工程后会花一定时间下载指定的gradle版本。

2.3.2 详细说明

Android app开发入门 —— your 'Hello, World'_第18张图片
详细说明.jpg

2.3.3 关于gralde-wrapper.properties

文件如下:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

其中的distributionUrl 决定了这个项目使用的gradle版本。

第一次打开工程时会比较慢,是因为Studio首先会读取gradle-wrapper.properties,知道这个工程需要哪个版本的gradle,然后就会去保存gradle的文件夹GRADLE_USER_HOME,去找看存不存在这个版本的gradle,不存在则会去distributionUrl 去下载。

Gradle下载地址:https://services.gradle.org/distributions/

可以在系统的环境配置中添加上GRADLE_USER_HOME的路径:

Windows:

C:\users{user name}.gradle\wrapper\dists

Mac:

export GRADLE_USER_HOME=/User/{Username}/.gradle/wrapper/dists

2.3.4 整个项目gradle配置文件

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        // Gradle插件,此版本一般继承自Android Studio的版本。
        classpath 'com.android.tools.build:gradle:3.2.0'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

3. 简单布局

3.1 常见UI控件

所有的控件都是View的子类。

  • TextView
  • EditText
  • Button
  • ImageView
  • ProgressBar

3.2 设计布局

3.2.1 手动写布局




    

    

        

效果:

Android app开发入门 —— your 'Hello, World'_第19张图片
layout.png

3.2.2 使用Palette

在布局界面,使用Palette,直接拖动添加UI控件:

Android app开发入门 —— your 'Hello, World'_第20张图片
dragWidgets.png

在右侧的Attributes中,可以直接修改该控件的所有属性:

如图,把image的scaleType属性,从"center"改成"fitXY"。

Android app开发入门 —— your 'Hello, World'_第21张图片
attributes.png

4. 代码

4.1 代码格式化

想让一段代码格式变得整齐,可以:

选中这行代码
Code → Reformed Code
或者Windows: Ctrl+Alt+L
Mac:Alt+Cmd+L

4.2 代码style

如下,在Preferences / Editor / Code Style / Scheme,可以添加自己的code style

Android app开发入门 —— your 'Hello, World'_第22张图片
codeStyle.png

4.3 sample

  1. 在sample Activity的布局中,添加两个按钮
  
  1. sample Activity如下:
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MAIN";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e("Task", "Main Task id:" + getTaskId());
    }

    public void startSelf(View view) {
        startActivity(new Intent(this, MainActivity.class));
    }

    public void startSecond(View view) {
        startActivity(new Intent(this, SecondActivity.class));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

其中startSelf和startSecond方法,即对应了布局中两个button的click事件。
创建一个简单的SecondActivity,即可进行测试。

  1. Manifest配置

Android工程里每个Activity、Service、Broadcast等组件,都必须添加到Manifest.xml文件中。




    
        
            
                

                
            
        

        
    

5. 打包

测试的话,可以开个模拟器或者连手机,run起来就好了!
如果发签名包的话,参考以下配置。

5.1 配置签名信息

工程下添加local.properties文件,填写key信息:

sdk.dir=/Users/Izumi/Android/android-sdk-macosx

key.store=/Users/Izumi/xxx.keystore
key.alias=xxx.keystore
key.store.password=xxxxxx
key.alias.password=xxxxxx

在app/build.gradle,配置如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.isa.myapplication"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 1000000
        versionName "1.0.0"
    }

    signingConfigs {
        release {
            Properties properties = new Properties()
            properties.load(project.rootProject.file('local.properties').newDataInputStream())

            storeFile file(properties.getProperty('key.store'))
            storePassword properties.getProperty('key.store.password')
            keyAlias properties.getProperty('key.alias')
            keyPassword properties.getProperty('key.alias.password')
        }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release         
        }

        debug {
            minifyEnabled false
            debuggable true
            signingConfig signingConfigs.debug
        }

        // 如果想自定义生成的包名,添加'applicationVariants',根据需要修改文件名
        applicationVariants.all { variant ->
            variant.outputs.all {
                if (variant.productFlavors.size() > 0) {
                    def path="myapp_${defaultConfig.versionName}_${variant.productFlavors[0].name}_${buildType.name}_${project.name}_${buildTime()}.apk"
                    outputFileName  = path
                }
            }
        }
    }

def buildTime() {
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}

5.2 打包命令

./gradlew build // 检查依赖并编译打包,debug、release环境的包都会打出来
./gradlew assembleDebug // 编译并打Debug包
./gradlew assembleRelease // 编译并打Release的包

完成后,会在app/build/outputs/apk目录下找到对应的apk。

6 关于Gradle

gradlew,代表gradle wrapper,意思是gradle的一层包装。

基本命令:

  • ./gradlew -v // 版本号
  • ./gradlew clean // 清除app目录下的build文件夹
  • ./gradlew installRelease // release模式打包并安装
  • ./gradlew uninstallRelease // 卸载Release模式包

Ref:

  • https://developer.android.com/studio/intro/
  • https://docs.gradle.org/current/userguide/userguide.html
  • https://developer.android.com/studio/releases/gradle-plugin

你可能感兴趣的:(Android app开发入门 —— your 'Hello, World')