開始寫 Android 程式

Android

簡介

使用方法

開發工具

開始寫程式

視覺化介面

視覺元件

對話元件

核心物件

事件處理

資料儲存

查詢功能

影音功能

繪圖功能

網路功能

衛星地圖

特殊功能

資源管理

裝置管理

系統核心

問題與回答

刷機升級

常用軟體

Eclipse

教學錄影

訊息

相關網站

參考文獻

最新修改

簡體版

English

專案下載:HelloAndroid.zip

課堂錄影

資料夾:D:\ccc100\Android\HelloAndroid 的內容

以下顯示整個 Android 專案資料夾的結構,以及所有檔案列表。

D:\ccc100\Android\HelloAndroid>tree/F
列出資料夾 PATH
磁碟區序列號碼為 00060000 287B:A568
D:.
│  .classpath
│  .project
│  AndroidManifest.xml
│  default.properties
│  proguard.cfg
│
├─assets
├─bin
│  │  classes.dex
│  │  HelloAndroid.apk
│  │  resources.ap_
│  │
│  └─ccc
│      └─android
│              HelloAndroidActivity.class
│              R$attr.class
│              R$drawable.class
│              R$layout.class
│              R$string.class
│              R.class
│
├─gen
│  └─ccc
│      └─android
│              R.java
│
├─res
│  ├─drawable-hdpi
│  │      icon.png
│  │
│  ├─drawable-ldpi
│  │      icon.png
│  │
│  ├─drawable-mdpi
│  │      icon.png
│  │
│  ├─layout
│  │      main.xml
│  │
│  └─values
│          strings.xml
│
└─src
    └─ccc
        └─android
                HelloAndroidActivity.java

D:\ccc100\Android\HelloAndroid>

檔案:src/ccc.android/HelloAndroidActivity.java

HelloAndroidActivity.java 是整個專案中的主程式。

package ccc.android;
 
import android.app.Activity;
import android.os.Bundle;
 
public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

檔案:res/layout/main.xml

main.xml 是整個專案的使用者介面,Android 的使用者介面設計方式採用 XML 格式設計介面的結構。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

檔案:gen/ccc.android/R.java

R.java 是 Android SDK 根據 main.xml 自動產生出來的檔案,用來定位並取得對應的資源,這種 gen/ 資料夾下的程式,千萬不能修改。

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */
 
package ccc.android;
 
public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
    }
}

檔案:res/AndroidManifest.xml

AndroidManifest.xml 是整個 Android 專案的專案管理建置檔,其用途有點像 gcc 工具中的 Makefile 檔案,但結構卻也是用 XML 描述的。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="ccc.android"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloAndroidActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
    </application>
</manifest>

檔案:res/default.properties

default.properties 是預設屬性檔,目前只儲存了版本的相關資訊為 android-8,也就是 2.2 版。

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-8

檔案:res/progard.cfg

Proguard 是用來對 Java 程式進行擾亂性編碼,以避免被人用還原工程解出原始碼的一種工具。

progard.cfg 儲存了擾亂性編碼工具的相關設定。

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

執行結果:

HelloAndroidRun.jpg

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License