2014-09-24

使用 Cordova 打包測試 Android App (Windows 7)

記錄 Cordova 大致的使用流程:

  1. 安裝 JDK, NodeJS, Git client (Git client 不是必要的, 不過最好裝起來)。
  2. 安裝 Android-SDK。
  3. 安裝 Ant build。
  4. 以 npm 安裝 cordova (global)。
  5. 使用 cordova cli。

JDK, NodeJS 和 Git client 安裝就不贅述。

2. 安裝 Android-SDK:
    a. 下載解壓縮 adt-bundle (C:\Users\shinder\workspace\adt-bundle-windows-x86_64-20140702)。
    b. 設定系統變數 ANDROID_SDK 為 "C:\Users\hsin-te.lin\workspace\adt-bundle-windows-x86_64-20140702\sdk"。
    c. 將以下兩個路徑加入系統變數 PATH: %ANDROID_SDK%/platform-tools 和 %ANDROID_SDK%/tools。

3. 安裝 Ant build:
    a. 下載解壓縮 ant (C:\Program Files\Java\apache-ant-1.9.4)。
    b. 設定系統變數 ANT_HOME 為 "C:\Program Files\Java\apache-ant-1.9.4"。
    c. 將 %ANT_HOME%/bin 加入系統變數 PATH。

4. 以 npm 安裝 cordova:
    npm install -g cordova

5. 使用 cordova 及 android cli:
    a. > cordova create hello com.example.hello HelloWorld  #建立資料夾為 hello 的預設專案。
    b. > cd hello  #進入專案資料夾
    c. > cordova platform add android  #加入 android 平台
    c1. 將出現錯誤, 因為 cordova 3.6 必須使用 android-19
    c2. 可以先查看目前安裝的版本: android list target
    c3. 使用 "SDK Manager.exe" 安裝 "android-19" 的 SDK platform 及 System Images
    d. > cordova platform add android  #再執行一次
    e. > cordova build  #建立 apk
    f. > cordova build --release  #建立發佈用的 apk
    g. > cordova emulate android  #使用 emulator 執行 apk

6. 若沒有設定模擬器 (emulator) avd:
    > android list targets  #先查看提供的版本
    > android create avd -n and442 -t "android-19" --abi "default/x86"  #建立 avd

7. 測試執行可以使用 BlueStacks App player

8. 使用 BlueStacks 必須使用簽證過的 apk (release version)

9. 使用 Java 工具建立 keystore file:
    > keytool -genkey -v -keystore my_android.keystore -alias shinder -keyalg RSA -keysize 2048 -validity 10000

10. apk 簽證:
    > jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my_android.keystore .\platforms\android\ant-build\HelloWorld-release-unsigned.apk shinder

11. In BlueStacks
"/storage/sdcard/windows/BstSharedFolder" maps to "C:\ProgramData\BlueStacks\UserData\SharedFolder"










1 則留言:

Flash > JS 老靈魂 提到...

thanks for sir. your share, that save my ass.

FB 留言