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')
}
相关推荐
李堇5 小时前
android滚动列表VerticalRollingTextView
android·java
lxysbly6 小时前
n64模拟器安卓版带金手指2026
android
游戏开发爱好者89 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20359 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥9 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓10 小时前
[JDBC]元数据
android
独行soc10 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能10 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿10 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc10 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮