查找应用中的 Private API

本文探讨了iOS开发者如何避免在应用中使用Private API,并介绍了AppScanner这一工具,它可以帮助开发者检查并清除代码中可能存在的Private API调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.cocoachina.com/iphonedev/sdk/2011/0531/2906.html


作为 Objective-C / Cocoa Touch 开发者,在经历了呕心沥血十月怀胎终于孕育出了一个代码包,然后踌躇满志准备提交给天杀的 Apple App Review Team  审核之时,别急,我们仍然需要诚惶诚恐的考虑一个问题,我们的代码里是否用到了 Private API ?

 

    什么是 Private API ?简而言之,就是这个 API 真实存在于 Cocoa Touch 中,但它又不是 Public API (有点绕吧…)。那什么是 Public API 呢?Public API 就是苹果通过 Cocoa Touch 向全世界第三方开发者公开的所有 API 。在哪可以查到 Public API ?在你的 Xcode 工程中就能查到。如这幅截图所示, Xcode 中所有 framework 的头文件都是我们可用肉眼查询的 Public API 列表。

 

    同此同时,民间也流传着一个非官方的 Private API 列表

    于是你说,那问题不就解决了呗,只要我们洁身自好,保证自己的代码里只使用 Cocoa Touch 公布的 API ,我们就肯定不会惹上 Private API 啦。

    然而实际情况往往不是这样,当今世界,嗯嗯当今世界,App Store 的竞争越发激烈,每位开发者都希望自己的代码能站在前辈优秀开源代码的基础上高屋建瓴,而不是每新建一个工程就得自己花十天半个月一遍遍 reinvent the wheel 重造车轮。 随手举几个例子, ASIHTTPRequest 、JSON 、Facebook / Three20 、 SFHFKeychainUtils ,这几套知名开源代码包存在于许许多多优秀的 iOS 应用之中。其他名气稍小但是同样流传广泛的开源或者闭源代码包就更数不胜数了。作为开发者,我们不得不频繁面对这样一个问题,我们如何确保这些第三方的代 码报里,不存在 private API ?

    苹果提供了几种机器识别方法,比如 string 命令,比如 otool -ov 命令,但都不太好用。江湖上有人做了一套解决方案,名叫 AppScanner ,我老人家决定强烈推荐一下。

  • 怎么用?很简单,你把工程编译好,然后直接将 .app 文件夹整个拖进 AppScanner 窗口里。
  • 免费的么?几乎是免费的,虽然收费(也才 $2.99 ),但是头 14 天免费。
  • 是否有人维护?有,而且只要你愿意出 $2.99 支持他们维护。他们还会继续开发下去。

    这是一个实例的截屏,头两项 API 可疑度 100% ,说明它们就是来搞破坏的 Private API。

 

    最后插一则八卦, Facebook / Three20 如雷贯耳,想必很多开发者都使用过。然而要命的事,在 Three20 的第一个版本中,就悄悄的藏着一条因为重名导致的假阳性 Private API 。虽然是假阳性,但那次事故仍然导致了所有使用那个版本 Three20 的 app 被惨拒。当然了,后来他们很快就修正了这个问题。


    资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值