无需用户知道,就可以使用基于cordova / phonegap的现有原生应用程序进行交换

我即将部署一个混合应用程序使用phonegap(对于Android和IOS)。 我们想在没有用户知道的情况下进行交换,所以我想我可以使用相同的设备ID(例如“de.company.myapp”) – 这样在下一次app store更新后,用户将安装新的应用程序。

请注意,在iOS上这似乎不成问题。

cordova config.xml

 <?xml version="1.0" encoding="UTF-8"?> <widget xmlns = "http://www.w3.org/ns/widgets" xmlns:gap = "http://phonegap.com/ns/1.0" id = "de.company.myapp" version = "1.0.0"> ... 

虽然testing这与android我得到这个错误:(注意,旧的本机应用程序已经安装在设备上)

 ... Installing app on device... >> >> /path/to/cordova/platforms/android/cordova/node_modules/q/q.js:126 >> throw e; >> ^ >> ERROR: Failed to launch application on device: ERROR: Failed to install apk to device: pkg: /data/local/tmp/Fahrschulcard-debug-unaligned.apk >> Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] 

所以这意味着apk签名不匹配。 删除旧的应用程序,我当然可以安装新的,但有很多的Android用户使用旧的应用程序,所以告诉他们所有的第一个删除旧的将是可怕的。

问题:

那么可以使用与用于构build本机应用程序相同的证书/签名?

有没有人有这种要求的经验,这是可能的吗?

为了回答我自己的问题,需要2件事来解决这个问题:

  1. 您将需要使用旧的本地应用程序签名的原始*.keystore文件(以及密码)
  2. 确保在你的android清单中禁用debugging选项

对于cordova构build,您将不得不创build一个名为ant.properties的文件,如本文所述。

只要创buildant.properties文件,您只需运行以下命令来创build已签名的发布准备apk文件platforms/android/ant-build/appname-release.apk

 $ cordova build android --release