NativeScript 8.3(Vue/TS)版本号配置后无法正常生效求助
问题:NativeScript 8.3 Vue/TS 应用版本信息始终不生效
环境
- NativeScript 版本:8.3
- 技术栈:Vue + TypeScript
问题现象
无论调试还是发布构建,获取到的versionName始终为1.0.0,versionCode始终为1,手动配置的版本信息完全不生效。
已完成的配置操作
- 修改了
[project_root]/App_Resources/Android/src/main/AndroidManifest.xml,核心配置如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="3" android:versionName="1.0.2" package="__PACKAGE__"> ...
- 配置了
nsconfig.json(用于配合nativescript-app-sync及本地服务):
{ "appResourcesPath": "App_Resources" }
尝试过的版本获取方式(结果均为1.0.0/1)
- 使用
@nativescript/appversion插件:
let versionName = appversion.getVersionNameSync(); let versionCode = appversion.getVersionCodeSync();
- 通过Android原生API获取:
var packageManager = Application.android.context.getPackageManager(); let versionName = packageManager.getPackageInfo( Application.android.context.getPackageName(), 0 ).versionName; let versionCode = packageManager.getPackageInfo( Application.android.context.getPackageName(), 0 ).versionCode;
- 另一种Android原生API调用方式:
var packageManager = Utils.android.getApplicationContext().getPackageManager(); let versionName = packageManager.getPackageInfo( Utils.android.getApplicationContext().getPackageName(), 0 ).versionName; let versionCode = packageManager.getPackageInfo( Utils.android.getApplicationContext().getPackageName(), 0 ).versionCode;
解决方案
1. 优先配置package.json版本字段
NativeScript 8.x会自动读取package.json中的version字段并同步到平台版本信息,先修改该文件:
{ "version": "1.0.2" // 对应Android的versionName }
2. 单独设置Android的versionCode
若需要独立配置versionCode,需在App_Resources/Android/app.gradle中添加如下配置(优先级高于AndroidManifest.xml):
android { defaultConfig { versionCode 3 // 也可在此统一设置versionName,会覆盖AndroidManifest的配置 // versionName "1.0.2" } }
3. 清理构建缓存后重新构建
修改配置后执行以下命令,避免缓存影响:
ns clean ns build android --debug # 发布构建用 --release
原因说明
NativeScript 8.x的构建流程会自动同步package.json的版本号,且app.gradle的配置优先级高于AndroidManifest.xml,直接修改AndroidManifest会被构建脚本覆盖,导致配置不生效。
内容的提问来源于stack exchange,提问作者forloop
相关产品推荐
相关产品推荐

