---
# System prepended metadata

title: 環境設置

---

# 環境設置
## 前情提要
- 大部份電腦的架構（由低層到高層）
    - CPU
    - RAM（嵌入式系統不一定）
    - 其他硬體
    - 程式
         - 工業控制電腦 嵌入式系統
             - 比較單一，可能只有一種專門程式
             - 直接控制硬體（組合語言等）
         - 一般電腦
             - OS
             - 應用程式
## 好的作業系統架構
- 良好的硬體控制
    - 驅動程式等
- 良好的軟體平台
    - API等
## Android的普及率
作業系統有平台傾向，Android常被安裝於：
- 手機
- 平板
- 機上盒
- 智慧電視
- 工控電腦
- 車用電腦
- 手錶
- 其他
***
## Android的開發語言
- Google
    - Kotlin
    - Go
    - Dart
        - 可以跨平台
- MS
    - C#
        - 可以跨平台
- JavaScript(Oak)
- Java
***
## 環境佈置：Android Studio
- JDK
- IDE+虛擬機2.7GB 
- 自訂安裝項目
    - 設置JRE路徑
    - SDK選擇跟路徑
        - 裝英特爾的擴充，虛擬機畫面才不會頓
    - 虛擬機記憶體配置
        - 預設內存`1/8`
        - 預設記憶體`2048`
        - 推薦待考
- 裝好後再調整
    - Customize
        - 可以調大字體
        - 濾藍光
    - Plugin
        - 有些外觀主題可以安裝
- 第一個專案
    - 新增專案
        - 開新專案
        - 從版本控制新增
    - 選模板
        - 可以先試試基礎
        - 程式設定
            - package的命名
                - 避免上架撞名
                    - 公司的域名通常是唯一的，所以建議用之倒寫
            - 工作區
            - 選擇語言
                - 先選Java
            - 開發版本
                - 選6，目前有95.6%裝置可運行
                - 太向下相容功能又落後
            - 是否使用相容性支援lib
- 補充：到這裡可以調程式碼區字體大小、行距、自型、是否提升運算子易讀性等
![](https://i.imgur.com/uWZFCyJ.png)
***
## 認識Android專案
來認識各個資料夾跟內容物：
- Gradle：專案建置自動化工具
- app
    - manifests：放置結構檔、初始設定
        - 補充：xml檔的結構
            - 宣告
            - 文件定義
            - 根
                - 本體
                    - 屬性
    - java
        - MainActivity：即主程式
        - Test
    - res：資源
        - 除了原始碼以外其他可以增加美觀、方便操作、連結外部等促進程式性能的檔案，都稱之為資源檔
            - 常見有圖片、提示音、腳本等
        - drawable：向量圖檔
        - layout：畫面
            - Interface Build
        - menu
        - mipmap
        - navigation
        - values
            - 放置變數
                - 搬出變數的好處
                    - 例如改語言
        - xml
        - 還有其他的
***
### Java複習
- 常見的Java程式
    - Java的程式單位為class
        - 又分可執行的
            - 又依照執行環境，進入點方法不同
                - 非移動端OS
                - 服務器、雲端
                    - 即Servlet
                - 以上兩個之前學過不再贅述
                - Android
                    ```java=
                    //Android都繼承了AppCompatActivity（屬於Activity這個家族）
                    public class MainActivity extends AppCompatActivity {
                    }
                    ```
        - 跟工具型的（型態等）
- `static`被放在SRAM（相對為DRAM）
- 用Powershell編譯Java程式
    ```shell=
    javac test.java //編譯
    java test //執行
    ```

- Java物件導向的實踐過程（？）
    - 導包
    - 用某類別宣告一個類別變數（尚不能使用）
    - 用new運算子建立實體
    - 呼叫旗下建構子
        ```java=
        Scanner x;
        x=new Scanner(System.in); //鍵盤，out則是螢幕
        int t=x.nextInt(); //.後方不是方法就是屬性
        ...println(t);//印出輸入的整數
        ```
        ```java=
                    public class test {

            public static void main(String[] args) {
                Scanner x;
                x=new Scanner(System.in); //鍵盤，out則是螢幕
                int t = x.nextInt();
                test01(t);

            }
            static void test01(int times) {
                for(int i=0;i<times;i++) {
                    System.out.println("第"+(i+1)+"次：hi");
                    //索引號是從0開始印
                }
            }

        }
        ```
### 認識一個Android APP的原始碼
```java=
    //@+某串字：編譯器提示指令
    @Override

    //on：當，後方為某事件
    //onCreate建立
    protected void onCreate(Bundle savedInstanceState) { //Bundle是一種類似Collection、Map的方法
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
```
- 高端的事件驅動系統
    - 除非事件發生不然不運行
    - 若發生，系統會去呼叫`事件處理函數`
    - 所以要先Override事件處理函數又稱`Call Back函數`
        - 如`onCreate`就屬於這種函數
- 建立虛擬裝置
    - 注意解析度
        - 可以選pixel 3a
    - 作業系統
        - 有Google API可以使用Google地圖等功能
***
### SDK Manger
- Android6
    - 選這些
    ![](https://i.imgur.com/FZiXHAG.png)
- SDK Tools可以全裝
***
## 基本Android App開發步驟
- 建立專案
    - 原則上用預設為主，有需要再修改
- 撰寫主要Activity檔（Java程式）
- 測試（模擬器或實機）
    - 針對問題除錯或修改
- Android APP的主要成份
    - 畫面
        - [手刻](/1IfQqDyrRUuvBjUhu-pgBg)
        - [Interface Build](/AoN5zeylSaWrPSlyd52PtA)
    - 運作邏輯
***
## 備註
- 新專案建議另外開啟，不要覆蓋，SDK指向容易出問題...（每台電腦不同）