Android Gradle 国内配置

1、分发配置

  • 位置:项目根目录/gradle/wrapper/gradle-wrapper.properties
修改成腾讯云的源地址x.x是你的版本,这个不用替换,只要替换域名和后面的路径。
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-x.x-bin.zip

2、增加包的下载源

  • 位置:项目的根目录/settings.gradle

Google的注释之后会有问题。但是也可以先尝试用aliyun下载大部分包,如果不行,再还原回来,剩下的用google源下载。

然后同步更新就可以了,如果旧的配置已经在更新中了,可以直接关闭Android Studio IDEA然后再打开。

全局变量带来的bug。

在类中定义了一个全局变量List<String> list存储用请求得到的结果,但是每次使用之前没有忘记清空,导致数据就会叠加在里面,结果就是后面使用的用户,能看到前面那位用户请求的结果。

幸好项目的数据不是非常敏感,如果是非常重要的信息,那么这将会是史诗级的程序灾难。

这让我想起了上次阿里云盘导致的权限问题,也是用户能看到其他用户的信息,而阿里的主要技术编程是java,那么真正引起的问题是不是某个程序定义了一个全局变量,而这个全局变量又没有进行及时的清空导致的呢?

VUE3中使用动态组件

有时候一个页面中我们需要加载很多个组件,而且这些组件需要根据服务器请求的数据来判断该用哪个组件。

举个使用场景:我们在做IM或者客服软件,在加载聊天记录的时候,就要根据服务器给出不同类型的消息加载不同的消息组件,有文本,图片,视频,音频,表情,附件等等。

如果我们用v-if也是可以做的,在组件多的情况下代码看起来就特别的臃肿,那么我们这个时候就可以用动态组件来做这个事情。

我们使用vue框架提供的动态组件component来做。

<component :is="item.component" v-for="(item,index) in messageList":key="index" :message="item"></component>

如果此代码放在vue2中是完全没有问题的,因为item.component是动态的组件名称。如果在vue3中就无效了。

原因是vue3使用的是组件实例,不再是组件名称。

那么我们需要添加一些东西

<script setup>
import ComA "./ComponentA";
import ComB "./ComponentB";

defineOptions({
  components: {
    ComA , ComB 
  }
})

</script>

我看网络上有写说用resolveComponent动态实例化,如下:

<component :is="resolveComponent(item.component)" v-for="(item,index) in messageList":key="index" :message="item"></component>


<script setup>
import {resolveComponent} from "vue";
import ComA "./ComponentA";
import ComB "./ComponentB";

</script>

在本人电脑上尝试无效果。