自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逍遥阁

一日不见如隔三秋兮

  • 博客(88)
  • 资源 (4)
  • 收藏
  • 关注

原创 Android应用判断是否运行在鸿蒙/Harmony系统手机上

【前言】     最近提出统计有多少鸿蒙系统用户的需求,就研究了一下判断鸿蒙系统的方法,刚开始研究鸿蒙系统的Api文档时,发现ohos.aafwk.ability.Ability应该是鸿蒙系统中比较基础的类,是鸿蒙应用所具备能力的抽象,也是应用程序的重要组成部分,一开始是打算通过判断是否存在这个类来区分是Harmony系统或者是Android系统, 测试发现鸿蒙系统确实是存在这个类,但是尴尬的是非鸿蒙系统的荣耀或者华为手机也存在这个类,初步猜想应该是华为

2021-07-12 15:17:29 4618 6

原创 压缩包Zip格式详析(全网最详细)

【前言】     Android的安装包.apk实际上就是个zip格式的压缩包,所以在了解apk签名之前,先来探索一下zip格式压缩包的构成一、Zip格式结构图总览

2021-07-07 15:15:45 30147 7

原创 Android Sdk热修复实践之旅

一、前言市面上目前app的热修复技术众多,比较主流的有:1)腾讯系:微信的Thinker、QQ空间的超级补丁、手Q的QFix2)阿里系:AndFix、阿里百川HotFix、Sophix3)美团:Robust4)饿了么:Amigo5)美丽说蘑菇街:Aceso二、主流热修复方案对比1、阿里系名称说明AndFix开源,实时生效,最新更新是3年前HotFi...

2019-10-31 17:47:04 1137 2

原创 应用宝sdk接入流程与注意事项总结

一、阅读对接文档1、应用宝sdk接入文档,见:链接2、上架应用宝商店的应用只需要接入微信、手Q登录与米大师支付即可,当然,若是你想接入应用宝更多其他功能也是没问题的3、由于应用宝的在线对接文档排布的顺序比较乱,所以,建议初次接入应用宝sdk的新手,查看文档顺序如下图标注所示:二、应用宝sdk接入1、先下载好应用宝sdk2、对照YSDK标准接入的说明,配置好下载好的应用宝sdk3...

2019-07-30 11:30:12 8837 5

原创 巧用CountDownLatch实现多线程并行工作

由于手机文件夹目录众多,单线程遍历全部文件夹找出所有的安装包会比较费时,但是假如开启多个线程并行去搜索不同的文件夹,然后再将结果汇总起来返回,那么效率就会明显有所提高。然而开启多个线程去搜索是很容易实现,但是由于每个线程耗时不同,有些线程搜索完毕了,但是有些线程可能还在搜索,怎么确保所有的线程都搜索完毕再把结果汇总起来返回呢?这时候借助这个类就能轻易地实现

2023-08-09 17:59:27 871

原创 ConstraintLayout新手玩家避坑指南

对于之前常用、布局的小伙伴,初次使用,因为之前使用习惯的问题,很容易出现各种意想不到的问题的,下面主要列举一下新手常见的坑。

2022-11-10 17:54:30 1336 1

原创 Android聚合SDK母包反编译出包教程

现在不管是游戏发行,亦或者是游戏买量,都会涉及到1个游戏项目出N个游戏包的情况,在游戏发行场景,1个游戏需要上架多个安卓应用市场,比如:上架oppo、vivo、小米、华为、应用宝、九游之类,那么1个游戏包就需要出包含不同渠道SDK的分包;在游戏买量场景,1个游戏也是需要上架多个推广媒体渠道,比如:上架头条、快手、广点通、百度之类,同时在推广时候往往还需要出各种马甲包,那么1个游戏就需要出好几百个分包,要是每一个游戏包都让研发去对接出包,研发肯定直接给撂摊子不干了

2022-11-01 19:09:37 3307 6

原创 Android应用隐私合规检测实现方案

Xposed Hook实现Android应用隐私合规检测

2022-07-25 20:31:46 3227

原创 Android Studio Gradle提高工作效率小技巧

Android项目很多时候需要编译成aar或者jar的形式提供给其他项目引入,特别是做Android Sdk开发的;若是Android项目只有一个变体还好,若是有多个变体,就需要编译成多个aar或者jar,这样子的话,麻烦的问题就来了,每次修改代码,编译成aar/jar之后,你都需要经过多次修改aar/jar文件名,然后复制到其他地方使用,这种重复的工作很累也很容易出错......

2022-06-24 10:25:13 748

原创 Openssl3.0 Android平台编译教程

【前言】     Android要想实现RSA/AES之类的加密,最简便的方式是直接使用Android提供的Java层api,但是使用Java层提供的Api去加密,别人很容易通过反编译看到你的加密逻辑

2022-04-27 20:13:48 4238 6

原创 Android 7.0+模拟器Fiddler抓包详细教程

【前言】     众所周知,假如设备是android 7.0+的系统同时应用设置targetSdkVersion >= 24的话,那么应用默认是不信任安装的fiddler用户证书的,所以你就没法抓到应用发起的https请求,然后你在fiddler就会看到一堆200 HTTP Tunnel to xxx.xxx.xxx:443的请求日志,这些都是没有成功抓取的https请求,下面重点介绍一下各种解决方案,相信总有一款解决方案适合你~【懒人快速解决

2022-04-22 19:47:43 28277 39

原创 Android TextView设置跑马灯效果

【前言】     在Textview设置的宽度有限,而需要显示的文字又比较多的情况下,往往需要给Textview设置跑马灯效果才能让用户完整地看到所有设置的文字,所以给TextView设置跑马灯效果的需求是很常见的一、新手设置跑马灯效果...

2022-01-25 19:50:55 18629 3

原创 手游SDK知识详析

一、SDK概念     SDK ,即 Software Development Kit,软件开发工具包的意思,通俗点说,就是辅助开发某一类软件的相关文档、范例和工具的集合,不过我们平时所说到的Sdk其实会更加简单一些,就是一个封装了各种功能模块的依赖库与对接文档罢了,比如,我们接入腾讯语音SDK,那么我们软件就具备了实时语音功能二、游戏SDK涉及对象游戏研发:也称CP(Content Provider, 即内容提供商),开发游戏的公司...

2021-09-24 20:15:18 6789 3

原创 Android V2签名与校验原理分析

【前言】 V1签名作为一种历史悠久的签名方式,弊端也是比较明显的,一方面由于V1签名是对Apk内的单个文件逐一计算摘要进行签名校验的,所以要是Apk内的文件比较多,计算速度是非常慢的,同时又因为只对单个文件的完整性进行校验,那么对apk压缩包包体进行篡改的话,签名依然还是可以校验通过,完整性的校验工作做得不够到位。到了Android 7.0,V2签名方式就应运而生,V2签名一种全文件签名方案,它对压缩包的三大基本组成部分:数据区、中央目录记录区、中央目录记录结尾区进行分块,每小块 1MB,然后并行计

2021-09-02 20:08:27 3318 1

原创 Android V1签名与校验原理分析(全网最全最详细)

【前言】     Android Apk V1签名方式是一开始时使用的签名方案,不过V1签名方式也称作jar签名,顾名思义,就是V1签名并不是Android独有的签名方式,而且在Android还没出来时候,Jar 包也是用这种方式进行签名检验的,直到Android 7.0开始才推出V2签名,这个就是Android独创的签名方案,签名与校验的效率方面提高很多,后面Android 9.0又推出了V3签名,再到Android 11推出了V4签名方案一、V1

2021-07-21 19:55:56 3543 7

原创 Default Activity not found问题解决方案

1、今天运行一个android项目时候,一直报错说:Default Activity not found:同时,Android Studio上也显示红色叉叉,没法正常编译反复检查AndroidManifest.xml,里面确实已经声明了默认启动的Activity:2、初步猜想:会不会是AS缓存导致的,尝试clean项目,然后同步一下,重新build一下,结果还是提示上述的错误3、进一步猜想:会不会AS抽风了,之前偶尔会遇到这种情况,尝试点击刷新缓存重启一下AS, 然而还是报同样的错误4、

2021-02-21 15:11:11 3117

原创 python随机数与加权随机数

【前言】python内置了很多随机数相关的函数,下面列举一些常用的函数,特别是python 3.6新加的加权随机特别实用1、随机打乱一个集合系列的元素:import randomalist = [1,2,3,4,5,6,7,8,9]random.shuffle(alist)print(alist)random.shuffle(alist)print(alist)random.shuffle(alist)print(alist)输出:[4, 9, 8, 7, 1, 5, 2,

2021-02-03 16:09:44 1375

原创 Pygame教程系列四:播放音频篇

【前言】     pygame播放音频文件这部分相对来说比较简单,基本没有什么坑,咱们直接看看案例吧

2021-02-03 15:07:59 2589 2

原创 Pygame教程系列三:绘制文本篇

【前言】前面介绍完了图片的显示与移动、视频的播放,接下来介绍一下pygame文本的绘制,pygame绘制文字的流程主要是:加载字体样式库、设置文本样式、绘制文本到新建的Surface,后面就跟图片的显示过程是一致的了

2021-02-02 17:53:16 4386

原创 Pygame教程系列二:MoviePy视频播放篇

【前言】     在pygame 2.0.0版本之前,播放视频可以使用pygame.movie.Movie('xxxx.mpg')播放(只支持.mpg格式的视频),但是在pygame2.0.0之后,作者因为觉得视频模块维护成本太高就给抛弃了,假如你使用pygame 2.0.0+,还调用上述方法就会出现以下报错:NotImplementedError: movie module not available (ModuleNotFoundError: No

2021-01-28 19:19:02 8068 6

原创 Pygame教程系列一:快速入门篇

【简介】Pygame 是python用来开发视频游戏的游戏引擎,底层主要是SDL库实现,算是目前利用python开发小游戏的一个首选游戏框架一、安装pygame使用pip下载安装pip install pygame二、入门案例祥析1、示例效果2、示例代码import osimport pygame# 标识是否退出循环exitFlag = False# 设置画面刷新的帧率,即1s内刷新几次FPS = 10# 初始化pygame游戏引擎pygame.init()# 指定窗

2021-01-28 10:38:36 9793 7

原创 PyInstaller: python打包成exe神器

【前言】     运行python开发的程序,需要用户的电脑部署好python环境,而且还需要用户在命令行中输入命令来运行,当然你也可以写好bat脚本,让用户双击一下即可运行,但是依然还是需要用户电脑有python环境,对于普通用户来说,运行你的程序还得去部署环境,使用成本太高了。那么,python程序能不能做到像普通软件一样,让用户直接双击就能运行的呢?为了解决这个难题,pyinstaller应运而生,pyinstaller支持将python打包成wi

2021-01-23 15:36:06 1604

原创 化龙小型汽车考场手动挡C1科三考试技巧

【前言】  科三的话,其实总体来说不难,主要是细节部分需牢记,灯光模拟这部分当然不用说,一定要烂熟于心,这部分挂了就可惜了;上路实操部分的话,主要是要记得打灯,还有谨记点刹的位置,下面分享一下化龙小型汽车考场手动挡C1科三的考试技巧,希望对备考的你们有所帮助!先预览一下化龙小型汽车考场整体路线,下面会围绕这个路线图进行详细的讲解注意事项(图片是掌上考场中下载下来的,所以会有水印,大家有需要的,也可以去扫码购买使用,感觉用来熟悉考场路线还是可以的)【详细实操讲解】1、准备1)上车,调整座椅、后

2020-11-02 19:59:43 5009

原创 Android窗体泄露问题解决

【问题起因】  竖屏的MainActivity中有个view是通过WindowManager addView添加上去(onWindowChanged中调用),在某个fragment是需要请求设置为横屏: getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);,这样MainActivity就会重建,即经历onPause - > onStop -> onDestory - >onCr

2020-10-19 15:18:39 824 1

原创 Android Studio 多aar合并

【前言】    一般Android Studio 的library module,点击build或者assemble,会在该module的build/outputs/aar目录下生成.aar文件,但是这aar文件只会把依赖的jar包打进去,依赖的aar或者project是不会打包进去,这样有时候提供给别人项目时候就比较麻烦,还得复制一堆的aar过去给别人,后来,发现一个Android Studio的插件:fat-aar-android支持合并依赖的aar以及依赖的

2020-10-17 14:16:13 2291 3

原创 Java CMD命令行输出中文乱码问题

1、使用aapt命令显示apk信息,发现中文的应用名显示为一串乱码C:\Users\Administrator>aapt d badging C:\Users\Administrator\Desktop\zhztttb4_739_1_3250_3384_64662_ad.apkpackage: name='com.zwzt.sszt4' versionCode='1596518241' versionName='1.0.8.1' platformBuildVersionName='6.0-2438

2020-09-29 17:51:14 9085 1

原创 Android项目发布到本地仓库共享给多个项目使用

【前言】     对于大多数人来说,要把一个Android项目作为依赖库提供给另一个Android项目使用时,都是先编译成aar或者jar,然后复制到另一个项目中,这样子比较繁琐,而且若是作为依赖库的Android项目,还依赖了第三方项目的,打包成aar或者jar之后,另一个项目依然还是需要自己手动添加aar所依赖的第三方项目库。那么,是否有更好的解决办法呢?当然就是把你的Android项目发布的maven仓库中,因为没有搭建自己的线上maven仓库,这.

2020-09-17 16:51:17 779

原创 Android代码控制关闭软键盘的骚操作

1、一般在Android代码控制软键盘关闭都是像下面这样实现: public static void hideKeyBoard(Activity activity) { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); //Find the currently focused view, so we can gr

2020-09-17 11:18:07 1618

原创 Android Studio创建运行Java SE项目

【前言】     Android Studio以前旧版本需要创建一个Java SE项目,来跑单纯的Java程序是比较麻烦,最近把Android Studio升级到4.0.+版本之后,发现创建一个Java SE项目跟在Eclipse上创建一样简便了,接下来,咱们一起来看看怎么快速地在Android Studio中创建一个Java SE项目吧!1、打开Android Studio之后,点击File-New-New Module注意:这里一定要是New M

2020-09-17 10:19:20 1031

原创 Java 调用bsdiff/bspatch开源库.dll打差分包

【前言】      bsdiff/bspatch是对二进制文件进行差分与合并的开源库,这个开源库的特点就是以空间换时间,打包效率比较高,但是比较耗内存,不过现在大部分机器的内存都不是问题啦,效率高才是硬道理,我们接下来盘它!      bsdiff/bspatch的源码地址在这里,不过这个源码是适合在linux系统编译的,因为里面依赖到linux系统下的一些api,比如:#includ

2020-09-04 16:26:25 1415 1

原创 解决新版Android Studio 4.0+无法断点调试smali问题

【前言】   之前我写过一篇Android Studio 3.0+无源码调试apk的博客,可能很多小伙伴试了,发现虽然apk是导入进Android Studio,但是却无法加断点,主要是因为新版本的Android Studio默认解析smali文件的插件是Smali Support,这个插件不支持断点,所以我们需要自己手动下载支持断点的smali解析插件:smalidea一、smalidea下载配置1、下载支持断点的smali解析插件:smalidea,目前最新的版本是0.0.5,他们GitHub仓

2020-09-03 14:41:32 6323 6

原创 Java 字节码编译为Dex,d8比dx更好用!

【前言】d8 是一种命令行工具,Android Studio 和 Android Gradle 插件使用该工具来将项目的 Java 字节码编译为在Android 设备上运行的 DEX 字节码,该工具支持您在应用的代码中使用 Java 8 语言功能。 d8 还作为独立工具纳入了Android 构建工具 28.0.1 及更高版本中:android_sdk/build-tools/version/’1、d8基本用法 d8 [options] <input-files>其中,<i

2020-08-08 15:31:07 3951

原创 Android setTheme设置透明主题无效

【问题现象】1、首先,你在AndroidManifest.xml中声明一个activity,不给application或者activity设置android:theme, 例如这样: <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon=

2020-07-24 14:49:23 5844 3

原创 拉取小米MIUI系统的framework.jar实践之旅

【前言】最近在研究插件化技术的实现,本来其他品牌的机子,测试得挺好,后来测试一下小米的机子,发现Resources替换出现问题,试着断点调试一下发现,小米MIUI系统自己继承Resources重写了自己的MiuiResources类来作为资源管理类【尝试一】发现小米MIUI系统实现自己的MiuiResources类之后,想着拉取小米手机里的framework.jar出来看看,它是怎么实现的,正常来说,一般直接进去到system/framework/目录下,就能看到对应framework的jar包,比

2020-07-08 17:28:45 5076 2

原创 Android PopupWindow/悬浮窗适配刘海屏

一、悬浮窗适配刘海屏悬浮窗正常情况下,是不能移动到刘海屏所在的区域,那么你看到结果就是:类似这样如上图所示,刚好是隔了一个刘海屏宽度的距离要解决悬浮窗可以靠边显示到刘海屏所在区域,只要设置一下Flag那个参数为LayoutParams.FLAG_LAYOUT_NO_LIMITS即可,主要如下:mParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_LAYOUT_NO_LIMITS;这个参数指明悬浮窗的位置不受系统屏

2020-06-09 21:21:09 2695 5

原创 Android 实现沉浸式体验

一、实现沉浸式状态栏1、实现Activity沉浸式体验1)先封装实现一个专门设置沉浸式的类public class ImmersiveModeUtils { public static void setImmersiveMode(final View contentView){ if (Build.VERSION.SDK_INT >= 19) { //先调用一次,设置沉浸 contentView.setSystemUiVis

2020-06-09 20:48:50 1056

原创 Android抽屉布局DrawerLayout与ToolBar关联

1、首先将根布局设置为:androidx.drawerlayout.widget.DrawerLayout,假如你想你的抽屉布局是在预览图中显示出来的话,可以设置属性 tools:openDrawer="start",start这个可以修改为left、right等,就取决于你的抽屉布局是设置在哪边<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"

2020-06-02 14:54:42 2318

原创 Android设置背景图延伸到状态栏

1、在Activity onCreate方法中设置以下代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //5.0 全透明实现 //getWindow.setStatusBarColor(Color.TRANSPARENT) Window window = getWindow(); window.clearFlags(Win

2020-06-02 10:50:20 3908 4

原创 Android设置渐变色状态栏

1、先在drawable目录下创建一个渐变色的矩形图片xml文件:com_sswl_gradient_yello.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="0"

2020-05-29 15:09:51 879 1

原创 Android PopuWindow实现物理返回键监听

【问题分析】正常情况下,PopuWindow是无法监听到物理返回键事件的,因为PopuWindow的最顶层的PopupDecorView mDecorView在dispatchKeyEvent中将返回键给拦截掉了,我们瞅一瞅PupoWindow的这段源码: @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEY

2020-05-12 19:53:26 1336 7

xposed-v89-sdk25-x86.zip

xposed-v89-sdk25-x86.zip

2022-07-25

Xposed framework.json

Xposed framework.json文件

2022-07-25

Xposed full.xml.gz

Xposed框架用到的full.xml.gz,适用于模拟器

2022-07-25

apkSigner.zip

apkSigner v30.0.1源码带有详细注释

2021-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除