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')
}
相关推荐
晓梦林2 小时前
cp520靶场学习笔记
android·笔记·学习
有味道的男人4 小时前
Open Claw对接1688平台
android·rxjava
_李小白5 小时前
【android opencv学习笔记】Day 17: 目标追踪(MeanShift)
android·opencv·学习
用户86022504674726 小时前
AI 分析头部APP系统优化框架
android
用户86022504674726 小时前
AI分析头部APP优化框架
android
2501_916007479 小时前
iOS开发中抓取HTTPS请求的完整解决方法与步骤详解
android·网络协议·ios·小程序·https·uni-app·iphone
lvronglee11 小时前
【数字图传第四步】Android App查看图传视频
android·音视频
90后的晨仔11 小时前
Android 程序入口与核心组件详解
android
90后的晨仔12 小时前
Kotlin 简介与开发环境搭建
android
BU摆烂会噶12 小时前
【LangGraph】House_Agent 实战(四):预定流程 —— 中断与人工干预
android·人工智能·python·langchain