老项目迁移AndroidStudio3.0遇到的坑

AndroidStudio3.0刚刚发布两天(版本控的我~),便迫不及待的升级了,升级前也明白这次的版本跨度较大,老项目可能存在很多的问题,没成想还是从中午折腾到了晚上十点.不过结果还不错,成功的跑起来了项目. 列出踩过的坑,希望后面要升级的小伙伴遇到类似的问题可以做个参考;

1.升级安装

升级方法:

1. 直接用自带的更新工具

操作步骤: >菜单栏>Help>Check for Updates..(前提网络要绝对的畅通,你懂的)

2. 手动的下载新的版本

下载地址https://developer.android.google.cn/studio/archive.html#android-studio-3-0?utm_source=androiddevtools.cn&utm_medium=website (国内可以访问)

升级完成后,打开原有项目,在经过一段时间到indexing后

如果你的项目可以运行,OK,恭喜你,接下来的内容,你可以选择忽略,因为你的项目很nice,啥问题没有(我不相信你啥问题都没有~毕竟我踩了这么多的坑);
如果项目存在配置的问题,那么便可能产生如下问题:

2.问题

1.配置了腾讯的资源文件压缩插件导致的异常

我的项目在indexing后出现的第一个问题

Could not GET 'http://oss.jfrog.org/artifactory/oss-snapshot-local/com/tencent/mm/AndResGuard-gradle-plugin/1.2.1/AndResGuard-gradle-plugin-1.2.1.pom'. Received status code 409 from server: Conflict Enable Gradle 'offline mode' and sync project

看到这个异常我的第一反应就是项目中配置了腾讯的资源文件压缩插件,果断移除;

移除步骤:
1. 在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

//资源文件混淆压缩classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.1'

2. 在应用级别的build.gradle的顶部移除

apply plugin: 'AndResGuard'//资源文件混淆压缩

3. 第二条中提到build.gradle文件中相关的资源压缩配置需要一并的移除;

andResGuard {
//mappingFile = file("./resource_mapping.txt")
mappingFile = null
// 当你使用v2签名的时候,7zip压缩是无法生效的。
use7zip = true
useSign = true
// 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
keepRoot = true
whiteList = [
// for your icon
"R.drawable.icon",
// for fabric
"R.string.com.crashlytics.*",
// for umeng update
"R.string.umeng*",
"R.string.UM*",
"R.string.tb_*",
"R.layout.umeng*",
"R.layout.tb_*",
//=========↓↓美洽↓↓=========
"R.layout.mq_*",
"R.drawable.mq_*",
"R.style.mq_*",
"R.string.mq_*",
"R.color.mq_*",
//=========↑↑美洽↑↑=========
//=========↓↓ping++↓↓=========
"R.layout.*pingpp*",
"R.drawable.pingpp*",
"R.drawable.tips_bg.9.png",
"R.style.*pingpp*",
"R.string.*pingpp*",
"R.id.pingpp*",
"R.color.*pingpp*",
//=========↑↑ping++↑↑=========
"R.drawable.umeng*",
"R.drawable.tb_*",
"R.anim.umeng*",
"R.color.umeng*",
"R.color.tb_*",
"R.style.*UM*",
"R.style.umeng*",
"R.id.umeng*",
// umeng share for sina
"R.drawable.sina*",
// for google-services.json
"R.string.google_app_id",
"R.string.gcm_defaultSenderId",
"R.string.default_web_client_id",
"R.string.ga_trackingId",
"R.string.firebase_database_url",
"R.string.google_api_key",
"R.string.google_crash_reporting_api_key",
// umeng share for facebook
"R.layout.*facebook*",
"R.id.*facebook*",
// umeng share for messager
"R.layout.*messager*",
"R.id.*messager*",
// umeng share commond
"R.id.progress_bar_parent",
"R.id.webView"
]
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
"resources.arsc"
]
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.2.1'
//path = "/usr/local/bin/7za"
}
}

上述操作完后,同步代码,该问题KO;

2.一直卡在Refreshing项目

第一条中的问题解决后,我出现了

这种提示,在正常的流程中,如果不出现第一个问题,会首先出现这个提示,意思是升级现在项目的编译插件,相信之前升级过AS版本的同学在第一次运行新版本的时候见过这个提示,直接点击update按钮就行了.如果不想接着踩坑那么点击Dont't reminmd me againg for this project按钮就可以了,它代表你还是用之前版本的插件来运行当前项目,也就不会出现后面一大串的问题;

这里直接点击update按钮;
点击之后如果你网络不畅通的话就会一直的

之所以会这样,是因为
点击该按钮后实际上做了两件事情

在主项目的build.gradle文件中的dependencies节点中更改了

//原先的插件版本 classpath 'com.android.tools.build:gradle:2.3.3'
//更改后的插件版本 classpath 'com.android.tools.build:gradle:3.0.0'

在项目目录中的gradle > gradle-wrapper.properties文件中的distributionUrl字段更改了

//原先的插件版本 distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip
//更改后的插件版本 distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip

这两个文件修改后AS就会去下载https://services.gradle.org/distributions/gradle-4.1-all.zip这个文件,不用点什么奇技淫巧,就等AS下载完吧(基本完不了)

这里给出两种解决方案:
两种解决方案的前提条件是先把该文件下载下来,AS下载的奇慢,那么把https://services.gradle.org/distributions/gradle-4.1-all.zip扔到迅雷中,分分钟下载完成(迅雷功能不止于此~);

把文件放到本地的Tomcat服务器,或者IIS服务器中,或者免费的七牛云服务中,获取这个文件的下载地址,修改 gradle-wrapper.properties文件中distributionUrl的值为你的下载地址,关闭AS,重新打开(亲测可行);

找到.gradle文件夹路径:windows一般在 C:\Users\<当前登录用户名>.gradle,
mac是在:用户/(当前用户目录)/.gradle,解压下载好的文件到该目录中,关闭AS,重新打开(未亲测);

3.修改输出apk的文件名导致的异常

第二条问题解决后,出现了

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=tiger8shopDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl. Open File

点击Open File定位到应用级别的build.gradle文件中的这个位置

static def releaseTime() {
return new Date().format("yyyy-MM-dd-HH-mm", TimeZone.getDefault())//包含时分秒
}

static def debugTime() {
// return new Date().format("yyyy-MM-dd", TimeZone.getDefault())
return new Date().format("yyyy", TimeZone.getDefault())
}
//=============================上面的代码定义在android节点外,AS3.0版本如果需要输出apk文件名带上时间,上面代码你可以参考下===================================
//文件输出名增加版本号和时间
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName
if (outputFile.name.contains("debug")) {//debug版本,使用自己的文件名,方便记忆
fileName = "$applicationId _v${defaultConfig.versionName}_${debugTime()}_code${defaultConfig.versionCode}_debug.apk"
output.outputFile = new File(outputFile.parent, fileName)//Open File后定位到这个位置,这个配置,识别不出outputFile是啥了
} else {
fileName = "$applicationId _v${defaultConfig.versionName}_code${defaultConfig.versionCode}_${releaseTime()}_${variant.productFlavors[0].name}_release.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}

这个是自己之前配置的可以控制AS输出的apk文件的名称,新版本不能这样配置了,看官方的引导可以改成

//AS3.0版本
android.applicationVariants.all { variant ->
variant.outputs.all {
if (variant.name.endsWith("Debug")) {
//debug包
outputFileName = "$applicationId _v${defaultConfig.versionName}_${debugTime()}_code${defaultConfig.versionCode}_debug.apk"
} else {
//release包
outputFileName = "$applicationId _v${defaultConfig.versionName}_code${defaultConfig.versionCode}_${releaseTime()}_release.apk"
}
}
}

效果和之前差不多,直接更改,问题KO

4.之前项目中配置了第三方APT插件导致的异常

如上图这个异常是我折腾最长时间的问题,各种百度,Google最终得知和新版本AS3.0中自带了APT处理插件有关,因为自己之前配置的第三方的APT插件,所有它们冲突了~,那么移除则异常KO;

移除步骤
1. 在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

2. 在应用级别的build.gradle的顶部移除

apply plugin: 'android-apt'

3. 在应用级别的build.gradle的dependencies节点中,替换所有用apt开头的引依赖为annotationProcessor例如

//替换之前
apt "com.jakewharton:butterknife-compiler:$rootProject.ext.globalButterKnifeAptVersion"
//替换之后
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.ext.globalButterKnifeAptVersion"

上面三步操作完成后,同步项目,问题解决

5.BuildTool最低版本异常

这个异常出现就显而易见了,AS3.0最低支持的BuildTools插件是26.0.2版本,别问我BuildTools是啥,我也不知道(顾名思义,AS的编译工具);BuildTools的版本改到26.0.2版本,同步代码就好了,如果你的SDK中没有下载BuildTools26.0.2版本,AS会自动的提示你去下载,下载完同步代码,即可;

6.BuildTool库项目版本不统一问题


AS3.0对于库项目的build.gradle的配置也进行了干预,官方说可以加快编译速度,想想也是,库项目都用不同版本的BuildTool,编译起来肯定慢;所以这里点击Open File之后,定位到的build.gradle文件,修改里面的buildToolsVersion节点为26.0.2即可

如果项目中的库项目较多,建议将buildToolsVersion版本配置到gradle.properties文件中,然后项目中的库项目都引用该配置,改一处,则整个项目的buildToolsVersion配置都改了,别问我咋配置的,因为这会跑题,自行百度

7.multidex版本异常

这个问题说的是AS3.0解析multidex1.0.2版本失败,为什么失败?

因为现在google自家的依赖,全部都收回到了自家的CDN服务器了,之前在项目级的build.gradle文件中的repositories节点中配置jenter(),就可以获取大部分的依赖(虽然慢了点),但是现在Google官方需要我们在repositories节点中配置上google(),作用就是获取自家的依赖,而原先的jcenter()不需要动;而multidex是Google的依赖所以只用之前的jcenter(),肯定是解析不到它了.
配置例如

repositories {  google()//新增的  jcenter()}

项目级的build.gradle文件中的有两个repositories节点,都配置上google()

同步项目,问题KO

8.Lambda插件冲突

Warning:One of the plugins you are using supports Java 8 language features. To try the support built into the Android plugin, remove the following from your build.gradle:
apply plugin: 'me.tatarka.retrolambda'
To learn more, go to https://d.android.com/r/tools/java-8-support-message.html

这个不用多说相信大家在准备升级AS3.0都知道,它的一大特性是支持了JAVA8,而项目之前为了能用Lambda,而用了第三方的插件,这里移除即可;

移除步骤
1. 在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

classpath 'me.tatarka:gradle-retrolambda:3.2.0'//lambda表达式

2. 在应用级别的build.gradle的顶部移除

apply plugin: 'me.tatarka.retrolambda'//lambda表达式

上面两步操作完成后,同步项目,问题解决

9.flavor配置异常

Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

这个可以参考官方给出的文档地址(网络要绝对的通畅~)
问题出现在之前的flavor配置不能用了,别问我flavor是啥,你自己配置的你不知道~(主要作用,多渠道打包

//之前的配置
productFlavors {
_360 {}
baidu {}
xiaomi {}
meizu {}
tencent {}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [CLICK_CHANNEL_VALUE: name]
}
// ==============================分割线===================================
//改成如下配置,问题解决
flavorDimensions "tier"//新增的,值是数组
productFlavors {
_360 { dimension "tier"}
baidu { dimension "tier"}
xiaomi { dimension "tier"}
meizu { dimension "tier"}
tencent { dimension "tier"}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [CLICK_CHANNEL_VALUE: name]
}

想知道为什么这样配置,可以看看官方文档

至此上述配置更改后,我的项目同步代码不报错了~,但是坑远远没有填完,继续

10.AAPT2编译异常

这一大串的异常在编译的时候报出,我在第一次导入项目的时候遇到了,第二次导入其它项目的时候,竟然没有遇到,对比之下得出问题是出在配置了高版本的support包的问题,当你把项目所有support包的版本配置到25.2.0的时候什么问题都没有,但是配置成26.0.0或者27.0.0版本的时候就会出现这个问题(亲测);

解决方案

1. 使用低版本的support包,把项目所有support包的版本配置到25.2.0或者其它较低的版本

2. 配置gradle.properties中关闭AAPT2编译,说人话就是在其中增加android.enableAapt2=false配置,再次编译问题解决(推荐),例如

android.enableAapt2=false

同步代码,问题KO;

11.方法找不到异常/或者有点莫名其妙的异常

这两个异常产生的的原因是因为第九条如果你升级了support包的版本的时候compileSdkVersion的版本没有更改,亲测如果你的support包更改到了26.0.0或以上的话,需要更改项目中所有的compileSdkVersion为26或以上

compileSdkVersion = 26

更改好,同步代码,问题解决

到这我的项目可以运行,可以调试了,以为终于KO了所有问题了,但是但是编译输入release包的时候内存溢出了,WTF

12.生成release包异常

看到这个异常我是一脸的蒙蔽,各种百度,google都没有说这个问题,咋滴,不让用啦,手动打包啊~,但是到夜里的时候忽然灵光一现,WTF,会不会是又是啥第三方依赖的问题,毕竟很多问题都是因为第三方的依赖,于是乎,连忙的注释了,一大堆的项目级别的build.gradle文件中的一些依赖,经过测试,定位到了美团的热更新,然后移除了,相关的配置,然后一些正常~~

移除步骤
1. 在项目级别的build.gradle也就是最外层的build.gradle文件中的dependencies节点中,移除

2. 在应用级别的build.gradle的顶部移除

apply plugin: 'robust'//美团热更新框架

3. 在应用级别的build.gradle的dependencies节点中的

//美团热更新框架 compile "com.meituan.robust:robust:${ROBUST_VERSION}"

依赖可以不移除(不移除也是可以正常生成apk文件的,只是热更新无法使用),这个依赖如果移除了,那么你代码中相关的热更新代码也需要移除,否则就是找不到相关的类了;

** 最后的最后,AS3.0算是彻底的用上了,编译速度相比之前有没有增快,新特性好不好用,有待后续的使用了.
希望大家在升级AS3.0的时候如果遇到和我相同的问题,可以做一个参考 **

下面我们在来看一篇经常遇到的坑的经典问题:

最近 Android Studio 3.0 版本正式推出,趁着项目刚发完版本,赶紧更新试试水,结果发现项目完全跑不起来,折腾了几个小时才搞好。记录一下填坑过程,希望能帮助其他同学。

1. gradle 和 buildToolsVersion 版本

Android Studio 3.0 要求 gradle 版本为 4.1 ,对应的 buildToolsVersion 为 26.0.2 ,然后记得在项目最外层的 build.gradle 添加 google() ,如果不添加将会导致某些官方依赖下载不了。

buildscript {
repositories {
...
google()
}
}

2. module 依赖方式变更

原先依赖 module 使用的是 compile ,现在需要替换为 api 或 implementation。
api : module 编译时可用,module 的使用者编译和运行时可用,这个和过时的 compile 一样的。
implementation : module 编译时可用,module 的使用者运行时可用,对于大量使用 library 的项目,可以显著提高编译时间,因为它可以减少构建系统重新编译一些 module 。
那么什么时候用 api ,什么时候用 implementation 呢?由于公司项目采用的是组件化开发,有个 common module 需要被各个组件依赖,一开始采用的是 implementation ,结果发现会导致别的组件无法引用 common 中的库( common -> A module ,A module 无法引用 common 依赖的库 )。
试验过后得出结论,当这个 module 会被多次引用应该使用 api,不会被别的 module 引用使用 implementation 。
发一下我现在使用的方式

dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
api 'com.squareup.okhttp3:okhttp:3.4.2'
...
debugApi 'com.squareup.leakcanary:leakcanary-android:1.5.1'
releaseApi 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
}

compileOnly 替换了 provided,runtimeOnly 替换了 apk。

3. apt 插件更换

apt 插件已被废弃,需更换为 annotationProcessor 。

//apply plugin: 'android-apt'

dependencies {
...
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}

4.第三方库不兼容问题

· retrolambda
Android Studio 3.0 已经支持 Java 8 了,不需要第三方库来支持,因此需要去掉 retrolambda 库。
项目最外层的 build.gradle

buildscript {
...
dependencies {
...
//classpath 'me.tatarka:gradle-retrolambda:3.2.5'
}
}

module 中的 build.gradle

2. 在应用级别的build.gradle的顶部移除

apply plugin: 'robust'//美团热更新框架

3. 在应用级别的build.gradle的dependencies节点中的

//美团热更新框架
compile "com.meituan.robust:robust:${ROBUST_VERSION}"

依赖可以不移除(不移除也是可以正常生成apk文件的,只是热更新无法使用),这个依赖如果移除了,那么你代码中相关的热更新代码也需要移除,否则就是找不到相关的类了;

(0)

相关推荐

  • 详解关于Android Studio中安装和gradle的一些坑

    本人从开始用Android Studio到现在已经快一年了吧,在我刚开始用的时候Android Studio还是1.2的版本.当时安装会因为国内墙的缘故,导致下载SDK步骤卡死无法安装. 最近的版本似乎都没出现这个问题,但是还是要吐槽一下最近的2.2.3的更新.这个版本安装包自带的SDK里build tools版本是25.0.2,支持的最低gradle版本是3.3,然而安装包内自带的gradle版本是3.2,所以单纯这个用安装包你并不能建立任何完整的项目,连自带的Helloworld项目都会报错

  • 老项目迁移AndroidStudio3.0遇到的坑

    AndroidStudio3.0刚刚发布两天(版本控的我~),便迫不及待的升级了,升级前也明白这次的版本跨度较大,老项目可能存在很多的问题,没成想还是从中午折腾到了晚上十点.不过结果还不错,成功的跑起来了项目. 列出踩过的坑,希望后面要升级的小伙伴遇到类似的问题可以做个参考; 1.升级安装 升级方法: 1. 直接用自带的更新工具 操作步骤: >菜单栏>Help>Check for Updates..(前提网络要绝对的畅通,你懂的) 2. 手动的下载新的版本 下载地址https://dev

  • 浅谈Android Studio3.0更新之路(遇坑必入)

    序言:作为这个世界上走在最前沿的生物"猿",怎么能对新事物一无所知呢,10月26日,随着Android 8.1 Oreo的预览版发布,Android Studio3.0正式版也发布了,作为Android开发的猿们我们应该早就知道谷歌在今年5月的开发者大会上就说了要支持Kotlin语言,所以这次更新一个比较大的点就在于支持Kotlin语言了,下面就跟着LZ的脚步来探索一下AS3.0吧 相信很多人很早就体验过谷歌爸爸放出来的体验版本了,虽然说正式版已经出了,但是很多人也不敢轻易贸然的更新,

  • Android Studio升级到3.0后遇到的坑

    这几天谷歌推出了as3.0的正式版,相信大家都进行更新了,然后对3.0的新特性也有过一些了解,最后磨刀霍霍开始宰杀,然鹅却一不小心就开始了排坑之路. 第一坑.必须升级gradle到4.0以上 相信这个大坑,一般使用as的人都会解决了,所以就不多说 第二坑.buildToolsVersion升级到26.0.0 其实这个不算坑,一般buildToolsVersion都会升级到最新的版本,直接更新就是了 第三坑.Error:Resource shrinker cannot be used for li

  • 浅析Android Studio 3.0 升级各种坑(推荐)

    点击 Check for Updates 增量更新: 下载完成,会提示更新 您将 Gradle 更新至 4.1: 这里建议您对老项目先暂时点击 Don't remind me on this project,以防有坑.当然我不入地狱谁入地狱,我点 Update,于是问题来了,一直处于下载中,不过,莫担心,我下载好了,公众号聊天界面回复「 gradle-4.1-all 」,下载 gradle-4.1-all.zip 文件,放到: 重启 Android Studio. gradle 目录: Mac系

  • 详解AndroidStudio3.0开发调试安卓NDK的C++代码

    本文介绍了AndroidStudio3.0开发调试安卓NDK的C++代码,分享给大家,具有如下: 一.新建项目 新建项目,没有发现Include C++ Support 选项.因为印象中是有过该选项的,找了半天没找到. 后来无意间拖了下窗口大小,原来是被隐藏了,真特么坑. 新建一个测试项目,勾选Include C++ Support 选项,看看工程上有哪些不同. 1.gradle 首先看gradle文件,android节点下添加: externalNativeBuild { cmake { pa

  • clipse项目迁移到android studio的方法(图文最新版)

    前言 最近Android studio(下文简称AS)官方发布了正式版,目前火得不行.个人认为主要是因为android是google自家的产品,AS也是他自己搞的IDE,以后的趋势android开发肯定会用AS,至于eclipse的adt插件是否继续更新就不可而知了.最近我也在android官网找了一下集成好的adt-bundle,但没有找到,可能是路径变了(搜索也没有找到)或者是真的为了支持AS就下架了.Github上现在也是一大堆的AS项目,所以这是个趋势啊. 之所以写本文是因为网上找的ec

  • Android Studio3.0.1填坑笔记

    从前听大神同事强老师说IntelliJ IDEA 功能强大,是Jet Brains 公司开发商业IDE(集成开发环境),同时支持Java, Scala 和Groovy.商业IDE即IntelliJ 是一款收费的IDE,当然了其实也有免费的社区版本,但是很多功能都被阉割了.IntelliJ 除了支持Android项目开发,还可以搭建java web 开发环境,功能比AS更强大. 阿拉最近重装了电脑,想着干脆也装个IntelliJ 吧,但是另一个同事说Intellij与AS会冲突.一开始我觉得是他太

  • 详解vue-cli@2.x项目迁移日志

    vue-cli@2.x项目迁移日志 虽然 vue-cli@3 早就已经巨普及了,新项目应该已经很少有人还有使用 vue-cli@2.x . 但是对于一些稍微早些时候的 vue 项目,如果当时没有做一些优化.配置,随着 webpack vue 等包的升级,有一些配置已经不一样了,并且关于 vue-cli@2.x 项目的文档.博客也越来越少,如果遇到问题也许也会有麻烦,因此就想着把当前的 vue-cli@2.x 项目原地升级配置. 项目结构 vue-cli@2.x 项目结构,其中红色圈出的部分是 2

  • 把.net Core 项目迁移到VS2019 for MAC的方法步骤

    VS2019 for MAC已经发布很长时间了,本以为项目移过去很麻烦,一直没有动作,最近呆家里快发霉了,决定研究研究,没想到一句代码都不需要动,直接完功,这下可以生产了.同学们可以放心整了. 本次平台的需求: MAC OS : mac OS Catalina 10.15.3 VS 2019 : VS for Mac community 8.4.8 .net Core : Core 3.1 Sql Server : Docker Sql Server 2019 原平台: windows 10+v

  • Android项目迁移到AndroidX的方法步骤

    1. 写在前面 迁移前请确认所有代码都已提交至代码托管平台或已手动备份! 迁移前请确认所有代码都已提交至代码托管平台或已手动备份! 迁移前请确认所有代码都已提交至代码托管平台或已手动备份! 重要的事情说三遍! 2. 前提条件 将AS更新至 AS 3.2及以上,最好是3.5 Gradle 插件版本改为 4.6及以上,项目下gradle/wrapper/gradle-wrapper.propertie文件中的distributionUrl改为:distributionUrl= https://ser

  • 详解antd+react项目迁移vite的解决方案

    antd+react+webpack往往是以react技术栈为主的前端项目的标准组合,三者都有成熟的生态和稳定的表现,但随着前端圈的技术不断革新,号称下一代构建平台vite2的发布,webpack似乎不那么香了,为什么这么说呢,因为vite太快了.经过一段时间的尝试,决定在项目中把webpack替换成vite试试,遂写成本文分享给大家. Vite是什么 作为本文的主角,首先简单介绍一下vite这个构建工具,该工具是尤雨溪推出的[下一代前端开发和构建工具],vite其实也不是一个新的工具,早在一年

  • 一次mysql迁移的方案与踩坑实战记录

    目录 背景 方案一:老数据备份 方案二:分表 方案三:迁移至tidb 重点说下同步老数据遇到的坑 最终同步脚本方案 总结 背景 由于历史业务数据采用mysql来存储的,其中有一张操作记录表video_log,每当用户创建.更新或者审核人员审核的时候,对应的video_log就会加一条日志,这个log表只有insert,可想而知,1个video对应多条log,一天10w video,平均统计一个video对应5条log,那么一天50w的log, 一个月50 * 30 = 1500w条记录, 一年就

随机推荐