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')
}
相关推荐
xiangpanf6 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx9 小时前
安卓线程相关
android
消失的旧时光-194310 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon11 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon11 小时前
VSYNC 信号完整流程2
android
dalancon11 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
用户693717500138412 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android12 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才13 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android
阿明的小蝴蝶14 小时前
记一次Gradle环境的编译问题与解决
android·前端·gradle