提问人:Phil B 提问时间:11/11/2023 最后编辑:Phil B 更新时间:11/17/2023 访问量:19
已解决:Cordova Gradle 项目:需要覆盖 platformBuildVersionCode
SOLVED: Cordova Gradle project: need to override platformBuildVersionCode
问:
关于如何覆盖 gradle build 和 AAPT 进程添加到 apk 清单的默认 platformBuildVersionCode 和 platformBuildVersionName 值,我陷入了两难境地。 我需要这样做的原因是,对于以前使用较旧的 Cordova (v9.0.0) 和 gradle 版本 (v4.2.2?) 构建的旧版应用程序,该应用程序在 apk 的清单中生成了以下内容:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.yyy.zzz"
android:versionCode="21200"
android:versionName="2.1.2"
android:compileSdkVersion="28"
android:compileSdkVersionCodename="9"
platformBuildVersionCode="21200"
platformBuildVersionName="2.1.2">
<uses-sdk
android:minSdkVersion="22"
android:targetSdkVersion="30" />
...
我不是 100% 确定为什么在早期的 Gradle 构建期间设置了 platformBuildVersionCode 和 platformBuildVersionName 值并应用了 versionCode 和 versionName 值(可能是这个:https://issuetracker.google.com/issues/124227171?)但该应用程序是与这些一起发布的,所以现在必须忍受它。 该应用程序使用 PouchDB 将数据存储在 indexedDB 中,并且需要相关数据才能通过更新保持可用。
我现在正在尝试使用 Cordova (v12.0.0) 和 Gradle v7.6.3 进行构建,并更新了插件和 targetSDK,但以下是 appk 清单中生成的内容:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.yyy.zzz"
android:versionCode="21300"
android:versionName="2.1.3"
android:compileSdkVersion="33"
android:compileSdkVersionCodename="13"
platformBuildVersionCode="33"
platformBuildVersionName="13">
<uses-sdk
android:minSdkVersion="24"
android:targetSdkVersion="33" />
...
新安装工作正常,但它不会作为旧安装的更新安装,因为 Android 认为 platformBuildVersionCode 现在较低。(错误:包与同名的现有包冲突。
为了更新 platformBuild 值,我尝试在 config.xml 和 AndroidManifest.xml 中指定 platformBuildVersionCode (“21300”) 和 platformBuildVersionName (“2.1.3”),但这些设置似乎在以后被忽略或覆盖。
我还尝试将以下相应行添加到gradle.build文件中,但这会导致构建错误:“找不到参数[21300]的方法platformBuildVersionCode()...”。
android {
namespace cordovaConfig.PACKAGE_NAMESPACE
defaultConfig {
versionCode cdvVersionCode ?: new BigInteger("" + privateHelpers.extractIntFromManifest("versionCode"))
applicationId cordovaConfig.PACKAGE_NAMESPACE
minSdkVersion cordovaConfig.MIN_SDK_VERSION
if (cordovaConfig.MAX_SDK_VERSION != null) {
maxSdkVersion cordovaConfig.MAX_SDK_VERSION
}
targetSdkVersion cordovaConfig.SDK_VERSION
compileSdkVersion cordovaConfig.COMPILE_SDK_VERSION
platformBuildVersionCode 21300
platformBuildVersionName "2.1.3"
}
...
(注意:我已经尝试了 platformBuildVersionCode 的带引号和不带引号的变体,结果相同。
我开始怀疑是 AAPT 进程可能添加了这些内容并覆盖了构建过程中通过 config.xml 或 AndroidManifest.xml 提供的任何内容。 欢迎就如何让 apk 的清单具有 platformBuildVersionCode=“21300”(和 platformBuildVersionName “2.1.3”)提出任何建议?
提前致谢!
问题已解决:
- 我随后发现可以使用 Apktool 更改清单,但是......
- 遇到的更新问题实际上是由于其他原因造成的:调试版本发生时发生,因为调试密钥已更改(可能是由于更改了 Android 构建工具版本?
答: 暂无答案
下一个:重复类离子电容器插件问题
评论