【攻占Android (2)】Android各版本、app开发流程、apk构建过程

【攻克Android (2)】Android各版本、app开发流程、apk构建过程
本文围绕以下八个部分展开:

一、Android系统各版本及与API号对应关系
二、Android系统各版本Logo
三、Eclipse和Android Studio中工作区、项目及引用的对应关系
四、Android Studio中项目(module)的新建和删除
五、Android四种应用组件简介
六、Android App开发流程
七、Android apk的构建过程
八、Android Studio项目目录及代码介绍




一、Android系统各版本及与API号对应关系

【攻占Android (2)】Android各版本、app开发流程、apk构建过程



二、Android系统各版本Logo

【攻占Android (2)】Android各版本、app开发流程、apk构建过程



三、Eclipse和Android Studio中工作区、项目及引用的对应关系

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


四、Android Studio中项目(module)的新建和删除

        1.新建项目

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


        2.删除项目

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程



五、Android四种应用组件简介

【攻占Android (2)】Android各版本、app开发流程、apk构建过程



六、Android App开发流程

        1.配置开发环境(Android Studio)
        2.开发App
        3.调试
            建议使用真机进行调试。调试之前:
            (1)在计算机上,给真机安装USB驱动;
            (2)开启“开发者选项”(点击7次“内部版本号”);
            附:点击7次“Android版本”,会进入“彩蛋”。
            (3)开启“USB调试”。
        4.发布


        附:通过命令行把apk安装到真机/模拟器

【攻占Android (2)】Android各版本、app开发流程、apk构建过程

        这种方式不安全(很容易中病毒等)。建议到官方Android App市场去下载安装。


七、Android apk的构建过程

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


【攻占Android (2)】Android各版本、app开发流程、apk构建过程


        详细的构建过程如下:

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


        具体构建过程如下:
        (1)aapt生成R.java
        (2)aidl生成相应的java文件
        (3)javac编译源文件生成class文件
        (4)dx转换class为classes.dex
        (5)aapt生成资源包文件resources.arsc
        (6)apkbuilder打包资源和dex生成未签名的apk
        (7)jarsigner签名apk生成签名apk
        (8)zipalign优化签名后的apk

        其中用到的构建工具介绍如下:

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


八、Android Studio项目目录及代码介绍

        1.Android Studio项目目录

【攻占Android (2)】Android各版本、app开发流程、apk构建过程


        附:res文件夹里面的,都会编译成十六进制数放入R.java文件中,这样在调用的时候,就会快一些。

        2.项目基础代码介绍

        (1)AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xiangdong.i18nscreen" >
<!--xmlns: xml name space 命名空间
    表示里面所有的命名,都必须符合Android的命名规范
-->

    <!--应用程序
    allowBackup 允许备份数据
    icon  App图标
    label App名字
    theme 主题风格(类似于Web程序的css)
    -->
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!--活动(界面)
        MainActivity 主活动(主界面),类似于index.jsp(首页)
         android:name=".MainActivity"
         如果换成其他Activity,则启动的时候,主界面就成为了其他Activity。
        label 标题栏上的文本
        -->
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <!--意图过滤器 (必须有)-->
            <intent-filter>
                <!--动作:启动主界面的入口 (相当于java中的main方法)-->
                <action android:name="android.intent.action.MAIN" />
                <!--类别:启动主界面。   launcher(启动)-->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


        (2)MainActivity.java
package com.xiangdong.i18nscreen;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

/**
 * 主活动 (主界面) 类似于首页
 */
public class MainActivity extends ActionBarActivity {

    /**
     * 第一次启动活动时,创建界面
     * @param savedInstanceState 保存实例状态
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // 显式调用父类的创建方法(保留activity状态)
        super.onCreate(savedInstanceState);
        // 加载布局文件
        setContentView(R.layout.activity_main);
    }


    /**
     * 创建可选菜单
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        // 填充菜单,加入菜单选项
        getMenuInflater().inflate(R.menu.menu_main, menu);
        // 返回true:菜单可见
        return true;
    }

    /**
     * 选中菜单选项的事件
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}