
Android
文章平均质量分 79
w风雨无阻w
16年游戏及软件研发经验,csdn平台优质作者,曾就职于盛大美游集团-研发副总裁岗位,曾带领团队研发累计百万用户在线、盈利上亿的产品,擅长服务器、客户端研发框架搭建,擅长cocos2d、cocoscreator 、android原生开发、iOS原生开发技术等。通过对技术领域的探求打磨自己的技术敏感度和技术决策力!
展开
-
AppsFlyer 研究(十六)广告平台配置及代理商授权总结
一、AppsFlyer 广告投放介绍深度使用AppsFlyer的同志应该都知道,AppsFlyer 有三种类型的账户:广告平台账户、广告主账户、代理账户。1、广告平台、代理在介绍广告投放配置之前,首选需要明白两个基本概念:广告平台、代理。(1)、什么是广告平台?广告平台是有自己流量的媒体,AF 中分为 SRN 和 非SRN 两种。通过AF 后台的媒体对接,广告主可以追踪媒体带来的激活及用户后续的应用内事件,也可以给媒体做回传。SRN 全称是 Self Reporting ..原创 2021-10-13 20:24:49 · 5174 阅读 · 2 评论 -
探秘Android系统启动的神秘面纱
在Android系统中,init进程是一个非常重要的系统进程,它是用户空间的第一个进程,具有PID(进程ID)1。init进程负责启动系统启动过程中的其他所有进程,以及管理系统的运行时环境。以下是init启动服务init进程会根据启动脚本启动系统服务和应用程序,例如窗口管理器、网络守护进程等。处理启动脚本init进程会解析init.rc文件和其他.rc文件,这些脚本定义了系统启动过程中的一系列动作和条件。管理运行级别:Android的init。原创 2024-06-04 19:45:16 · 1124 阅读 · 0 评论 -
深入解读 Android Hook 技术-从原理到实践
Hook技术,源自计算机编程中的“钩子”概念,是一种在程序执行过程中动态改变程序行为的技术,是一种允许用户或开发者拦截和处理系统事件或方法调用的技术。它通过在程序执行路径中插入自定义的代码片段,从而能够实现对程序行为的拦截和修改。动态修改: Hook 技术是在程序运行时进行修改,而不是在编译时。这使得它可以灵活地应用于各种场景,而不需要修改程序源码。透明性: 使用 Hook 技术进行修改是透明的,对于程序的其他部分来说是不可见的。这有利于保持程序的整体一致性和稳定性。可扩展性。原创 2024-05-30 12:06:49 · 5910 阅读 · 1 评论 -
三种高效Android JSON解析技术,让你的数据传输畅通无阻!
这三种解析JSON的方案各有特点,我们可以根据具体需求和项目复杂程度权衡选择。而在我看来,Google Gson则是大多数应用的不二之选,它Strike了简洁和性能之间最好的平衡。讨论到这里,你是否也有自己的看法和经验?欢迎在评论区继续交流探讨,分享你在JSON解析这条路上的点点心得。原创 2024-05-23 09:23:37 · 2592 阅读 · 0 评论 -
解锁Android高效数据传输的秘钥 - Parcelable剖析
作为Android开发者,我们经常需要在不同的组件(Activity、Service等)之间传输数据。这里的"传输"往往不仅仅是简单的数据复制,还可能涉及跨进程的内存复制操作。当传输的数据量较大时,这种操作可能会带来严重的性能问题。而Android系统为我们提供了Parcelable这一高效的序列化传输机制,很好地解决了这一痛点。今天,就让我们一起来探讪Parcelable的神奇之处。原创 2024-05-23 09:19:17 · 1223 阅读 · 0 评论 -
解锁AsyncTask-Android异步任务的瑞士军刀
尽管AsyncTask简单任务:对于不需要复杂依赖关系或并行执行的简单后台任务,AsyncTask提供了快速实现的方式。快速原型开发:在快速开发原型或概念验证阶段,AsyncTask可以快速实现后台处理和 UI 更新。教育目的:对于初学者来说,AsyncTask是学习 Android 后台处理和线程间通信的一个好例子。然而,对于更复杂的应用场景,建议使用更灵活和功能强大的并发工具,如包中的FutureCallable等。原创 2024-05-21 08:52:30 · 1043 阅读 · 0 评论 -
深入探索Android签名机制:从v1到v3的演进之旅
消息摘要(Message Digest)是一种通过单向散列算法对任意长度的数据进行计算并产生固定长度的小型摘要信息(又称哈希值或指纹)的技术。(1)、消息摘要主要特点压缩性:无论输入的数据有多大,计算出来的消息摘要的长度都是固定的,通常为128位或更长。易计算:给定需要计算摘要的数据,非常容易计算出消息摘要。隐行性:相同的输入必定得到相同的输出,但反过来,由输出极其困难推导出输入值。抗碰撞:理论上不可能找到两个不同的输入计算出相同的消息摘要。常见的消息摘要算法有:MD5、SHA-1、SHA-256等。原创 2024-05-14 20:00:38 · 2510 阅读 · 0 评论 -
掌握Android Intent与IntentFilter的艺术-深入探索匹配规则与实践技巧
动作匹配Intent中必须包含中声明的至少一个动作。类别匹配Intent中的所有类别必须与中的类别完全一致。数据匹配Intent中的数据必须与中的至少一个数据匹配。假设我们有一个网页浏览器应用,我们希望当用户尝试打开一个http或https协议的网页时,我们的应用能够被系统选中。我们可以在中为相应的Activity定义如下当用户点击一个网页链接时,系统会查找所有能够响应VIEW动作和BROWSABLE类别的组件,并且检查它们的<data>元素是否匹配链接的协议。在这个例子中,我们的将能够响应所有。原创 2024-05-14 11:50:55 · 1108 阅读 · 0 评论 -
Android Hanlder 揭密之路- 深入理解异步消息传递机制Looper、Handler、Message三者关系
这样不同的线程访问同一个 ThreadLocal 时,获取到的值也就是各个线程存储时对应的值了。size 代表表中的存储数目;在Handler的handleMessage()方法中,我们可以重写自定义的消息处理逻辑,这个方法最终会由Looper.loop()中的msg.target.dispatchMessage(msg)回调执行。在构造Handler实例时,会获取当前线程的Looper,并将Handler的MessageQueue与Looper内部的MessageQueue建立关联。原创 2024-05-12 12:07:57 · 1214 阅读 · 1 评论 -
Android 屏幕适配全攻略(下)-百变屏幕无压力,这才是Android屏幕适配的终极解决方案
但随着智能手机屏幕形态的不断创新,光靠这些基础做法已经不够,开发者们必须进一步掌握更多专业的适配技巧,才能应对屏幕百变的挑战。需要注意的是,不同的可折叠设备可能会有不同的窗口模式支持,开发者需要根据具体的设备和场景进行适配和调整。同时,可以利用 Android Studio 的设备模拟器来进行测试和调试。: 这个 API 可以让开发者获取到屏幕上的"凹槽"区域的信息,包括位置、尺寸等,从而可以更好地适配应用界面。通过这种方式,我们可以确保应用的界面能够完美适配异形全面屏,不会出现内容被"凹槽"遮挡的问题。原创 2024-05-11 19:57:20 · 1813 阅读 · 0 评论 -
Android 屏幕适配全攻略(中)-从九宫格到矢量图,揭秘Android多屏幕适配的正确打开方式
本文将剖析 Android 多屏幕适配背后的种种技术细节,为您揭开最佳实践的正确打开方式,让您的应用在任何设备上都能呈现出最专业、最优雅的一面。当位图图像在不同分辨率的设备上显示时,可能会出现图像质量下降的问题。当应用运行在某台设备上时,Android 系统会根据该设备的特征,自动选择最匹配的资源文件夹,并加载相应的资源。为了适配不同分辨率的设备,开发者通常需要准备多套不同尺寸的图像资源,这会大大增加应用程序的安装包体积。在方法内部,我们首先获取设备的屏幕密度,并根据期望的尺寸计算出实际的像素尺寸。原创 2024-05-10 22:59:15 · 1745 阅读 · 1 评论 -
Android 屏幕适配全攻略(上)-掌握屏幕单位,应对千变万化的设备
在 Android 设备中的分辨率指的是屏幕分辨率,即屏幕上可显示的像素数量,它决定了屏幕的显示质量。DPI 是一个表示图像分辨率的单位,它描述了每英寸图像中包含的像素或点的数量。色深越高,图像的色彩表现力就越强。通过这些转换函数,我们可以在不同的长度单位之间进行转换,确保在不同屏幕密度下,UI 元素的尺寸和字体大小保持一致。但在打印领域,DPI描述的是打印机的分辨率,而不是显示设备的分辨率。它是一个非常重要的显示技术指标,可以反映屏幕的清晰度和细腻程度,PPI 越高,屏幕显示的内容就越细腻清晰。原创 2024-05-10 20:15:29 · 2220 阅读 · 1 评论 -
揭秘Android广播机制的奥秘 —— 从源码角度深入剖析
广播是一种常用的应用间通信机制,但并不是所有的场景都适合使用广播。无论是系统级别的广播(如Android系统启动完成)还是应用级别的广播(如电池电量变化),都遵循同样的机制进行传播和接收。相比之下,静态注册广播接收器在应用安装时就完成了注册,适用于一些常驻型的广播。广播Broadcast 最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的,它只负责“说”,而不管你“听不听”。假设我们有两个应用A和B,A应用需要监听B应用发送的电量变化广播,并在电量低于20%时弹出提醒。原创 2024-05-09 19:40:45 · 1347 阅读 · 1 评论 -
深入探索Android应用数据共享之ContentProvider
这样可以确保数据的安全性。ContentProvider是Android系统提供的一种在应用之间共享数据的机制,也是 Android 的四大组件之一,可见它在 Android 中的作用非同小可。例如,开发者可以结合Room或SQLite,将ContentProvider作为应用内部数据库的对外接口,为上层的ViewModel和UI层提供标准化的数据访问方式。ContentProvider 可以理解为 Android 应用对外开放的接口,只要是符合它所定义的 URI 格式的请求,均可以正常访问执行操作。原创 2024-05-08 09:24:05 · 1536 阅读 · 0 评论 -
掌握Android Fragment开发之魂:Fragment的深度解析(下)
开发者可以在。原创 2024-05-08 07:52:28 · 1316 阅读 · 0 评论 -
掌握Android Fragment开发之魂:Fragment的深度解析(中)
我们需要定义一个事件类,用于在 Fragment 和 Activity 之间传递数据。原创 2024-05-07 11:46:49 · 1196 阅读 · 0 评论 -
掌握Android Fragment开发之魂:Fragment的深度解析(上)
通过本文的深入解析,你应该对Fragment有了更全面的理解。无论是在构建新的应用还是优化现有项目,Fragment都是你不可或缺的工具。Fragment的潜力远不止于此。在下一篇文章中,我们将探索如何使用Fragment实现更高级的界面切换效果,以及如何在Fragment之间传递数据。敬请期待!原创 2024-05-07 10:55:19 · 1262 阅读 · 0 评论 -
越探越深-揭秘Activity的高级玩法
在上一篇中,我们已经探索了Activity的基础知识,包括它的本质构成、生命周期管理、启动模式等核心内容。但Activity的真正力量远不止于此,它还拥有许多高级特性,让我们能够打造出更加灵活、强大的Android应用体验。今天,就让我带大家深入挖掘Activity背后的那些独门绝学!原创 2024-05-06 11:22:35 · 1062 阅读 · 0 评论 -
Android世界的入口-深度解锁Activity的秘密
1、Activity之根:三件宝要理解什么是Activity,首先需要了解它构建的三大基石:Context、Window和View层级。:Context 是一个接口,提供了应用程序环境的全局信息。它允许应用程序访问资源和生命周期状态,是几乎所有其他组件的基础。(2)、Window:Window 是一个抽象类,代表了一个用户界面的一部分。它负责管理视图的布局和绘制,是 View 层级的顶级容器。(3)、View 层级:View 是 Android UI 组件的基类,代表屏幕上的一个元素。原创 2024-05-06 10:29:19 · 907 阅读 · 0 评论 -
深入探索Android Service:多线程环境最佳实践与系统级操作
Service的多线程应用和跨应用通信为Android应用开发提供了强大的功能,但同时也带来了更高的复杂性和潜在的风险。在未来的技术探索中,我们将进一步讨论Service在处理网络请求、数据库操作和多媒体处理等场景下的高级应用,以及如何通过Service实现应用模块化和服务化架构的最佳实践。敬请期待我们的下一篇深度解析文章,带你进入Service的模块化和服务化架构世界。原创 2024-04-24 17:39:55 · 968 阅读 · 4 评论 -
深入探索Android Service:后台服务的终极指南(下)
Service的性能优化和系统级操作是Android系统编程中的重要话题。通过精心设计和优化,Service可以在不牺牲用户体验的前提下,提升应用的后台处理能力。然而,Service的稳定性和效率仍然是开发者面临的挑战。在未来的技术探索中,我们将进一步讨论Service在多线程环境下的高级应用,以及如何利用Service实现跨应用的资源共享和通信。敬请期待我们的下一篇深度解析文章,带你进入Service的高级应用世界。原创 2024-04-24 14:06:43 · 1280 阅读 · 2 评论 -
深入探索Android Service:后台服务的终极指南(中)
Service作为Android平台的基石之一,其强大的后台处理能力和灵活的进程间通信机制,为开发者提供了广阔的应用空间。然而,Service的稳定性和效率仍然是开发者面临的挑战。在未来的技术探索中,我们将进一步讨论Service的最佳实践,包括如何优化Service的性能,以及如何通过Service实现更高效的系统级操作。敬请期待我们的下一篇深度解析文章,带你进入Service的高效能开发世界。原创 2024-04-23 18:24:17 · 1460 阅读 · 1 评论 -
深入探索Android Service:后台服务的终极指南(上)
Service是Android中用于执行后台操作的组件。它可以以启动状态运行,也可以被其他组件绑定以进行交互。启动服务通常用于执行单一任务,而绑定服务则提供了一种客户端-服务器的交互方式。Service作为Android开发中的强大组件,其正确使用对于提升应用性能和用户体验至关重要。然而,Service的稳定性和安全性仍然是许多开发者面临的挑战。在下一篇文章中,我们将进一步讨论前台服务与通知 、以及Android 5.0以上隐式启动问题 、如何保证Service不被杀死的策略。原创 2024-04-23 17:19:53 · 6756 阅读 · 1 评论 -
GSON 泛型对象反序列化解决方案
Gson 提供了简单而强大的 API,可以轻松地将 Java 对象转换为 JSON 字符串,并将 JSON 字符串转换回 Java 对象。Gson 是一个用于在 Java 对象和 JSON 数据之间进行序列化和反序列化的开源库。它由 Google 开发并提供支持。尝试使用gson 的 fromJson的重载函数:fromJson(String json, Type typeOfT) 问题得以解决。它在许多 Java 应用程序中被广泛使用,尤其是在与 Web 服务的数据交互、持久化和配置文件处理等方面。原创 2023-12-21 21:52:18 · 1199 阅读 · 0 评论 -
android 使用GSON 序列化对象出现字段被优化问题解决方案
开始以为字段被优化成了"a"、"b"等,这可能是由于 Gson 库默认启用了字段混淆(Field Naming Policy)功能,将字段名压缩为较短的形式。加上gson 的混淆规则 ,注意: com.test.demo.NativeParam 需要替换为自己的mode 结构。突然想到 被优化成了"a"、“b” 有点像打包时开启了 代码混淆,于是果断加上gson 的混淆规则,果然问题得以解决。注解,可以指定该字段在序列化为 JSON 字符串时应使用的原始字段名,而不受字段混淆的影响。原创 2023-12-21 21:26:50 · 918 阅读 · 0 评论 -
android 错误 exported needs to be explicitly specified for Apps targeting Android 12
b、如果还报错误,那我们可以在build.gradle里面的dependencies里面, 采用二分大法, 先块注释一部分依赖引用(我们先不用去管代码里面由于没有引用,而引起的相关报红,只是暂时注释而已,找问题而已,问题找到后再恢复),再执行。通过以上两步后再次运行, 如果三方库的android:exported没问题,问题也就解决了,但如果还是爆错,那就是三方库没有解决这个问题导致的。,根据错误提示信息,可知道失败是四大组件的哪个组件,还可知道有几个失败的问题。如果不再报错误,则问题解决。原创 2023-07-24 11:37:20 · 2504 阅读 · 0 评论 -
android 前端常用布局文件升级总结(二)
android sdk 版本升级,使用 androidx 后, 经常会遇到的xml 布局控件爆红问题总结,一篇文章全搞定,帮您节约大量查资料的时间。原创 2023-07-24 11:30:33 · 432 阅读 · 0 评论 -
Android AgentWeb WebView 与js交互总结
想必熟悉android开发的同学都知道使用原生 webview 与js 的交互方式,下面我们先来回顾一下。webview 通过addJavascriptInterface 进行对象映射首先要打开交互权限 , 允许使用javascript说明:以上“ JsInterface ”、“android” 都可以自己命名,这里仅做为示例。那么使用 AgentWeb的Webview和js 的交互方式,你知道吗?其实和原生webview与js的交互还是有些出入的,接下来,我们以代码进行详细说明。根据。原创 2023-06-09 15:56:50 · 3390 阅读 · 0 评论 -
android 前端常用布局文件升级总结(一)
【代码】android 前端常用布局文件升级总结。原创 2023-05-25 11:15:33 · 293 阅读 · 0 评论 -
Android Http 请求封装及使用
支持 GET、POST 请求。原创 2023-05-25 09:20:14 · 411 阅读 · 0 评论 -
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
从 API 28 (Android 9.0 )开始,默认限制了明文流量的网络请求,对未加密流量不再信任,直接放弃请求, http的url均无法在webview中加载,而 https 不受影响。:Android WebView 加载http URL 请求页面出现错误: net::ERR_CLEARTEXT_NOT_PERMITTED。原创 2023-05-25 08:45:40 · 2611 阅读 · 2 评论 -
Cocos Creator Android 平台 Google 原生登录
在海外项目中,我们通常需要接入 Google 帐号登录,这样可以提高应用使用率。下面以 Android 平台 接入 Google 原生登录为例,进行详细说明。一、准备工作1、需要 Android 4.4 或更高版本的兼容 Android 设备2、需要在设备或模拟器上安装 15.0.0 或更高版本的 Google Play 服务3、最新版本的 Android SDK4、配置为针对 Android 4.4 (KitKat) 或更高版本进行编译5、Google开发者账号,登录Firebase原创 2022-02-02 15:30:08 · 4965 阅读 · 0 评论 -
Cocos Creator Android 平台接入 Google Firebase (Analytics功能)
在项目推广运营过程中,经常有分析用户行为的需求,如用户安装、注册、充值等事件。因此需要接入Google Firebase(Analytics功能)。下面以 Android 平台接入为例,进行详细说明。一、准备工作1、应用targetSdkVersion大于等于162、Gradle版本为4.1及以上3、使用 Jetpack (AndroidX),同时需要满足以下版本要求:com.android.tools.build:gradle 3.2.1 版或更高版本compileSdkVers..原创 2022-02-02 15:10:43 · 6048 阅读 · 0 评论 -
Cocos Creator Android 平台 Facebook 原生登录
在做海外项目中,经常需要接入Facebook SDK ,现将CocosCreator Android 平台 Facebook 登录的接入流程记录下来,以备有需要的朋友做参考。一、准备工作1、首先在facebook 开发者平台 注册账号,创建app,获取app的应用编号。怎么注册账号,怎么创建app ,这里就不再细说。app的应用编号和密钥,如下所示:2、设置应用密钥散列生成密钥散列有2种方式:(1)、通过代码获取//获取facebook所需的密钥散列try..原创 2021-12-23 17:16:59 · 5640 阅读 · 6 评论 -
Cocos Creator 解决热更新资源md5比较引发卡顿问题
大家在使用Cococ Creator提供的热更新 assetsManagers ,做md5校验的时候,一定会遇到卡顿的问题。备注:文末有完整实现源码原因是 Cococ Creator 官方提供的热更新校验回调是在ui线程进行,如下代码所示:assetsManagers.setVerifyCallback(function (path, asset)) { let compressed = asset.compressed; let expectedMD5 = ass..原创 2021-12-12 17:13:46 · 5841 阅读 · 0 评论 -
Android 解决CocosCreator 真机调试闪退问题
近期在真机调试 Cocos Creator Android 项目时,频繁遇到app 启动就闪退问题,错误日志如下: E/jswrapper: Starting inspector on 0.0.0.0:6086 failed: address already in use2021-12-06 20:51:58.263 4614-4712/com.x.gullak E/jswrapper: [FATAL ERROR]: Port [:6086] is occupied by other proce..原创 2021-12-07 12:49:51 · 2474 阅读 · 0 评论 -
Android 解决使用CocosCreator开发产品上架应用市场代码重复问题
Android 解决使用CocosCreator开发产品上架应用市场代码重复问题第一步、使用插件生成垃圾代码及资源文件AndroidJunkCode 下载地址AndroidJunkCode 是 Android垃圾代码生成插件,用于减小马甲包与主包的代码相似度,避免被应用市场识别为马甲包。1、根目录的build.gradle 配置buildscript { repositories { mavenCentral() } dependencies..原创 2021-12-07 12:28:32 · 2592 阅读 · 1 评论 -
Android Studio 4.22 解决com.android.tools.idea.run.ApkProvisionException
Android Studio 4.22 解决 Unable to determine application id: com.android.tools.idea.run.ApkProvisionException:Error loading问题描述:最近在Android开发调试中,遇到运行时提示build成功,但是无法连接设备进行安装。Android Studio run 窗口中错误提示如下:Unable to determine application id: com.androi..原创 2021-10-21 18:04:40 · 6145 阅读 · 2 评论 -
Android 全屏适配刘海机型
1、刘海机型说明众所周知, 市面上的android 机型,屏幕尺寸五花八门,如下图所示:像以上两种屏幕,我们都统称为【刘海屏】。对于右侧较小的刘海,业界一般称为【水滴屏】或【美人尖】。2、刘海机型适配方案从Android P(9.0)开始,官方提供了适配异形屏的方式。通过全新的 DisplayCutout 类,可以确定非功能区域的位置和形状,这些区域不应显示内容。 要确定这些凹口屏幕区域是否存在及其位置,请使用 getDisplayCutout() 函数。Android..原创 2021-10-21 17:57:23 · 1853 阅读 · 1 评论 -
AppsFlyer 研究(十二)Google Ads MCC 配置统计应用转化
AppsFlyer 研究(十二)Google Ads MCC 配置统计应用转化配置步骤如下:1、打开Google Ads Manager-accounts链接2、点击右上角“Sign in” , 登录进入主页3、点击 上方导航按钮 “TOOLS &” , 弹出二级菜单栏4、依次点击 “MEASUREMENT”-> “Conversions” ,打开转化配置页面5、进入转化配置页面 ,点击左边悬浮 “+” 按钮6、首先原创 2021-10-13 17:08:39 · 1376 阅读 · 0 评论