First Android App (Hello World) & Android Project Structure
1、 Create New Android Project By Android SDK2.3.3(API Level 10)
2、 Create A Main Activity MainForm(Extends Activity)
3、 R.java、main.xml、string.xml、AndroidManifest.xml summary:
3-1 main.xml summary:
每个Activity都需要有一个对应的xml文件配置界面、所有与界面有关的布局、组件、属性都是配置在该xml文件中。
3-2 string.xml summary:
与界面有关的名字、信息、标题的字符串常量的设置都是在该文件中配置的。
3-3 AndroidManifest.xml summary(Manifestà清单):
Global data file of current project、it’s Core configuration file Of Android Project.
3-4 R.java (TODO File)
aapt.exe 生成的资源速查类,该类的所有信息来至于string.xml和main.xml的配置
aapt p -f -m -J gen -S res –I E:\Dev\Android\android-sdk\platforms\android-10\android.jar -M AndroidManifest.xml |
No gen directory has been found! |
-f force overwrite of existing files 覆盖已经存在的文件 -m make package directories under location specified by –J 将R.java文件创建-J制定的路径中(路径目录必须存在),并且同时创建包 -J specify where to output R.java resource constant definitions 指定输出R.java文件的目录和路径 -I add an existing package to base include set 为当前R.java指定一个基础包(Android.jar) -M specify full path to AndroidManifest.xml to include in zip 指定Android清单配置文件(R.java的包就靠这个xml文件) |
4、 Create first Android Form(Activity):
public class MainFormextends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //MainForm窗体的布局由main.xml来决定 setContentView(R.layout.main); } } |
<?xml version="1.0" encoding="utf-8"?> <!-- main.xml使用Linear布局(线型布局) 宽度布局:填满父容器、高度布局:填满父容器、线性布局朝向:垂直布局 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 设置一个文本控件 宽度布局:填满父容器、高度布局:和内部所填写的文字一样大(随内容变化)、文字内容:引用string.xml中的hello变量 --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout> |
5、 Edit string.xml for MainForm Activity:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">This is my first Android App!!</string> <string name="app_name">Android Form Demo</string> </resources> |
6、 Android App Structure definition:
System resource folder, Include sys id for files in this folder, Use [@] symbol read files in this folder |
Customer resource folder, No sys id for files in this folder
|
Resource directory files |
App src package |
7、 Pack your android application:
7-1、 Create R.java for specified project(Leave out.)
7-2、 Compile your classes to jar files(Ant、Pack tool Leave out)
a) Notice:Required R.java in jar package
7-3、 Pack all classes to dex package(Android cannot use jar package)
dx --dex --output=C:\AndroidApp\bin\classes.dex C:\AndroidApp\bin\classes |
Pack all classes to dex package(Android cannot use jar package)
7-4、 Pack resource files、assets directory、*.dex files、Android Manifest.xml in apk file
aapt p -f -F bin\AndroidApp.apk -v -u -z -S res -A assets -I E:\Dev\Android\android-sdk\platforms\android-10\android.jar -M AndroidManifest.xml |
-F specify the apk file to output 指定apk的输出保存位置 -v verboseoutput 显示apk打包过程(可省略) -u update existing packages (add new, replace older, remove deleted files) 并非创新创建一个新的apk,而是为该apk增加、修改、删除文件 -z require localization of resource attributes marked with localization="suggested" 实施本地化定位设置,设置为“建议” |
7-5、 Create certificate key for apk that it has been created。(JDK6 Keytool.exe)
Notice: Android SDK2.3.3 is not supported JDK7.Cannot publisher apk to AVD or mobile when Keytool.exe of JDK7 create a certificate key store
keytool -genkey -alias androidapp.keystore -keyalg RSA -validity 20000 -keystore bin\androidapp.keystore |
-genkey 生成签名密钥库 -alias 给密钥库增加别名 -keyalg 为密钥库提供算法 -validity 密钥有效期(小时) -keystore 密钥库生成位置
|
7-6、 Grant certificate(key store)to existed apk file
jarsigner -verbose -certs -keystore bin\app.keystore -signedjar bin\AndroidApp_signed.apk bin\AndroidApp.apk app |
- verbose 列出所有签名清单 -certs 对外展示密钥 -keystore 指定密钥库位置 -signedjar parameter1 签名后的apk文件 -signedjar parameter2 需要签名的apk文件 -signedjar parameter3 密钥库别名
|
8、 Publish your Android application(adb.exe):
8-1、Startup AVD
emulator –avd Android2.3.3AVD #( Android2.3.3AVD : AVD name) |
8-2、install apk
adb install –s bin\AndroidApp.apk #(-s:install to sdk) |
8-3、uninstall apk
adb uninstall com.frank.android.app #(required apk main package, it is not apk name) |
Notice:
Show error message [INSTALL_PARSE_FAILED_NO_CERTIFICATES] when keytool.exe and jarsigned.exe of more than JDK6 has been used