angualr2.0 ionic2,cordova运行打包发布问题

>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

最后如果常见错误的解决方案对您有帮助的话,可以给一小杯咖啡

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269