<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AndroidTalk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AndroidTalk</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AndroidTalk]]></copyright><item><title><![CDATA[android的哪些Activity不混淆？]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121446007</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121446007</guid><author>AndroidTalk</author><pubDate>Sat, 20 Nov 2021 21:36:18 +0800</pubDate><description><![CDATA[Manifest文件中注册的Activity（四大组件）是不能混淆的。因为Android系统在做安全验证的时候会从Manifest文件查所有注册Activity的class文件的路径是否正确。如果混淆了，就找不到了。只要是没在manifest文件注册的，都会参与混淆，比如BaseActivity。
...]]></description><category></category></item><item><title><![CDATA[okhttp执行流程]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121310508</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121310508</guid><author>AndroidTalk</author><pubDate>Sat, 13 Nov 2021 21:28:15 +0800</pubDate><description><![CDATA[1. newCall（Request）方法会返回一个RealCall对象，它是Call接口的实现。当调用 RealCall.execute() 的时候，RealCall.getResponseWithInterceptorChain()会被调用，它会发起网络请求并拿到返回的响应，装进一个Response对象并作为返回值返回；RealCall.enqueue（）被调用的时候大同小异，区别在于enaueue()会使用Dispatcher的线程池来把请求放在后台线程进行，但实质上使用的同样也是 getRe...]]></description><category></category></item><item><title><![CDATA[Rettrofit设计模式]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121293379</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121293379</guid><author>AndroidTalk</author><pubDate>Fri, 12 Nov 2021 18:12:43 +0800</pubDate><description><![CDATA[外观模式(门面模式)


Retrofit给我们暴露的方法和类不多。核心类就是Retrofit，我们只管配置Retrofit，然后做请求。剩下的事情就跟上层无关了，只需要等待回调。这样大大降低了系统的耦合度。对于这种写法，我们叫外观模式(门面模式)。

几乎所有优秀的开源library都有一个门面。比如Glide.with() ImageLoader.load() Alamofire.request()。有个门面方便记忆，学习成本低，利于推广品牌。 Retrofit的门面就是retrofit.create(]]></description><category></category></item><item><title><![CDATA[Rettrofit注解]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121290363</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121290363</guid><author>AndroidTalk</author><pubDate>Fri, 12 Nov 2021 16:16:50 +0800</pubDate><description><![CDATA[Retrofit还提供了很多其他的注解类型


第一类：网络请求方法


1.@GET、@POST、@PUT、@DELETE、@HEAD分别对应 HTTP中的网络请求方式
2.@HTTP替换@GET、@POST、@PUT、@DELETE、@HEAD注解的作用 及 更多功能拓展
具体使用：通过属性method、path、hasBody进行设置

public interface GetRequest_Interface {
  /**
  * method：网络请求的方法（区分大小写）
  ...]]></description><category></category></item><item><title><![CDATA[Retrrofit注解]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121286283</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121286283</guid><author>AndroidTalk</author><pubDate>Fri, 12 Nov 2021 13:34:54 +0800</pubDate><description><![CDATA[Retrofit2注解:
@GETGET网络请求方式

@POSTPOST网络请求方式

@Headers头信息参数

@Path 路径参数.替换url地址中 "{" 和 "}"所包括的部分

@Query查询参数.将在url地址中追加类似"page = 1"的字符串,形成提交给服务器端的请求参数

@QueryMap查询参数集合.在url地址中追加类似"type = text &amp; count = 30 &amp; pag...]]></description><category></category></item><item><title><![CDATA[Plugin with id ‘maven’ not found]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120462131</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120462131</guid><author>AndroidTalk</author><pubDate>Fri, 12 Nov 2021 13:33:49 +0800</pubDate><description><![CDATA[Plugin with id ‘maven’ not found
limingbocsdn 2021-08-31 12:55:42  225  收藏
分类专栏： Android 文章标签： maven java
版权
Android
专栏收录该内容
3 篇文章0 订阅
订阅专栏
问题描述：
最近引入maven插件出问题了，总是报错找不到maven插件。
Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id ‘mave]]></description><category></category></item><item><title><![CDATA[retrofit基本使用]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121284001</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121284001</guid><author>AndroidTalk</author><pubDate>Fri, 12 Nov 2021 11:08:32 +0800</pubDate><description><![CDATA[Retrofit2简单的说就是一个网络请求的适配器，它将一个基本的Java接口通过动态代理的方式翻译成一个HTTP请求，并通过OkHttp去发送请求。此外它还具有强大的可扩展性，支持各种格式转换以及RxJava。本文基于Retrofit2解析。
Retrofit2基本使用
先定义一个PersonalProtocol的java接口


public interface PersonalProtocol {
    /**
     * 用户信息
     * @param page
     * @retur]]></description><category></category></item><item><title><![CDATA[https相关知识]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121277708</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121277708</guid><author>AndroidTalk</author><pubDate>Thu, 11 Nov 2021 22:14:32 +0800</pubDate><description><![CDATA[定义：

HTTP over SSL 的简称，即工作在 SSL(Secure Socket Layer) (或 TLS(Transport Layer Secure))上的 HTTP。说白了就是加密通信的 HTTP。它不是一个单独的协议，而是在HTTP之下增加的一个安全层（TLS），用于保障HTTP的加密传输。


本质：
在客户端和服务器之间协商出一套对称密钥，每次发送信息之前将内容加密，收到之后解密，达到内容的加密传输。

为什么不直接⽤⾮对称加密?
⾮对称加密由于使用了复杂的数学原理，因此计算相当复.]]></description><category></category></item><item><title><![CDATA[传输层TCP相关知识]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121275046</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121275046</guid><author>AndroidTalk</author><pubDate>Thu, 11 Nov 2021 20:04:42 +0800</pubDate><description><![CDATA[为什么三次握手？


不采用2次： 避免服务端收到过时的请求。
这是为了防止超时重传的无效的连接请求报文到达B服务机。
 1. 因为有可能A先发了一个连接请求报文，但是由于网络的1问题，迟迟没有到达B主机，这时候，A主机就超时重传了该报文，然后B主机响应了该请求报文，但是不妙了，第一个报文居然又到了B主机，那么B主机就会把它作为新的连接请求，
  a. 如果只有两次握手，那么B主机对于该连接请求也会建立连接，
  b. 但是如果是三次握手，B主机发出确认报文后，A主机不予理睬，...]]></description><category></category></item><item><title><![CDATA[2021-11-11]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121273098</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121273098</guid><author>AndroidTalk</author><pubDate>Thu, 11 Nov 2021 18:41:49 +0800</pubDate><description><![CDATA[为什么要分层？

网络不稳定，传输失败会发生，为了稳定。
因为网络是不稳性的， 而且网络中的数据可能会很大，如果中途传失败了则还得重头开始将此数据传一遍，那网络的利用率是极低的

为什么有HTTP：

 
为什么有TCP？ 1、拆分：将数据进行分段进行传输，所以可以将大数据拆成几段。
处理包的分发。数据拆分及重试。 2、重传：
 比如说1、2、4传输成功了，但是！！3失败了，那只要重新传第3块数据既可，如果不分块那等于得重传整个数据，效率大大降低，我们知道TCP是可靠的传输，如果传输...]]></description><category></category></item><item><title><![CDATA[登录、授权]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121270008</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121270008</guid><author>AndroidTalk</author><pubDate>Thu, 11 Nov 2021 16:09:57 +0800</pubDate><description><![CDATA[Cookie不是专门登录用的，但是Authorization就是为登录设计的。
 1. Cookie：
  a. 作用：一、会话管理：购物、登录状态sessionid。二、个性化：管理用户偏好client_id。三、Tracking：追踪用户行为（外链from）。
   i. 购物例子：
   第一步：
苹果加购物车 
    
   第二步：
香蕉加购物车 
    
 ...]]></description><category></category></item><item><title><![CDATA[编码-＞Hash-＞加密；序列化]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121265723</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121265723</guid><author>AndroidTalk</author><pubDate>Thu, 11 Nov 2021 13:03:37 +0800</pubDate><description><![CDATA[1. 编码
  a. 压缩：文本、图片、视频。
   i. 视频图片的编解码。
   ii. 有损压缩和无损压缩。
  b. 二进制数据(非文本)Base64/58(去掉难区分的字符，比特币)
  "Man"不是非文本，仅用作举例
  
  
   i. 用途：
    1) 用文本传输非文本数据
     a) 正常情况下图片不编...]]></description><category></category></item><item><title><![CDATA[Execution failed for task ‘:app:compileDebugJavaWithJavac‘. ＞ javax/xml/bind/JAXBExcept]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/121153196</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/121153196</guid><author>AndroidTalk</author><pubDate>Thu, 04 Nov 2021 22:38:50 +0800</pubDate><description><![CDATA[把工程的JDK版本改成8就好了，Android Studio默认是JDK11，需要改成JDK8及更早的版本。
]]></description><category></category></item><item><title><![CDATA[不兼容的类型: 推论变量 T 具有不兼容的上限 ActivityMainBinding,ViewDataBinding]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120542492</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120542492</guid><author>AndroidTalk</author><pubDate>Thu, 30 Sep 2021 18:41:42 +0800</pubDate><description><![CDATA[问题描述
			分析原因
			解决方案
		
			源码：

			public class MainActivity extends AppCompatActivity {
			  @Override
			  protected void onCreate(Bundle savedInstanceState) {
			    super.onCreate(savedInstanceState);
			    ActivityMainBinding mainBindin...]]></description><category></category></item><item><title><![CDATA[AS右侧的Gradle一栏只有Dependencies，不显示其他Tasks]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120509093</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120509093</guid><author>AndroidTalk</author><pubDate>Mon, 27 Sep 2021 15:14:36 +0800</pubDate><description><![CDATA[错误
			原因
			解决
		AS右侧的Gradle一栏只有Dependencies，不显示其他Tasks
			一定是Android Studio里的关于gradle的某个配置出了问题。
			那么就在偏好设置里搜索gradle，逐项查找gradle的各种配置，看看是哪一个出了问题。
			在Experimental里取消勾选即可。
		










...]]></description><category></category></item><item><title><![CDATA[com.android.build.api.transform.Transform找不到该类]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120472697</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120472697</guid><author>AndroidTalk</author><pubDate>Sat, 25 Sep 2021 15:43:35 +0800</pubDate><description><![CDATA[把android gradle插件版本改成3.1.3。

classpath "com.android.tools.build:gradle:3.1.3"
]]></description><category></category></item><item><title><![CDATA[at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:782)]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120472051</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120472051</guid><author>AndroidTalk</author><pubDate>Sat, 25 Sep 2021 15:27:19 +0800</pubDate><description><![CDATA[错误
			原因
			解决方法
		at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:782)
			
			原因可能有很多，我在网上找了几种方法，都不行。

			

			于是决定通过命令行

			./gradlew :app:assembleDebug

			看能不能打印出更多细节。

			

			期间，解决了几个错误，然后命令行执行没问题了，但是点android studio工具栏的编译还是不行，]]></description><category></category></item><item><title><![CDATA[cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头。]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120471589</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120471589</guid><author>AndroidTalk</author><pubDate>Sat, 25 Sep 2021 15:07:00 +0800</pubDate><description><![CDATA[错误
			原因
			
			解决方法
			
		org.xml.sax.SAXParseException; lineNumber: 141; columnNumber: 252; cvc-complex-type.2.4.a: 发现了以元素 'base-extension' 开头的无效内容。应以 '{layoutlib}' 之一开头。
			猜测是layout.xml布局文件的问题
			
			注释掉
			&lt;!-- app:layout_constraintBottom_...]]></description><category></category></item><item><title><![CDATA[Plugin with id ‘maven’ not found]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120462155</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120462155</guid><author>AndroidTalk</author><pubDate>Sat, 25 Sep 2021 14:34:04 +0800</pubDate><description><![CDATA[问题描述
			原因分析
			解决方案
		
			apply plugin: 'maven'

			
			uploadArchives {
			  repositories.mavenDeployer {
			    repository(url:uri('../repo'))
			    pom.groupId = 'com.hougr'
			    pom.artifactId = 'transform.printjar'
			    pom.ve...]]></description><category></category></item><item><title><![CDATA[哪个才是Android工程构建时的gradle版本？gradle-wrapper.properties还是build.gradle的buildscript说了算？]]></title><link>https://blog.youkuaiyun.com/AndroidTalk/article/details/120240155</link><guid>https://blog.youkuaiyun.com/AndroidTalk/article/details/120240155</guid><author>AndroidTalk</author><pubDate>Thu, 23 Sep 2021 17:55:17 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar]]></description><category></category></item></channel></rss>