>node的版本要求大于6
>npm install -g cordova ionic
## Build Setup
# 安裝依賴:
npm install或cnpm install
# 如果npm安裝依賴報錯,改cnpm(淘寶鏡像)安裝
# 啟動項目:
ionic serve
# 常見錯誤
1.Typescript Error
Class 'Subject' incorrectly extends base class 'Observable'. Types of property 'lift' are incompatible. Type '(operator: Operator) => Observable' is not assignable to type '(operator: Operator) => Observable'. Type 'Observable' is not assignable to type 'Observable'. Type 'T' is not assignable to type 'R'.
解決方案:1.更換Typescript版本 cnpm install typescript@2.6.1 --save-dev 確保與全局typescript版本對應和"rxjs": "5.5.2",版本對應
2.在tsconfig.json文件的compilerOptions對象中添加屬性"noStrictGenericChecks": true,"skipLibCheck": true,
或參考 https://stackoverflow.com/questions/44793859/rxjs-subject-d-ts-error-class-subjectt-incorrectly-extends-base-class-obs
# 打包項目
npm run build //測試
npm run ionic:build --prod//生產
# 安卓環境中:
ionic cordova platform add android(ios)? //加入到安卓中
ionic cordova? build android? //打包
ionic run android? //真機
ionic emulate android? //虛擬機
ionic cordova platform rm ios(android)
ionic cordova platform remove android
ionic cordova platform add android
ios也一樣,將android改成ios
另外
ionic serve? //在瀏覽器上運行,自動會打開瀏覽器
#Deploying to a Device
ionic cordova run android --prod --release
# or
ionic cordova build android --prod --release
成功apk路徑
/ionic-angular4/platforms/android/build/outputs/apk/android-debug.apk
#生成簽名
keytool -genkey -v -keystore my-release-key.keystore -alias moon(應用名) -keyalg RSA -keysize 2048 -validity 10000
建議使用 "keytool -importkeystore -srckeystore my-release-key.keystore -destkeystore my-release-key.keystore -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks android-release-unsigned.apk my-alias
#簽名應用文件
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore demo.keystore test.apk moon(應用名)
zipalign -v 4 android-release-unsigned.apk HelloWorld.apk
apksigner verify HelloWorld.apk
```
# 一、添加android平臺(其他框架與項目)
cordova? create? test? com.cordova.test? test? (創建cordova工程? <文件夾名> <包名> )@6.0.0
終端項目目錄下輸入命令:cordova platform add android(添加),cordovaplatform remove android(移除),添加之后,在項目目錄的platforms下會生成一個android文件夾。
# 二、cordova編譯應用
執行命令:cordova build --release android,使用build命令編譯應用的發布版本,這個過程需要你的android sdk和環境變量、java jdk和環境變量、android的gradle配置沒有錯誤。說一下gradle的配置:到http://www.androiddevtools.cn/,添加環境變量PATH=D:\gradle-3.5\bin,輸入命令gradle -v查看是否安裝成功。編譯成功之后,在項目路徑的\platforms\android\build\outputs\apk下會生成一個還未簽名的apk文件,我把它重新命名為test.apk,這個時候的apk還不能被安裝到手機上。
# 三、生成簽名文件
執行命令:keytool -genkey -v -keystore demo.keystore -alias moon -keyalg RSA -keysize 2048 -validity 10000,輸入的密碼要記住,其他姓名地區等信息隨便填吧,最好還是記住,成功之后在主目錄下就生成了demo.keystore文件,命令中demo.keystore是生成文件的名字,moon 是別名,隨便起但是要記住,一會簽名要用到,其他信息如加密、有效日期等就不說了,無需改動。
四、簽名應用文件
把在第二步生成的test.apk拷貝到與生成的keystore同一目錄下,也就是項目的主目錄下,執行命令:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore demo.keystore test.apk moon,輸入簽名文件的密碼,成功之后主目錄下的test.apk就被簽名成功了,會比原來未被簽名的apk文件大一點,能夠安裝到手機或android虛擬機上了。
# ionic打包apk主要分為幾個步驟:
第一、 打包
首先生成 release包
$ cordova build --release android # 記得加上--release 參數,不然會打出debug包
執行完這條命令后,cordova會根據你的config.xml生成一個未簽名的apk包。在platform文件夾可以找到apk包( platforms/android/ant-build ),接下來就可以簽名了。
第二、生成安全鑰匙
App簽名需要用到安全鑰匙,你可以用JDK的keytool工具生成,執行下面命令:
# 把my-release-key和alias_name換成你的名字
$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
執行后需要回答一些問題,正常填寫就好了
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: test
What is the name of your organizational unit?
[Unknown]: test
What is the name of your organization?
[Unknown]: test
What is the name of your City or Locality?
之后會生成一個your_name.keystore文件,這就是你的安全秘鑰,記得要好好保管,下次更新應用要用到,丟失就大事了,你以后就甭想更新市場上的應用了。
第三、簽名
使用JDK中的jarsigner工具為apk簽名,命令如下:
# my-release-key和alias_name換成你的名字
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name
執行后會生成一個已簽名成功的apk,也可以用這個包發布市場。
常見錯誤
1.Error: Your yargs-parser platform does not have Api.js
解決方案:用cordova 6.0.0試試,npm install -g cordova@6.0.0
解決方案:執行cordova platform add android --nofetch
2.Error: Please install Android target: "android-23".
Hint: Open the SDK manager by running: /home/al/Downloads/android-sdk-linux/tools/android
You will require:
1. "SDK Platform" for android-23
2. "Android SDK Platform-tools (latest)
3. "Android SDK Build-tools" (latest)
解決方案:1.檢查環境變量
1.java環境
2.android SDK
3.gradle
4.android studio
D:\software\JAVA_Uitils\android-sdk-windows\tools
D:\software\JAVA_Uitils\android-sdk-windows\platform-tools
D:\software\JAVA_Uitils\gradle-4.3.1-bin\bin
D:\software\JAVA_Uitils\android-sdk-windows
2.打開android studio編輯器setting中找android sdk/sdk platsform 下載android(api)-23
最后如果常見錯誤的解決方案對您有幫助的話,可以給一小杯咖啡