Android
文章平均质量分 81
MarinaTsang
这个作者很懒,什么都没留下…
展开
-
Android 反编译-回编译
反编译 APK 后,可以修改源代码,添加第三方库等,然后使用相应的工具将修改后的源代码重新打包成 APK。需要注意的是,由于 APK 的签名校验机制,如果对 APK 进行了修改,则需要重新签名才能安装和使用。反编译 APK 是将一个已经编译过的 APK 文件通过工具反编译为可读的源代码文件,这样就能够修改代码,实现对 APK 的二次开发。反编译 apk ,获取 apk 的 res 资源,下在 apktool 工具,打开命令行,,由于 Google Play 封杀了插件化技术,推出了他自己的“官方插件化”原创 2023-03-27 15:48:10 · 783 阅读 · 0 评论 -
Android 解决第三方库版本冲突
在开发游戏SDK时会使用一些第三方库,例如上文提到的 OkHttp ,或者集成某些第三方,而这些第三方使用的系统库(例如 supportv7)和项目组使用的版本不一致,在编译时就会出现版本冲突问题。尽量不使用第三库,例如针对 OkHttp ,如果没有特殊的需求(比如需要中断某个请求),可以不使用 OkHttp ,自行开发一个基于系统 API 的网络框架。解决版本冲突。以下提供一些解决版本冲突的方法。原创 2023-03-17 18:35:12 · 2851 阅读 · 1 评论 -
游戏SDK架构设计之代码实现——网络框架
前篇介绍了游戏SDK的基本架构设计,其中一个模块是基础工具库,基础工具库的内容包括:统一封装的网络框架,可以使用okhttp、volley、retrofit,或自行写的异步任务也可以。还有存储工具类、文件工具类、热修复工具类等。这个篇幅先介绍一下网络框架。由于游戏SDK是提供给CP使用的,为避免不必要的第三方库冲突,也同时减少包体,游戏SDK的应尽量减少引入第三方库。自行封装的网络框架无法满足需求某个任务的需求,比如有业务场景,当用户取消登录时,需要立即取消登录请求,不再继续登录。原创 2023-03-16 19:11:46 · 813 阅读 · 0 评论 -
OKHttp 源码解析(一)
目前大多数的网络框架都是使用 OKHttp ,Retrofit 也是基于 OKHttp,OKHttp 使用简单,但出现的问题不少,也借此机会了解一下 OKHttp 的源码。本文的 OKHttp 源码基于 3.4.2 版本。通过newCall访问RealCall如果是同步请求,调用execute如果是异步请求,调用enqueue以上都是通过Dispatcher将Call添加到队列调用遍历拦截器,执行请求获取结果将Call从 队列移除。原创 2023-03-16 19:07:53 · 492 阅读 · 0 评论 -
OKHttp 源码解析(二)拦截器
上一篇解读了OKHttp 的基本框架源码,其中 OKHttp 发送请求的核心是调用构建拦截器链,遍历拦截器,执行请求,执行完成时返回结果。这篇看一下 OKHttp 的拦截器链。本文查看 OKHttp 源码的版本是 3.4.2.OkHttp 允许开发者自定义拦截器并优先执行开发者定义的拦截器。具体做法如下定义拦截器实现 OkHttp 的拦截器接口// ... } } // 官网解释:观察、修改并潜在地短路发出的请求和返回的相应响应。// 通常,拦截器会添加、删除或转换请求或响应的标头。原创 2023-03-16 19:06:51 · 1323 阅读 · 0 评论 -
Android Studio多渠道打包及自动化构建
Android studio 多渠道打包,自动化构建原创 2023-02-15 17:31:16 · 2822 阅读 · 0 评论 -
Java设计模式——责任链模式
Java 设计模式之责任链模式原创 2023-02-13 19:08:12 · 343 阅读 · 0 评论 -
Java反射机制-框架设计的灵魂
Java反射机制原创 2023-01-30 19:11:43 · 575 阅读 · 1 评论 -
游戏SDK(三)架构设计之代码实现1
游戏SDK架构设计代码实现原创 2023-01-30 19:10:27 · 1033 阅读 · 3 评论 -
游戏SDK(二)框架设计
游戏SDK项目框架设计原创 2023-01-30 17:30:23 · 1138 阅读 · 0 评论 -
游戏SDK(一) 客户端整体架构
游戏SDK客户端架构分析原创 2023-01-30 17:21:22 · 2160 阅读 · 0 评论 -
Android 集成 google 登录并获取 性别等隐私信息
前言公司做海外产品的,集成的是 google 账号登录,账号信息、邮箱等这些不涉及隐私的按 google 的正常登录流程可以轻松实现 。但是一旦需要获取涉及隐私的信息就比较麻烦,文档也不是十分清晰,非常难找,很多坑。google 账号登录官方链接:https://developers.google.com/identity/sign-in/android/starthttps://developers.google.com/identity/sign-in/android/sign-ingoogl原创 2020-06-08 11:03:53 · 1116 阅读 · 0 评论 -
Java面试题基础
Android 面试题Java 基础部分Java基础(不断更新)Java 是值传递还是引用传递?有引用传递吗?值传递和引用传递形参和实参JVM 内存分配Java基础(不断更新)大厂非常重视Java基础Java 是值传递还是引用传递?有引用传递吗?原文参考:https://juejin.im/post/5bce68226fb9a05ce46a0476值传递和引用传递值传递:在方法被调用时,实参通过形参把它的内容副本传入方法内部,也就是方法内部操作的是实参值的一个拷贝副本,方法内对形参的任何操作不原创 2020-05-17 22:14:42 · 364 阅读 · 0 评论 -
Java基础面试题涉及的知识点-部分(后续会不断更新)
二进制与十进制的转换二进制是01表示数字的数制,基数是2,逢2进1。Java十进制及二进制表示对比:十进制:0 1 2 3 4 5 6 7 8 9二进制:0000 0001 0010 ...原创 2018-11-20 17:51:12 · 246 阅读 · 0 评论 -
Android四大组件-Service
概念:android 四大组件之一,提供在后台运行的服务,属于计算型组件。特点:在后台运行,无用户界面,生命周期长。启动方式startservice:不与Activity绑定,启动之后会无限期的运行下去,除非遇到内存低情况被回收,需要调用stopService或stopSelf才会停止。**生命周期 :**onCreate(只执行一次)-onStartCommand-服务运行-on...原创 2018-12-02 13:28:09 · 335 阅读 · 0 评论 -
Android线程间通信-Handler消息机制
需要handler消息机制的原因在android中由于UI线程并不是线程安全的,如果有子线程更新UI容易导致数据错乱,如果UI线程设置为线程安全的话导致效率低下;而UI线程做耗时操作容易导致ANR发生。所以需要由子线程做耗时操作当子线程需要更新UI时通知主线程更新UI,而线程间的通信就由Handler消息机制完成。Handler消息机制原理在主线程创建一个handler的同时创建了lo...原创 2018-12-04 12:36:15 · 583 阅读 · 0 评论 -
Android四大组件-ContentProvider
概念:内容提供器,Android 四大组件之一。作用:可以操作非本应用程序的数据,实现跨进程数据共享。优点:可以在保证数据的安全性的情况下实现数据跨进程共享。因为contentprovider规范了统一的数据访问接口。对底层数据存储方式抽象,即如果您将底层数据存储方式修改对数据应用层不会有影响。原理:底层实现原理是Binder机制,Binder实现原理是通过Binder类,实现IB...原创 2018-11-27 15:36:47 · 209 阅读 · 0 评论 -
Android性能优化之内存泄漏记录
根本原因应该被回收的对象没有被回收,一直占用内存,导致内存泄漏,如果内存泄漏过多,有可能造成内存溢出(OOM)。内存溢出当内存泄漏过多时,应用需要的内存超过系统分配的内存限额时会导致内存溢出引发crash。常见的内存泄漏1、单例(静态变量引起)如果单例需要持有一个上下文,而如果传入的上下文是短生命周期的activity,单例的生命周期跟app一致,是长生命周期的上下文持有短生命周期的实...原创 2018-12-05 12:42:10 · 270 阅读 · 0 评论 -
Gradle自定义打jar包脚本
前言聚合类型的手游SDK打包涉及多渠道打包,有需求是将渠道的java代码,根据不同的需求(规则)生成不同的jar包,而不是全部都放进一个jar包中。所以需要自己写脚本自定义打jar包。前提保证module 是 library的模式通过合并文件的方式def zipFile = file(''build/intermediates/packaged-classes/debug/classes...原创 2019-09-04 09:53:01 · 1349 阅读 · 0 评论 -
Listview与Recycleview的区别-(用法及缓存机制)
用法上的区别1、listview的用法继承的时BaseAdapter,需要重写四个方法不强制使用viewholder可以直接使用item的点击事件不用单独设置分隔线不可以定向刷新某一条数据示例代码如下:项目代码详见地址:public class MyListAdapter<T> extends BaseAdapter { private static fi...原创 2018-11-09 00:19:32 · 3980 阅读 · 0 评论