- 博客(745)
- 资源 (35)
- 收藏
- 关注
原创 Android插桩实现插件化
/ 次序就是在 AndroidManifest.xml 清单文件中定义 Activity 组件的次序。// 获取的包信息类名。// 通过反射获取 AssetManager 中的 addAssetPath 隐藏方法。// 注意此处的 ClassLoader 类加载器必须是插件管理器中的类加载器。// 调用代理 Activity 中的 setContentView 方法。// 调用代理 Activity 中的 setContentView 方法。// 该 PluginActivity 具有运行的上下文。
2026-08-05 15:51:55
15
转载 Shadow 还是 Shiply?2026年安卓插件化终极选型指南
如果你追求极致的代码控制权和合规性,且团队有能力自行搭建后端管理系统,Shadow 的开源模式是最佳实践;如果你更看重研发效率、希望快速落地动态化能力,并需要强大的灰度发布与多端统一管理,那么直接使用 Shiply 平台会省心很多。
2026-08-03 11:04:21
13
转载 2026年小程序开发指南:四大主流工具全面解析
现在数字经济越来越普及,小程序早就不只是个“引流工具”了,而是企业做线上生意的核心。做小程序有三个明显趋势:不用写太多代码、能覆盖各种场景、在不同平台都能用。选对开发工具,直接关系到做小程序快不快、用户用着舒不舒服、花的钱值不值。这篇文章就挑市面上最火的四款工具,从它们的优点、适合啥情况、会不会上手这些角度讲明白,不管你是程序员还是老板,都能找到适合自己的。
2026-07-29 16:16:00
22
原创 Python两个列表遍历——zip函数
在Python中,当需要同时遍历两个长度相同的列表时,可以使用zip()函数将列表元素一一对应组合。这种方法简洁高效,避免了手动管理索引,使代码更清晰易读。zip()会创建一个迭代器,生成由各列表对应位置元素组成的元组,直到最短的列表耗尽。对于等长列表,这能确保所有元素都被处理。相比传统的索引遍历,zip()更符合Python的优雅风格。
2026-07-15 17:58:28
43
原创 Python爬虫——json解析
在Python中,处理JSON数据经常涉及到解析JSON对象或数组,并根据特定的路径(或者说"键")访问数据。虽然标准的json库提供了基础的解析功能,但当你需要按照类似于XPath的路径来访问嵌套的JSON对象时,可以使用jsonpath库,它可以让你以类似XPath的方式查询JSON数据。
2026-07-15 15:53:53
1246
原创 Python调用百度搜索触发安全验证
params = {这就引出下面的技术:在使用Python调用百度搜索时,如果触发百度安全验证,通常是因为百度为了防止自动化脚本滥用其搜索服务而设置的反爬虫机制。这种情况下,普通的HTTP请求可能无法绕过这些安全验证。
2026-07-14 16:43:00
511
原创 Python学习——User-Agent参数
有些网站会根据User-Agent参数返回不同的内容,所以需要添加这个参数,披上浏览器的外衣进行伪装。加上User-Agent参数上,返回的数据有677869个字节。如百度首页,默认只返回2287个字节的数据,
2026-07-14 16:11:50
37
原创 Python学习———response的常用属性与方法
response.cookies 响应的cookie,服务器端set-cookie。response.request._cookies 请求的cookie。
2026-07-14 15:32:11
210
原创 Python爬虫中Xpath用法之——normalize-space()
今天遇到一个问题:有一个表格,现在要用python获取到其中的内容。tr中有9个是直接td里包含内容文本,还有2个是取子元素<a>取里面的文本内容。我用列表推导式写了半天,怎么都不能满足要示。意外发现用item.xpath('normalize-space()')就能很好实现功能。所有后代文本节点拼接后的整体字符串并标准化。
2026-07-10 18:16:14
602
原创 Python应用之——网络爬虫
打开本地文件: with open("xx/xx")第二步:解析数据,安装lxml (xpath)第一步:网络请求,安装requests库。
2026-07-01 08:13:36
608
原创 2026年Android插件化技术方案
根据2026年的技术现状,目前Android生态中仍然活跃且值得关注的插件化方案,主要分为两大阵营:以腾讯Shadow、Shiply为代表的“零反射/零Hook”派,和以Phantom、ComboLite等为代表的“新一代”框架。需要注意的是,像DroidPlugin、Small这类在2015-2017年流行的“Hook派”老牌框架,因严重依赖系统非公开API,已基本停止维护,在高版本Android系统上不再推荐使用。追求灵活、轻量、宿主低侵入:Shadow 是不错的选择。🚀 主流插件化方案对比。
2026-06-26 14:49:50
206
原创 Python实战——AI应用
——Ollama 是"播放器",DeepSeek 是"影片",Ollama 能播放 DeepSeek,但 DeepSeek 也可通过其他方式部署使用。Ollama 可以方便地在本地电脑上运行 DeepSeek 模型,但 DeepSeek 并非必须依赖 Ollama 才能使用。需要我演示如何用Ollama快速调用DeepSeek模型的完整命令流程吗?能帮你3分钟内完成本地部署。Ollama 是本地部署工具,DeepSeek 是大语言模型,两者是"运行框架与模型"的协作关系。运行框架与模型的关系。
2026-06-09 18:01:00
72
原创 python学习——核心语法六
__lt__ 小于, __le__ 小于或等于, __gt__ 大于, __ge__大于或等于。#将对象中的所有属性以key->value字典的形式打印出来。#将对象中的所有属性以key->value字典的形式打印出来。#打印对象(__str__ 自定义输出)#会自动去调用Car里的__eq__方法。#会自动去调用Car里的__gt__方法。# __str__ 改变对象打印效果。# __eq__ 比较两个对象是否相等。# __init__ 初始化方法。#自定义两个对象相等的标准。
2026-06-09 16:55:33
45
原创 python学习——核心语法6
long_seperator3()这个方法没有,因为__all__没有包含。#all定义了什么范围,别人 from import *导入的就是什么范围。#all定义了什么范围,别人 from import *导入的就是什么范围。# 当被当作模块导入时,对应的值是导入的文件名lesson6。#会执行lesson6里面的打印,打印值为:lesson6。# 当自己运行时,对应的值是 __main__#测试代码,只有自己运行自己才会执行。NAME = "黑马*刚哥"
2026-06-04 09:48:01
247
原创 python学习——核心语法五
return round(3.14*r**2,2),round(2*3.14*r,2) #多个返回值,封闭在元组中。#函数 函数定义的时候并不会执行,只有调用函数的时候,函数体的逻辑才会执行,先定义后调用。print(f"圆的面积:{circle_area_len(5)[0]}")print(f"圆的周长:{circle_area_len(5)[1]}")#多个返回值,封装在一个元组中。
2026-06-01 11:20:38
265
原创 python学习——核心语法四
shopping_cart = [{"id":'123',"name":"商品名称1","price":12,"num":100},{"id":124,"name":"商品名称1","price":12,"num":100},{"id":124,"name":"商品名称1","price":12,"num":100},{"name":"商品名称1","price":12,"num":100}]dic_student = {'张三':98,'李四':80,'王五':78,'赵六':95,'四七':88}
2026-05-29 16:25:00
54
原创 python学习——核心语法三
french_set = {"张三","许木","王鹏","邓江","胡图","李明","周刚"}french_set = {"张三","许木","王鹏","邓江","胡图","李明","周刚"}math_set = {"张三","乔九","许木","大大","葛优","王鹏"}#set pop()是按某种顺序进行的,而不是随机的。并且每次执行的结果都一样。art_set = {"刘梅","王鹏","谢娜","李明","刘强"}art_set = {"刘梅","王鹏","谢娜","李明","刘强"}
2026-05-29 15:00:45
189
原创 python学习——核心语法二
print(f"语文的平均分:{(sum(chinese_scores)/len(chinese_scores)):.1f}")print(f"英语的平均分:{(sum(english_scores)/len(english_scores)):.1f}")print(f"学号:{s[0]} 姓名:{s[1]} 总分:{total} 平均分:{avg:.1f}")print(f"数学的平均分:{(sum(math_scores)/len(math_scores)):.1f}")
2026-05-27 16:16:17
199
原创 通过经纬度获取位置信息
"formatted_address": "北京市西城区西什库大街31号院23东方开元信息科技公司",天地图逆地理服务API是一类简单的HTTP/HTTPS接口,提供将坐标点(经纬度)转换为结构化的地址信息的功能。"address": "西什库大街31号院23","address_position": "东北","poi_position": "东北","poi": "东方开元信息科技公司","city": "北京市西城区","road": "大红罗厂街",使用逆地理编码服务前您需要。
2026-05-27 12:09:42
203
原创 python学习——核心语法一
case _: print("输入错误") #如果所有的都没有匹配到,就会执行默认的case _day = int(input("请输入星期几(1-7)"))case 6 | 7: print("周末轻松日")case 2: print("周二:学习培训日")case 3: print("周三:项目开发日")case 4: print("周四:代码审查日")case 5: print("周五:总结规划日")case 1: print("周一:工作会议")#嵌套循环 """打印等腰三角形"""
2026-05-26 09:56:30
177
原创 Android将私有目录图片转存到相册
该代码实现了将图片保存到系统相册的功能。主要包含两个方法:funsaveImageToGallery()处理图片保存逻辑,根据Android版本分别采用MediaStore API(Android 10+)或MediaScannerConnection(旧版本)方式;fungetMimeType()用于获取文件MIME类型。新版本通过ContentResolver操作MediaStore直接写入,旧版本通过媒体扫描器更新媒体库。代码考虑了不同Android版本的兼容性,并包含完善的错误处理和日志记录。
2026-05-18 15:27:29
28
转载 关于Android里的各种存储目录
清除数据清除的是保存在app中所有数据,就是上面提到的位于 packageName 下面的所有文件,包含内部存储 /data/data/packagename/和外部存储 /storage/emulated/0/Android/data/packagename/。在大多数设备上,内部存储空间是小于外部的,但是内部存储空间是始终可以使用的,与之相反,一些可以插 SD 卡的设备的外部存储空间是可以拓展的,所以意味着 SD 卡这部分存储空间不是始终可用的。应用程序只能访问它们正在运行的用户的共享存储。
2026-05-18 11:21:16
57
原创 Attempt to load writeable dex file 问题解决方案
文章摘要:在Android插件化开发中,当从assets拷贝apk到存储空间并使用DexClassLoader加载时,遇到"Attempt to load writable dex file"错误。解决方案是将插件存放目录从context.getExternalFilesDir()(外部存储)改为context.getFilesDir()(内部私有目录),并对文件设置setReadOnly()。关键点包括:1)内部存储目录下设置只读才有效;2)根据Android版本选择优化目录;3)通过
2026-03-18 08:36:38
70
原创 Android 14上DexClassLoader加载限制的3种实战解决方案(附JNI代码)
此外,阿里云提供了专业及时的Android dexclassloader加载的相关问题及解决方案,可以作为参考。系统调用可以修改文件权限,但Android系统似乎还有额外的校验机制,可能记录了文件的初始权限状态,因此这种方法可能无法绕过系统的安全限制。这是最直接的解决方案,因为系统强制要求被加载的dex文件必须是只读的。加载未安装的APK资源文件的示例,通过反射获取未安装apk的Resource,进而实现动态加载。的使用受到了新的限制,只能用于加载只读文件中的代码。虽然反射调用本身是成功的,但。
2026-03-16 17:32:40
89
原创 vue thinkphp跨域请求配置
解决Vue前端调用ThinkPHP后端接口跨域问题的方法:通过在后端创建自定义中间件MyCrossDomain,设置允许跨域的请求头信息,包括Access-Control-Allow-Origin、Access-Control-Allow-Methods等。然后在middleware.php配置文件中注册该中间件即可。这种方法避免了繁琐的前端代理配置,直接从服务器端解决了跨域访问限制。
2026-02-27 16:18:03
102
原创 Android简单易用的视频压缩
本文介绍了一个视频压缩模块的使用方法。首先需要从CSDN下载该模块并作为子模块添加到主项目中,在settings.gradle和build.gradle中进行配置。该模块提供了Java和Kotlin两种调用方式,通过VideoCompress类实现视频压缩功能,支持设置输入路径、输出路径和监听器。监听器包含onStart、onSuccess、onFail和onProgress四个回调方法,可监控压缩全过程。项目参考了GitHub上的VideoCompressor实现,适用于需要视频压缩功能的Android应
2025-12-20 18:31:45
238
1
转载 Android插件化技术原理篇
经过上述步骤,便实现了插件Activity的启动,并且该插件Activity中并不需要什么额外的处理,和常规的Activity一样。答案是所有和Activity相关的生命周期函数,系统都会调用插件中的Activity,原因在与AMS在处理Activity时,通过一个token表示具体Activity对象,而这个token正是和启动Activity时创建的对象对应的,而这个Activity被我们替换成了插件中的Activity,所以之后AMS的所有调用都会传给插件中Activity。
2025-12-17 10:25:17
140
原创 Android图片转base64后传到服务器提示格式不对
摘要:Android开发中图片转base64上传服务器时出现格式错误,即使文件确实是JPEG/PNG格式。问题出在Base64编码方式,将Base64.DEFAULT改为Base64.NO_WRAP后解决。DEFAULT编码会插入换行符导致格式识别错误,而NO_WRAP保持连续编码字符串,确保服务器能正确识别图片格式。关键修改点为val encodedImage = Base64.encodeToString(byteArray, Base64.NO_WRAP)。
2025-12-09 19:12:15
274
androidgif动画例子
2014-10-24
内容观察者示例
2013-01-31
最全的CSS参考书(CSS完全参考手册)
2010-04-30
android sqllite 操作类似dbutil的框架
2012-11-16
jsp+xml留言本
2011-04-22
android视频压缩三方sdk
2025-12-20
cocos 六边开拼图游戏代码
2023-12-09
oaid-sdk-1.2.1.zip
2022-06-22
自定义实现CoordinatorLayout效果,tablayout随recycleview滚动而滚动
2017-08-23
美摄libNvStreamingSdkCore.so下载,包含32位的和64位的
2021-12-27
jniLibs.rar
2019-08-02
mupdf文件.rar
2019-12-10
Android与设计师方便沟通的适配方案
2017-06-09
Charles3.10.1
2015-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅