Android开发Android开发Android开发经验谈

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

2018-12-26  本文已影响10人  blueMononoke

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

当前使用工具版本:

设置环境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 结构说明

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

详细说明.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的子类。

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的一层包装。

基本命令:

上一篇下一篇

猜你喜欢

热点阅读