Android 自动升级故障之血泪排查

Android 自动升级故障之血泪排查

背景

我们的创业项目,好不容易接到了一个单,要在合作厂商的安卓平板上安装一批我们研发的APP,首批已经安装成功,由于这是定制产品,所以我们没有自己的应用市场,采用APK包方式安装。

如果我们app做了更新,会推送到平板,平板电机下载按钮自动安装。

此前我们是自己的产品,是B2C模式,打包是 release。现在是客户定制版本,是 B2B2C,需要很多条件编译,例如区分来自那个合作厂商,因为后面涉及到的盈利分成。

解决方案

我们的解决方案就是,增加构建类型 buildTypes,然后通过下面三种方式给APP传递参数

manifestPlaceholders.put("app_name", "netkiller")
buildConfigField("String", "apiUrl", "\"https://api.netkiller.cn\"")
resValue("string", "baseUrl", "https://api.netkiller.cn")

这样编译之后,每个合作厂商都会有专属定制的内容。我们只需要为每个合作厂商提供对应的 apk 文件即可。

下面就是我们例子

plugins {
    id("com.android.application")
}

android {
    namespace = "cn.netkiller.student"
    compileSdk = 33

    defaultConfig {
        applicationId = "cn.netkiller.student"
        minSdk = 27
        targetSdk = 33
        versionCode = 1
        versionName = "1.1.2"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

    }

    signingConfigs {
        create("release") {
            keyAlias = "key0"
            keyPassword = "netkiller"
            storeFile = file("netkiller.jks")
            storePassword = "netkiller"
        }
    }

    buildTypes {
        create("dev") {
//            signingConfig = signingConfigs.getByName("dev")
            manifestPlaceholders.put("app_name", "Neo")

            buildConfigField("String", "apiUrl", "\"http://192.168.3.10:8080\"")
            buildConfigField("String", "resUrl", "\"http://res.netkiller.cn\"")
            buildConfigField("String", "appId", "\"netkiller\"")
            buildConfigField("String", "appKey", "\"netkiller-cbae-4c1e-9d09-8ce65d76627a\"")
            buildConfigField("String", "appSecret", "\"5DA6CA3F-46C3-4B65-B5CF-5157F64B699F\"")
            buildConfigField("String", "subject", "\"tablet\"")

            buildConfigField("String", "mqttServerUri", "\"tcp://dev.netkiller.cn:1883\"")
            buildConfigField("String", "mqttUsername", "\"netkiller\"")
            buildConfigField("String", "mqttPassword", "\"6BAF9850-4075-4256-9106-688F28A335AD\"")
            signingConfig = signingConfigs.getByName("release")
        }

        create("example") {
            isDebuggable = true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

netkiller-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值