转自:https://blog.csdn.net/settingsun66/article/details/53581237
Android app 的打包流程大致分为 build , sign , align 三部分。
build是构建 APK 的过程,分为 debug 和 release 两种。release 是发布到应用商店的版本。
sign是为 APK 签名。不管是哪一种 APK 都必须经过数字签名后才能安装到设备上,签名需要对应的证书(keystore),大部分情况下 APK 都采用的自签名证书,就是自己生成证书然后给应用签名。
align是压缩和优化的步骤,优化后会减少 app 运行时的内存开销。
debug 版本的的打包过程一般由开发工具(比如 Android Studio)自动完成的。开发工具在构建时会自动生成证书然后签名,不需要我们操心。而 release 版本则需要开发者自己生成证书文件。Cordova 作为 hybrid app 的框架不像纯 Android 开发那么自动化,所以第一次打 release 包我们需要了解一下手动打包的过程。
首先,我们生成一个 release APK 。这点在 cordova build
命令后加一个 --release
参数局可以。如果成功,你可以在 android-apk
目录下看到一个 android-release-unsigned.apk
文件。
cordova build android --release
我们需要先生成一个数字签名文件(keystore)。这个文件只需要生成一次。以后每次 sign 都用它。
keytool -genkey -v -keystore release-key.keystore -alias cordova-demo -keyalg RSA -keysize 2048 -validity 10000
上面的命令意思是,生成一个 release-key.keystore 的文件,别名(alias)为 cordova-demo 。
过程中会要求设置 keystore 的密码和 key 的密码。我们分别设置为 testing
和 testing2
。这四个属性要记牢,下一步有用。
然后我们就可以用下面的命令对 APK 签名了:
jarsigner -verbose -sigalg SHA1 withRSA -digestalg SHA1 -keystore release-key.keystore android-apk/android-release-unsigned.apk cordova-demo
这里运行有可能会出错原因是android/android-release-unsigned.apk这里写的不对,原因是因为你的apk的位置写的不对,你可以找到apk将他复制到根目录下,然后地址改为./android-release-unsigned.apk或者你直接写你apk的位置。
这个命令中需要传入证书名 release-key.keystore
,要签名的 APK android-release-unsigned.apk
,和别名 cordova-demo
。签名过程中需要先后输入 keystore 和 key 的密码。命令运行完后,这个 APK 就已经改变了。注意这个过程没有生成新文件。
最后我们要用 zipalign
压缩和优化 APK :
zipalign -v 4 android-apk/android-release-unsigned.apk android-apk/cordova-demo.apk
这一步会生成最终的 APK,我们把它命名为 cordova-demo.apk
。它就是可以直接上传到应用商店的版本。
这一步不操作也可以。
一旦有了 keystore 文件,下次打包就可以很快了。你可以在 cordova build
中指定所有参数来快速打包。这会直接生成一个 android-release.apk
给你。
cordova build android --release -- --keystore="release-key.keystore" --alias=cordova-demo --storePassword=testing --password=testing2
但每次输入命令行参数是很重复的,Cordova 允许我们建立一个 build.json
配置文件来简化操作。文件内容如下:
{
"android": {
"release": {
"keystore": "release-key.keystore",
"alias": "cordova-demo",
"storePassword": "testing",
"password": "testing2"
}
}
}
下次就可以直接用 cordova build --release
了。
为了安全性考虑,建议不要把密码放在在配置文件或者命令行中,而是手动输入。你可以把密码相关的配置去掉,下次 build 过程中会弹出一个 Java 小窗口,提示你输入密码。
另一种配置方法是使用 Gradle ,一个 Android 的自动化构建工具。 cordova build android
的过程其实就是使用它。你要在 platforms/android
目录下建立 release-signing.properties
文件,内容类似下面这样:
storeFile=relative/path/to/keystore
storePassword=SECRET1
keyAlias=ALIAS_NAME
keyPassword=SECRET2
这个文件的名称和位置也是可以通过 Gradle 的配置 cdvReleaseSigningPropertiesFile
修改的。我觉得一般情况使用 build.json
就足够了。有兴趣的可以看这个 Cordova 官方教程
4.cordova app 图标更改
如何更改app图标
1.首先下载插件
cordova plugin add cordova-plugin-splashscreen
2.在config.xml文件中添加下面的内容
注意这里的density分别指的是不同手机的分辨率,不同分辨率的手机采用的而logo大小是不一样的
//这个值表示这个图标显示10000毫秒后消失。
上面图片的路径,你需要在你的根目录下面重新建一个文件夹res,然后在这个文件夹下面在建一个screen,再在不同的平台下面建立不同平台文件夹,然后在这个文件夹下面添加图片。
下面还有几句话:(书写在config.xml)中的。
设置为true的话,那么图片会适应手机分辨率,不会出现拉伸情况。
6.会遇到的bug
安装后手机app中无法打开应用程序中的外网链接
解决方案:
在config中白名单中添加
具体详情可以参考cordova中的白名单介绍