uniapp动态读取版本号

app下build.gradle配置

js 复制代码
apply plugin: 'com.android.application'


// 从 manifest.json 读取版本号
def getVersionInfo() {
    // 根据实际路径调整,常见路径:
    // 'src/main/assets/apps/__UNI__0BD8113/www/manifest.json'
    def manifestFile = file('src/main/assets/apps/__UNI__0BD8113/www/manifest.json')

    // 调试信息
    println "======== 版本号读取调试 ========"
    println "当前目录: ${projectDir.absolutePath}"
    println "manifest.json 路径: ${manifestFile.absolutePath}"
    println "文件是否存在: ${manifestFile.exists()}"

    if (!manifestFile.exists()) {
        println "❌ manifest.json 文件不存在,使用默认版本号"
        println "================================"
        return [versionCode: 1, versionName: "1.0.0"]
    }

    try {
        def jsonSlurper = new groovy.json.JsonSlurper()
        def manifest = jsonSlurper.parse(manifestFile)

        // 从 version 对象中读取
        def versionCode = manifest.version?.code?.toInteger() ?: 1
        def versionName = manifest.version?.name ?: "1.0.0"

        println "✅ 读取到版本信息:"
        println "   versionCode = ${versionCode}"
        println "   versionName = ${versionName}"
        println "================================"

        return [versionCode: versionCode, versionName: versionName]
    } catch (Exception e) {
        println "❌ 解析 manifest.json 失败: ${e.message}"
        println "================================"
        return [versionCode: 1, versionName: "1.0.0"]
    }
}

// 获取版本信息
def versionInfo = getVersionInfo()

android {
    compileSdkVersion 36
    buildToolsVersion '36.0.0'

    // 应和离线打包时申请离线打包key的值一致
    namespace 'com.android.chuanwu'
    defaultConfig {
        // 应和离线打包时申请离线打包key的值一致
        applicationId "com.android.chuanwu"
        // 插件aar最低支持26
        minSdkVersion 26
        targetSdkVersion 36 //建议此属性值设为21 io.dcloud.PandoraEntry 作为apk入口时   必须设置 targetSDKVersion>=21 沉浸式才生效

        // 动态设置版本号
        versionCode versionInfo.versionCode
        versionName versionInfo.versionName

        multiDexEnabled true
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }

    signingConfigs {
        config {
            // 证书别名
            keyAlias ''
            // 证书密码
            keyPassword ''
            // 证书文件路径
            storeFile file('xxx.keystore')
            // 证书密码
            storePassword ''
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.config
            zipAlignEnabled false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            signingConfig signingConfigs.config
            zipAlignEnabled false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            // 自定义 APK 名称
            outputFileName = "app-${versionInfo.versionName}.apk"
        }
    }


    //使用uniapp时,需复制下面代码
    /*代码开始*/
    aaptOptions {
        additionalParameters '--auto-add-overlay'
        //noCompress 'foo', 'bar'
        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    /*代码结束*/
}
repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation fileTree(dir: 'libs', include: ['*.aar'])

    /*uniapp所需库-----------------------开始*/
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'com.facebook.fresco:fresco:1.13.0'
    implementation "com.facebook.fresco:animated-gif:1.13.0"
    /*uniapp所需库-----------------------结束*/
    // 基座需要,必须添加
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.alibaba:fastjson:1.2.83'
    implementation 'androidx.webkit:webkit:1.5.0'
    implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
    implementation 'androidx.core:core:1.1.0'
    implementation "androidx.fragment:fragment:1.1.0"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    // 添加uni-app插件
    implementation project(':uniplugin_scancode')
}
相关推荐
用户41659673693551 小时前
存量项目如何拥抱 KMP?从环境搭建到组件化集成的保姆级指南
android
技术摆渡人2 小时前
Android 系统技术探索(3)光影魔术(SurfaceFlinger & 图形栈)。
android
某空m3 小时前
【Android】浅析DataBinding
android·开发语言
sky北城4 小时前
You are not able to choose some of the languages, because locales for them a
android
儿歌八万首4 小时前
Jetpack Compose 实战:打造高性能轮播图 (Carousel) 组件
android·前端·kotlin
QING6185 小时前
Kotlin Flow 防抖(Debounce)详解
android·kotlin·android jetpack
QING6185 小时前
Kotlin Flow 防抖(Debounce)、节流(Throttle)、去重(distinctUntilChanged) —— 新手指南
android·kotlin·android jetpack
AI视觉网奇5 小时前
android yolo12 android 实战笔记
android·笔记·yolo
海上飞猪5 小时前
【Mysql】Mysql的安装部署和使用
android·mysql·adb