Android开发入门 - 环境搭建 & 'He

作者: blueMononoke | 来源:发表于2018-12-26 17:54 被阅读10次

    1 安装工具

    1.1 JDK

    1.1.1 安装

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

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

    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。

    AndroidStudioVersions.png

    1.2.2 配置

    a. 设置Project Structure

    打开Studio界面

    ProjectStructure.png

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

    SDKLocation.png

    b. 安装Android SDK & tools

    Download

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

    sdkManager.png sdkManager2.png 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 +
    设置环境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 步骤

    new1.png new2.png new3.png new4.png

    自定义Activity和layout name。

    new5.png

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

    2.2 工程结构

    project.png

    2.2.1 结构说明

    • java: 代码;
    • res: 资源;
    • AndroidManifest.xml: Android各组件的配置文件。
    • gradle目录:gradle/wrapper/gralde-wrapper.properties 文件中声明了它指向的目录和版本,新建工程后会花一定时间下载指定的gradle版本。
    • app/build.gradle: app工程的gradle构建脚本。
    • 根目录下build.gradle: 整个工程的gradle构建脚本。

    详细文件说明,参考下图:

    详细说明.jpg

    2.2.2 整个项目gradle配置文件

    buildscript {
            buildscript {
                repositories {
                    google()
                    jcenter()
                }
    
                dependencies {
                    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()
               }
          }
    }
    

    3. 简单布局

    3.1 常见UI控件

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

    • TextView
    • EditText
    • Button
    • ImageView
    • ProgressBar

    3.2 设计布局

    3.2.1 手动写布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:orientation="vertical"
        >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_marginBottom="64dp"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_gravity="center"
            android:text="Hello World!"
            android:textSize="24dp"
            android:textColor="@android:color/white"
            android:background="@android:color/darker_gray"
            android:gravity="center"
            tools:layout_editor_absoluteX="42dp"
            />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="350dp"
            android:orientation="horizontal"
            android:background="@android:color/holo_blue_bright"
            >
    
            <Button
                android:id="@+id/btHello"
                android:layout_width="72dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="10dp"
                android:layout_gravity="top|center"
                android:text="ok"
                android:textSize="18dp"
                android:background="@android:color/holo_purple"
                android:gravity="center"
                />
    
            <ImageView
                android:id="@+id/ivLogo"
                android:layout_width="300dp"
                android:layout_height="280dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_gravity="center"
                android:src="@drawable/cat"
                android:scaleType="center"
                android:background="@android:color/darker_gray"
                />
        </LinearLayout>
    
    </LinearLayout>
    

    效果:

    layout.png

    3.2.2 使用Palette

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

    addUI.png

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

    attributes.png

    4. 打包

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

    4.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
        
                // 如果想自定义生成的包名,添加这段
                applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('.apk')) {
    
                            // apk_渠道名-版本号-版本名称-编译时间.apk
                            def fileName = "apk_${variant.productFlavors[0].name}-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime() }.apk"
                            output.outputFile = new File(outputFile.parent, fileName)
                        }
                    }
                }
            }
    
            debug {
                minifyEnabled false
                debuggable true
                signingConfig signingConfigs.debug
            }
        }
    
    def releaseTime() {
        return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
    }
    
    

    4.2 打包命令

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

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

    5 关于Gradle

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

    基本命令:

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

    相关文章

      网友评论

        本文标题:Android开发入门 - 环境搭建 & 'He

        本文链接:https://www.haomeiwen.com/subject/jzbakqtx.html