Android 8.0 行为变更(二)针对 Android 8.0 的应用

继电器的选型规范 触点是继电器中最重要的结构件,触点的使用寿命受触点材料、触点上的电压及电流值(特别是接通时及断开时的电压、电流波形)、负载种类、切换频率、环境情况、接触形式、触点回跳现象等的影响,触点失效多以触点的材料转移、粘连、异常消耗、接触电阻增大等故障现象出现,使用时需要注意。为了稳定工作, DC 型继电器的线圈两端所加电压推荐使用波纹变化率小于±5%的线圈额定电压,否则继电器会工作不稳定,引起触点的粘接或异常损耗,特别是在继电器的驱动电路上连接有电动机、螺线管、变压器等器件时,这种情况更为明显。 阅读详情
- 针对 Android 8.0 或更高平台版本进行编译,或将 targetSdkVersion 设为 Android 8.0 或更高版本的应用开发者
- 必须修改其应用以正确支持这些行为

提醒窗口

使用 SYSTEM_ALERT_WINDOW 权限的应用无法再使用以下窗口类型来在其他应用和系统窗口上方显示提醒窗口:

  • TYPE_PHONE
  • TYPE_PRIORITY_PHONE
  • TYPE_SYSTEM_ALERT
  • TYPE_SYSTEM_OVERLAY
  • TYPE_SYSTEM_ERROR
    相反,应用必须使用名为 TYPE_APPLICATION_OVERLAY 的新窗口类型。

使用 TYPE_APPLICATION_OVERLAY 窗口类型显示应用的提醒窗口时,请记住新窗口类型的以下特性:

  • 应用的提醒窗口始终显示在状态栏和输入法等关键系统窗口的下面。
  • 系统可以移动使用 TYPE_APPLICATION_OVERLAY 窗口类型的窗口或调整其大小,以改善屏幕显示效果。
  • 通过打开通知栏,用户可以访问设置来阻止应用显示使用 TYPE_APPLICATION_OVERLAY 窗口类型显示的提醒窗口。

内容变更通知

Android 8.0 更改了 ContentResolver.notifyChange() 和 registerContentObserver(Uri, boolean, ContentObserver) 在针对 Android 8.0 的应用中的行为方式。

现在,这些 API 需要在所有 URI 中为颁发机构定义一个有效的 ContentProvider。使用相关权限定义一个有效的 ContentProvider 可帮助您的应用防范来自恶意应用的内容变更,并防止将可能的私密数据泄露给恶意应用。

视图焦点

可点击的 View 对象现在默认也可以成为焦点。如果您希望 View 对象可点击但不可成为焦点,请在包含 View 的布局 XML 文件中将 android:focusable 属性设置为 false,或者将 false 传递至应用界面逻辑中的 setFocusable()。

安全性

如果您的应用的网络安全性配置选择退出对明文流量的支持,那么您的应用的 WebView 对象无法通过 HTTP 访问网站。每个 WebView 对象必须转而使用 HTTPS。

有关提升应用安全性的其他准则,请参阅面向 Android 开发者的安全性。

帐号访问和可检测性

除非身份验证器拥有用户帐号或用户授予访问权限,否则,应用将无法再访问用户帐号。仅拥有 GET_ACCOUNTS 权限尚不足以访问用户帐号。要获得帐号访问权限,应用应使用 AccountManager.newChooseAccountIntent() 或特定于身份验证器的函数。获得帐号访问权限后,应用可以调用 AccountManager.getAccounts() 来访问帐号。

Android 8.0 已弃用 LOGIN_ACCOUNTS_CHANGED_ACTION。相反,应用在运行时应使用 addOnAccountsUpdatedListener() 获取帐号更新信息。

有关新增 API 和增加的帐号访问和可检测性函数的信息,请参阅此文档的“新增 API”部分中的帐号访问和可检测性。

隐私性

以下变更影响 Android 8.0 的隐私性。

系统属性 net.dns1、net.dns2、net.dns3 和 net.dns4 不再可用,此项变更可加强平台的隐私性。
要获取 DNS 服务器之类的网络连接信息,具有 ACCESS_NETWORK_STATE 权限的应用可以注册 NetworkRequest 或 NetworkCallback 对象。这些类在 Android 5.0(API 级别 21)及更高版本中提供。
Build.SERIAL 已弃用。需要知道硬件序列号的应用应改为使用新的 Build.getSerial() 函数,该函数要求具有 READ_PHONE_STATE 权限。
LauncherApps API 不再允许工作资料应用获取有关主个人资料的信息。当某个用户在托管配置文件中时,LauncherApps API 的行为就像同一配置文件组的其他配置文件中未安装任何应用一样。和之前一样,尝试访问无关联的个人资料会引发 SecurityExceptions。
权限
在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。

对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的请求都将被自动批准。

例如,假设某个应用在其清单中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE。应用请求 READ_EXTERNAL_STORAGE,并且用户授予了该权限。如果该应用针对的是 API 级别 24 或更低级别,系统还会同时授予 WRITE_EXTERNAL_STORAGE,因为该权限也属于同一 STORAGE 权限组并且也在清单中注册过。如果该应用针对的是 Android 8.0,则系统此时仅会授予 READ_EXTERNAL_STORAGE;不过,如果该应用后来又请求 WRITE_EXTERNAL_STORAGE,则系统会立即授予该权限,而不会提示用户。

媒体

框架会执行音频闪避。进行 AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 时,应用不会失去焦点。新的 API 适用于需要暂停而不是闪避的应用。请注意,此行为无法在 Android 8.0 1 版本中实现。
当用户打电话时,活动的媒体流将在通话期间静音。
所有与音频相关的 API 都应使用 AudioAttributes 而不是音频流类型来说明音频播放用例。仅为音量控制继续使用音频流类型。流类型(例如,已弃用的 AudioTrack constructor)的其他用途仍然有效,但是系统会将其记录为错误。
使用 AudioTrack 时,如果应用请求了足够大的音频缓冲区,则框架将尝试使用深度缓冲区输出(如果可用)。
在 Android 8.0 中,媒体按钮事件的处理有所不同:
在界面操作组件中处理媒体按钮未发生变化:前台操作组件在处理媒体按钮时仍然优先。
如果前台操作组件不处理媒体按钮,系统会将媒体按钮路由到最近在本地播放音频的应用。在确定哪些应用接收媒体按钮事件时,不再考虑活动状态、标志和媒体会话的播放状态。即使在应用调用 setActive(false) 后,媒体会话仍然可以接收媒体按钮事件。
如果应用的媒体会话已经释放,系统会将媒体按钮事件发送到应用的 MediaButtonReceiver(如果有)。
对于任何其他情况,系统都会舍弃媒体按钮事件。与其开始播放错误的应用,不如不播放任何东西。

原生库

在针对 Android 8.0 的应用中,如果原生库包含任何可写且可执行的加载代码段,则不会再加载原生库。倘若某些应用的原生库包含不正确的加载代码段,则此变更可能会导致这些应用停止工作。

集合的处理

  • 在 Android 8.0 中,Collections.sort() 是在 List.sort() 的基础上实现的。
  • 在 Android 7.x(API 级别 24 和 25)中,则恰恰相反。在过去,List.sort() 的默认实现会调用 Collections.sort()。

类加载行为

Android 8.0 检查确保类加载器在加载新类时不会违反运行时假设条件。不论类引用自 Java(来自 forName())、Dalvik 字节码还是 JNI,都会执行这些检查。平台不会拦截 Java 对 loadClass() 函数的直接调用,也不会检查此类调用的结果。此行为不应影响运行良好的类加载器的正常运行。

反射依旧可以用,只是增加了些检查!
  • 平台检查类加载器返回的类描述符是否与预期的描述符一致。如果返回的描述符与预期不符,平台会引发 NoClassDefFoundError 错误,并在异常日志中存储一条注明不一致之处的详细错误消息。

  • 平台检查请求的类描述符是否有效。此检查捕获间接加载诸如 GetFieldID() 等类的 JNI 调用,向这些类传递无效的描述符。例如,找不到包含 java/lang/String 签名的字段,是因为此签名无效;它应为 Ljava/lang/String;。

这与 JNI 对 FindClass() 的调用不同,其中 java/lang/String 是一个有效的完全限定名称。

Android 8.0 不支持多个类加载器同时尝试使用相同的 DexFile 对象来定义类。尝试进行此操作,会导致 Android 运行时引发 InternalError 错误,同时显示消息“Attempt to register dex file with multiple class loaders”。

DexFile API 现已弃用,强烈建议您改为使用此平台的类加载器之一,包括 PathClassLoader 或 BaseDexClassLoader。
注: 您可以创建多个引用文件系统中同一个 APK 或 JAR 文件容器的类加载器。这样做通常不会占用大量内存:如果存储而不压缩容器中的 DEX 文件,平台可以对此类文件执行 mmap 操作,而不直接提取它们。但是,如果平台必须从容器中提取 DEX 文件,以这种方式引用 DEX 文件可能占用大量内存。

在 Android 中,所有类加载器都被视为支持并行运行。当多个线程争用同一个类加载器加载相同的类时,第一个完成此操作的线程胜出,而操作结果将用于其他线程。无论类加载器是返回同一个类、返回不同的类还是引发异常,都将发生此行为。该平台静默忽略此类异常。

注意: 在低于 Android 8.0 的平台版本中,违反这些假设条件可能导致多次定义同一个类、由于类混淆造成堆损坏和其他不良影响。
Python爬取公交线路信息及站点shp数据 文末附数据下载地址 三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。 阅读详情

相关推荐

Code Ocean 上传代码 手把手教程

对于一些学术期刊,录用前会让把代码上传到Code Ocean上,但上传过程可能会遇到一些问题,小编分享一下自己的上传经验。他们会进行验证,验证通过,将自动发布。点此运行即可,但是运行比较慢。

u014071947的博客 1万+

Android O 上新特性问题

Android O 行为变更(二)http://blog.csdn.net/droyon/article/details/765998422.11、类加载行为02-20 14:50:06.004588 18955 18976 E AndroidRuntime: FATAL EXCEPTION: QQ_SUB02-20 14:50:06.004588 18955 18976 E AndroidRun...

lei7143的专栏 2177

Winform使用TreeView控件实现带复选框的三态树

刚接触c#,项目中用到Treeview实现三态,即选中、未选中、半选中状态,并且要求父子节点选择联动,效果类似下图网上有很多例子,于是研究了一下,结合网上大佬们的例子,所以在这里记录一下。首先新建一个Winform工程拖个TreeView控件,然后运行。。。嗯。。。加点数据吧。private void CreateTree() { TreeNode anime = new TreeNode...

laoyezha的博客 2万+

Android5.0-10.0各版本行为变更

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

maguifen2012的博客 4122

树莓派教程(基于python编程)--入门篇

一:格式化SD卡 SD卡插入读卡器连接电脑,使用SDFormatter对SD卡进行格式化 (重装烧录也要进行着SD卡格式化操作) 二:下载官方镜像 http://downloads.raspberrypi.org/raspbian_latest 三:烧录SD卡 使用Win32DiskImager将镜像烧录到格式化后的SD卡 SD卡盘根目录(/boot)下新建一个命名为ssh的...

qq_42109746的博客 6万+

OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域

OpenCV是一个强大的计算机视觉库,广泛应用于图像处理、计算机视觉和机器学习等领域。本文将介绍OpenCV中的一些基础功能,包括如何绘制图形、创建图像金字塔以及如何处理感兴趣区域(ROI)。

吾家有猫名探花的博客 1962

应用兼容性

前言 因国内Android开发环境特殊性,兼容性一直备受开发者关注。每Android新版发布,国内很多应用因没遵循最佳开发实践或用依赖底层非公开API“黑科技”而无法直接在新版运行,须改相应代码兼容。 注意事项 不用私有API 私有API指Android系统内部用并未提供公开接口API,开发者可通Java反射等技术调这些私有API。但如此风险是私有API无任何公开文档,须查看源代码才能

snpmyn 1043

基于Cohesive单元的二维水力压裂(二)

部件 2D-deformabel-shell 尺寸100 矩形工具(-20,-20)(20,20) 刨分:预知cohesive单元&定位注液点位置,定义全局网格尺寸0.2 X方向采用过渡网格,向中间加密。指定网格类型:CPE4P,指定单元类型,COH2D4P,粘性正则化系数:0.0001 材料属性 材料1 弹性模量10e9,泊松比0.25,渗透率1e-7,孔隙比0.1,液体比重...

s0302017的博客 1599

Android 开发者 | 应用兼容性注意事项

由于国内 Android 开发环境的特殊性,兼容性一直是很多开发者极为关注的问题。为此,我们特意请来了负责 Android 在中国兼容性问题的 Google 工程师为大家对一些常见问题做出解答,来看看我的工程师提到了哪些要点吧!"大家好,我是谷歌的开发技术推广工程师,主要负责 Android 在中国的兼容性问题。我们发现,每次有 Android 新版本发布时,国内有很多应用由于没有遵循最佳开发实践

谷歌开发者 2676

Unreal Engine Profiler:动画系统性能分析教程_2024-07-23_03-05-38.Tex

Unreal Engine Profiler 是一个内置的性能分析工具,它可以帮助开发者识别和解决游戏中的性能瓶颈。Profiler 提供了详细的性能数据,包括 CPU 使用率、GPU 负载、内存使用情况等,特别针对动画系统,可以查看动画蓝图的执行时间、骨骼动画的计算成本、以及动画混合和重定向的效率。通过这些数据,开发者可以定位到具体的问题,比如哪些动画状态消耗了过多的 CPU 时间,或者哪些动画资源导致了内存泄漏。

825

083、多帧降噪(MFR)与VST算法:低照度场景下的信噪比提升与鬼影抑制

本文深入探讨了多帧降噪(MFR)和VST算法在低照度场景中的应用与优化。作者从实际项目案例出发,指出单帧降噪的局限性,详细分析了MFR的核心原理与工程实现中的关键环节,包括帧对齐、帧选择、融合策略和鬼影抑制等技术要点。文章特别强调VST变换对噪声均匀化的重要性,并分享了实际开发中的调试经验与参数优化技巧,如"三明治"调试法和性能平衡策略。最后指出,优秀的MFR方案需要在信噪比提升、鬼影抑制和纹理保留之间找到场景化的平衡点,建议开发者通过真实场景测试验证算法效果。全文既有理论分析,又包含丰富的实战经验和技术细

zzfmlxs的博客 123

Android O 行为变更(二)

文章摘要 1、提醒窗口 2、内容变更通知 3、视图焦点 4、安全性 5、帐号访问和可检测性 6、隐私性 7、权限 8、媒体 9、原生库 10、集合的处理 11、类加载行为英文文献二、针对 Android O 的应用这些行为变更专门应用于针对 O 平台或更高平台版本的应用。针对 Android O 或更高平台版本进行编译,或将 targetSdkVersion 设为 Androi

hailushijie的专栏 1473

【Flink】Flink 消费一段时间1万多条数据就卡死

我们有个现场环境,发现了奇怪的现象,就是每次启动任务后,消费1万多条数据后就会卡死,然后整个流不消费,也不往下输出,看起来卡死了一样。缺图这里面出现的网闸原因导致的,但是经过我们写了一个简单的kafka消费程序,然后在出问题的节点上消费数据,实际排查,发现不是这个问题。这个问题,发现也不是,这段时间没有进行过kafka数据清理。里面的问题。因为这个问题,我们后面的代码刻意规范了,不这样操作。后来是在没办法了,然后我们dump了线程,发现有如下代码。

九师兄 351

Android 8.0 行为变更(一)针对所有 API 级别的应用

后台执行限制 Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。 此外,为提高设备性能,系统会限制未在前台运行的应用的某些行为。 具体而言: 后台 Service 限制: 处于空闲状态时,应用可以使用的后台 Service 存在限制。 这些限制不适用于前台 Service,因为前台 Service 更容易...

王学明 521

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android 9.0 行为变更(一)针对所有 API 级别的应用

电源管理 Android 9引入了一些新功能来改进设备电源管理。 从两个维度进行优化:应用使用频率及优先级、改进省电模式。 电源管理功能可以分为两个类别: 应用待机群组 基于应用最近使用时间和使用频率,帮助系统排定应用请求资源的优先级。 省电模式改进 更主动地将应用置于应用待机模式 所有APP都受到 后台执行限制 灭屏时,位置服务可能被停用 后台应用无法访问网络 注:这些变化适用于所有应...

王学明 2692

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

最新安卓版本对照表,API对照表(持续更新,更新到安卓17)

话不多说,直接上表,持续更新(更新到安卓16)。 列出了所有记录的可能会影响应用开发者的功能和行为变更。请使用此列表查找影响您的变更,然后点击相应的链接以阅读文档。下表列出了所有记录的可能会影响应用开发者的功能和行为变更。请使用此列表查找影响您的变更,然后点击相应的链接以阅读文档。Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

雨季余静的博客 9万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android 安卓从1.0到12.0总结(跟随Android官网实时更新)

文章目录Android版本对照表 Android版本对照表 Android版本 API级别 VERSION_CODE 重大改进或变更 开发注意事项 Android 11.0 30 R 强制执行分区存储机制、单次授权、自动重置权限、后台位置信息访问权限、软件包可见性、前台服务 《Android 11 隐私设置更新》 Android 10.0 29 Q 引入分区存储 可能会遇到无法保存图片到本地,或者造成Permission denied等问题,具体解决方案参考:《关于安卓open fai

两行代码 踏踏实实de工作 7966

Android 15行为变更:所有应用

随着设备制造商不断打造具有更大物理内存 (RAM) 的设备,这些设备中的许多可能会配置 16 KB(最终更大)的页面大小,以优化设备的性能。是 Android 15 中的一项新功能,可让用户在其设备上创建一个单独的空间,通过额外的身份验证层来保护敏感应用不会被窥探。由于私密空间中的应用公开范围受到限制,因此某些类型的应用需要执行额外的步骤,才能查看用户的私密空间中的应用并与之互动。随着每个版本的发布,特定的 Android API 可能会过时,或需要进行重构,以提供更好的开发者体验或支持新的平台功能。

hcgeng的专栏 2389

Android 8.0 行为变更-针对所有 API 级别的应用

这些行为变更适用于 在 Android 8.0 平台上运行的 所有应用,无论这些应用是针对哪个 API 级别构建。所有开发者都应查看这些变更,并修改其应用以正确支持这些变更。 一、后台执行限制Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。此外,为提高设备性能,系统会限制未在前台运行的应用的某些行为。具体而

ITPlus的博客 2670

Android8.0行为变更Google官方文档

Android 8.0 行为变更 本文内容 针对所有 API 级别的应用 后台执行限制 Android 后台位置限制 应用快捷键 语言区域和国际化 提醒窗口 输入和导航 网页表单自动填充 无障碍功能 网络连接和 HTTP(S) 连接 蓝牙 无缝连接 安全性 隐私性 记录未捕获的异常 联系人提供程序使用情况统计方法的变更 集合的处理...

上下求索 2440

android8.0存储权限,Android 8.0 权限变更介绍及实例

一、Android 8.0 权限简介在 Android 8.0 行为变更说明里面,有如下一段表述:权限在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的...

weixin_36095974的博客 890

Android P 行为变更

Android P 引入一系列有关 Android 系统的变更。不论应用针对的是哪个 Android 版本,其中大部分变更会影响所有应用;不过部分变更仅影响针对 Android P 开发的应用。为清楚起见,本文将分成两部分:针对所有 API 等级开发的应用以及针对 Android P 开发的应用 (详见下文内容)。针对所有运行在 Android P 上的应用这些行为变更适用于所有在 Android

谷歌开发者 1594

Android 8.0 行为变更

Android 8.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更。 其中大部分变更会影响所有应用,而不论应用针对的是何种版本的 Android。不过,有几项变更仅影响针对 Android 8.0 的应用。为清楚起见,本页面分为两个部分:针对所有 API 级别的应用和针对 Android 8.0 的应用。针对所有

GeofferySun的专栏 3537

Broadcasts在Android7.0以及Android8.0中的变更

从Android6.0开始,谷歌更新的Android越来越注重应用安全。对一些行为进行了限制,相信大家都有关注这些新版的变更。 本文主要记录我在学习Broadcasts在Android7.0以及Android8.0中的变更的一些笔记。 Broadcasts在开发中还是很常用的,它类似于发布/订阅者模式,我日常开发中主要用于监听系统的一些状态改变,例如连接、电量、蓝牙状态等或者是一些必要的...

天才小汪汪 1933

关于Android8.0 静态注册广播 行为变更的说明。

Andorid 8.0 对广播的使用做了变更。 当广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播。 注意这个“隐式”是重点。 看了网上几篇文章,对这个变更理解有误。错误的理解是:8.0后,广播接收器使用静态注册,是无法使用的。 实时并非如此。 先看一个例子: 首先,定义一个简单的广播接收器: public class MyReceiver extends Broadc...

thezprogram的专栏 3201

Android 8.0 动态权限变更 导致的坑

Android 8.0正式版推出也快1年了,国内的大厂们也终于开始更新自己的系统了,最新项目中用到了更新,然而由于之前并没仔细看过8.0的适配,导致有些8.0的用户并不能有效的更新到最新的版本,所以我也赶快看了一下关于各版本的适配,免得下次继续踩坑。 准备工作 把项目的targetSdkVersion改到26(8.0)或者更高, 然后一台Android 8.0(或者更高)版本系统的手机...

高级复制工程师的博客 4667
上一篇: Android 8.0 行为变更(一)针对所有 API 级别的应用
下一篇: Android 9.0 行为变更(一)针对所有 API 级别的应用
手艺人王学明
手艺人王学明 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄17年 441粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值