使用Flash Builder 4.5 对 Apple iOS设备的应用程序进行打包

Flash Builder 4.5 包含对 Google Android、Apple iOS和 BlackBerry Tablet OS设备的 Flex 和 ActionScript 应用程序进行打包的支持功能。 为各种平台获取签字证书和配置应用程序包的过程是完全不同的。

本文和视频旨在帮助 ActionScript 和 Flex 开发人员完成必要的步骤,以便在项目的开发、测试和部署阶段,利用 Flash Builder 创建的应用程序能够安装到 iOS 设备上。

关于对其它平台的应用程序进行打包的更多信息,请查阅下列文章:

获取要求的证书

为了对在 iOS 设备上进行测试/调试以及在 Apple App Store 进行部署的应用程序进行打包,你需要一个 Apple iOS 开发证书(采用P12格式)和一个配置文件。 每个开发证书和配置文件均有开发和发行两种版本。

开发配置文件包含一组数据信息,它能够将开发人员和设备与经过认可的 iOS 开发团队绑定在一起,并且能够启用用于测试的设备。 它包含一组 iOS 开发证书、若干设备 ID 和一个应用程序 ID,并且它必须安装于你希望运行你的应用程序的每个设备上。

另一方面,发行配置文件可能包含设备数据信息,它依据你是否希望为特定设备的特别发行或通过 Apple App Store 创建应用程序包。Apple 只接受采用 App Store 发行配置文件创建的应用程序,但采用 App Store 配置文件创建的应用程序不能直接安装到设备上。

步骤1:在 iOS Developer Program 中注册

获取必要证书的第一步是成为一个 Apple Developer 并且在 iOS Developer Program 中注册(需要收费)。

浏览到 http://developer.apple.com 并且点击该链接加入 iOS Developer Program。按照相应的步骤在 iOS Developer Program 中进行注册。你需要作为一个个体人员或作为一个公司开发团队的一分子注册为一个 Apple Developer(如果你现在不是的话),然后等待直到你通过电子邮件收到一个确认代码。之后你可以加入 iOS Developer Program。在 2011年6月,加入该计划的费用是每年 $99。整个过程需要花费几个小时到几天的时间。

步骤2:登录iOS配置门户(Provisioning Portal)。

iOS 配置门户(Provisioning Portal)是你创建应用程序 ID、注册你希望在开发阶段部署应用程序的 iOS 设备、上载证书签名请求、批准和下载开发人员证书以及创建和下载配置文件的地方。

  1. 浏览到 Apple Developer 网站,然后点击 Member Center 链接。
  2. 登录到 Member Center,然后点击 iOS Provisioning Portal 下面的链接。
步骤3:在 iOS 配置门户(Provisioning Portal)中创建一个App ID。

你希望在 iOS 设备上部署的每个应用程序(或应用程序组)必须具有一个 App ID;它是由一个 Bundle Seed ID(也称为App ID前缀)和一个 Bundle Identifier(也称为 App ID 后缀)组成。

  1. 转到 iOS Provisioning Portal 的 App IDs 页面,然后点击 New App ID。
  2. 在 Manage 标签上,输入你的应用程序(或应用程序组)的描述,生成一个新的 Bundle Seed ID(从下拉菜单中选中 Generate New),然后输入一个 Bundle Identifier(例如,com.adobe.samples.*)。

App ID 是一个 Bundle Seed ID(一个生成的10字符的唯一字符串)和一个 Bundle Identifier 的组合。 推荐的实际方法是在 App ID 的 Bundle Identifier 部分使用一个反向域名式样(reverse-domain name style)字符串。

你指定的 Bundle Identifier 必须与在 AIR application-descriptor 文件中设置的应用程序ID匹配。 例如,如果你为 com.adobe.samples.FlexMobileTestDrive 指定一个 Bundle Identifier,则app.xml 文件必须包含该 ID(参见图1)。

确保 AIR应用程序的ID 与 Apple App ID 匹配
图1. 确保 AIR应用程序的ID 与 Apple App ID 匹配

为了获得更多灵活性,你可以在 Bundle Identifier 中使用一个通配符,这样它可以用于一组应用程序。 例如,一个 Bundle Indentifier com.adobe.samples.* 可以用于创建和安装带有com.adobe.sample.FlexMobileTestDrive , com.adobe.samples.myOtherApp 等ID的应用程序。

步骤4:使用 iTunes 获取 iOS 设备 ID。

你希望在上面运行或调试应用程序的设备必须在用于对应用程序打包的配置文件中指定;因此你必须在 iOS Provisioning Portal 中对这些设备进行注册。 为了对设备进行注册,你需要其唯一的设备ID。

  1. 将你的 iOS 设备连接到你的计算机并且打开 iTunes。
  2. 在 iTunes中,在 Devices 部分选中你的设备,然后浏览到 Summary 标签。
  3. 点击 Serial Number 标签以便显示相应的 Identifier 字段和40字符的 UDID(参见图2)。
  4. 按下 Command/Ctrl+C 将该 UDID 复制到你的剪贴板上。
获取iOS设备 ID
图 2. 获取iOS设备 ID
步骤5:在 iOS Provisioning Portal 中注册 iOS 设备。

一旦你拥有 iOS 设备 ID,你可以在 iOS Provisioning Portal 中对它们进行注册。

  1. 返回到 iOS Provisioning Portal,然后浏览到 Devices 页面。
  2. 点击 Add Device,输入一个你从 iTunes 获得的设备名称和相应的设备 ID,然后点击 Submit。
步骤6:创建一个证书签名请求(certificate signing request (CSR))文件。

下面你需要创建一个开发开发人员证书(development developer certificate)和一个用于特定开发人员证书、App ID和设备的开发配置文件(development provisioning profile)。 为了获得一个开发人员证书,你需要在你的计算机中生成一个证书签名请求(certificate signing request (CSR) )文件,将其上载到 iOS Provisioning Portal,然后你自己或团队领导需要批准这一请求。 尽管你可以创建一个能够同时用于 Mac 和 Windows系统计算机的 CSR,但 Mac 系统中的 CSR 更为简单。

在 Mac OS 中生成一个 CSR

在 Mac 系统中,你可以使用 Keychain Access program 生成一个CSR。

  1. 打开位于 Applications > Utilities 中的 Keychain Access。
  2. 从一个 Certificate Authority 中选中 Keychain Access > Certificate Assistant > Request a Certificate。
  3. 在 Certificate Assistant中,输入你的名字和电子邮件,将请求保存到硬盘中、在 Let me specify key pair information字段前打勾(参见图3),然后点击Continue。
创建一个证书请求
图3. 创建一个证书请求
  1. 指定保存文件的位置和它的名称,然后点击 Save。
  2. 在 Key Pair Information 页面上,选中具有2048比特密钥长度的 RSA 算法。 如果你没有将密钥长度设置为 2048 比特,则 iOS Provisioning Portal 将拒绝相应的 CSR。
  3. 寻找保存于你计算机中的证书请求文件(certificate request file)。
在 Windows 中生成一个 CSR

在 Windows 中,你可以使用 OpenSSL 生成一个CSR。

  1. 浏览到 OpenSSL 网站,在你的计算机中下载和安装 OpenSSL。

    注:你也可能需要安装在 Open SSL 下载页面中列出的 Visual C++ 2008 Redistributable 文件,尽管你不需要安装 Visual C++。

  2. 打开一个 Windows 命令会话,并且浏览到 OpenSSL bin 目录下的CD。
  3. 通过在命令行输入下列代码创建一个私有的密钥:
openssl genrsa -out mykey.key 2048.
  1. 保存该私有密钥文件。 你将会在后面使用该文件。

    注:当使用 OpenSSL 时,不能忽略错误消息。 如果 OpenSSL 生成一个错误消息,它仍然输出文件,但这些文件可能无法使用。 如果你看到错误,先核查你的句法,然后运行相应命令。

  2. 通过在命令行输入下列代码创建相应的 CSR 文件:
openssl req -new -key mykey.key -out CertificateSigningRequest.certSigningRequest -subj "/emailAddress=yourAddress@example.com, CN=John Doe, C=US"
  1. 利用你自己的值替换电子邮件地址、CN (certificate name)和C (country)。

  2. 寻找保存于你计算机中的证书请求文件(certificate request file)。
步骤7:使用 iOS Provisioning Portal 创建一个开发人员证书(CER)文件。

现在你可以上载证书请求文件到 iOS Provisioning Portal 以便创建一个开发开发人员证书(development developer certificate)。

  1. 返回到 iOS Provisioning Portal,然后浏览到 Certificate > Development。
  2. 点击 Request Certificate,然后点击Browse按钮。
  3. 选中你刚刚创建并且在你的计算机中保存的 CSR 文件,然后点击Submit。 相应的证书将出现在Certificates页面中,其状态为等待发布(pending issuance)。
  1. 注:如果你是一个个体开发人员或开发团队领导,则需要等待直到证书状态从等待发布(pending issuance)改变为一个 Approve按钮(你必须刷新该页面)或直到你收到一个电子邮件通知:你有一个要求你批准的证书请求,然后点击Approve按钮。 通常这一操作仅仅需要几分钟。

    如果你不是一个个体开发人员或开发团队领导,则等待直到你收到一个电子邮件通知你开发团队的领导已经批准你的证书。

  2. 在 iOS Provisioning Portal 的 Certificates 页面,点击你的证书旁边的 Download 按钮。
  3. 保存该文件。 它将以文件名 developer_identity.cer 保存。
  4. 另外,点击相应的链接下载 WWDR 中间证书。
步骤8:将 iOS 开发人员证书转换为P12 格式。

为了能够通过 Flash Builder 使用证书,你必须将它转换为P12格式。 该P12文件能够将你的Apple开发人员证书和相应的私有密钥组合到一个单一文件。

在Mac OS中创建一个P12文件

在 Mac系统中,你可以使用Keychain Access program 生成一个P12版本。

  1. 打开 Keychain Access 应用程序(在Applications/Utilities 文件夹中)。
  2. 在 Finder 或 Keychain Acces 中,双击 WWDR 证书文件 (AppleWWDRCA.cer),选中File > Import,然后导入 AppleWWDRCA.cer。
  3. 在 Finder 或 Keychain Acces 中,双击 develop_identity.cer 文件,选中 File > Import,然后导入 develop_identity.cer 文件。
  4. 浏览到 Certificates。 你应该看到列出的两个证书(参见图4)。
  5. 展开相应的开发人员证书。 你应该看到一个私有密钥(参见图4)。
导入开发人员证书
图4. 导入开发人员证书
  1. 右击该私有密钥,然后选择Export。
  2. 选中一种文件格式:个人信息交换(Personal Informatin Exchange (.p12))并且指定一个文件名称,然后保存位置 (参见图5)。 指定一个名称以及保存文件的位置,选中一种文件格式:个人信息交换(Personal Informatin Exchange (.p12)),然后点击Save。
创建一个P12版本的证书
图5. 创建一个P12版本的证书
  1. 在显示的对话框中,为该P12文件创建一个密码。当你使用该证书对应用程序进行签名时,你必须输入该密码。
在 Windows 系统中创建一个P12文件

在 Windows 系统中,你可以使用 OpenSSL 将 iOS 开发人员证书文件转换为一个 PEM 证书文件,然后生成一个基于该 PEM 证书和你先前利用请求生成的证书密钥的P12文件。

  1. 通过在 OpenSSL bin目录下输入下列命令行语句创建一个PEM 文件:openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
  2. 通过在 OpenSSL bin目录下输入下列命令行语句生成一个有效的P12文件。 使用你刚刚创建的 PEM 版本和早先在创建 证书签名请求(certificate signing request (CSR))文件时生成的私有密钥。openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iOS_dev.p12
步骤9:创建一个 iOS 开发配置文件(development provisioning profile)

在对你的应用程序进行打包之前,你完成使用 iOS Provisioning Portal 需要的最后一步是创建一个 iOS 开发配置文件(development provisioning profile)。

  1. 返回到 iOS Provisioning Portal,浏览到 Certificate > Provisioning,然后点击New Profile。
  2. 输入一个配置文件名称,选中你的证书,选中 App ID 和设备,然后击 Submit。
  1. 等待直到配置文件的状态从 Pending 改变为 Active(你必须刷新该页面)。 通常这一操作仅仅需要几秒钟。
  2. 下载该配置文件。

在设备上运行和调试应用程序

在你拥有一个开发 P12 开发人员证书和一个开发配置文件之后,你将能够使用 Flash Builder 将你的 AIR 应用程序打包为一个本机的 iOS 应用程序,该应用程序能够安装于在配置文件中指定的一个设备。 你可以在项目的 packaging info 中指定这些文件,然后为 iOS 设备创建一个运行配置(run configuration)。Flash Builder 创建一个 IPA 应用程序包,你可以将它添加到 iTunes 中,并且与你的设备进行同步。

步骤1:在 Flash Builder 中,设置应用程序 ID。

记住应用程序描述符文件中的应用程序ID必须与你希望用于对应用程序进行打包的相应配置文件的 Apple App ID 匹配。

打开应用程序描述符文件并且确保其 ID 设置为相同的名称(例如,com.adobe.samples.FlexMobileTestDrive),或者在使用一个通配符捆绑标识符的情形下(例如,com.adobe.samples.*),确保该ID以该字符串开头。

步骤2:在 Flash Builder 中,指定项目 iOS 打包信息。

该信息将在创建调试应用程序包时使用。

  1. 在Flash Builder中,右击Package Explorer中的项目,然后选中Properties。
  2. 在 Properties 对话框中,选中 Flex Build Packaging > Apple iOS(对于 Flex 项目)或 ActionScript Build Packaging > Apple iOS(对于 ActionScript项目)。
  3. 指定你创建的P12开发开发人员证书文件(P12 development developer certificate file)和开发配置文件(development provisioning file)(参见图6)。
指定Apple iOS 打包属性
图6. 指定Apple iOS 打包属性
步骤3:使用 Flash Builder 将应用程序打包为一个调试IPA文件。

为了创建一个应用程序包,你必须先创建一个运行配置(run configuration)以便在一个 iOS 设备上运行。

  1. 在 Flash Builder 中,在 Run 菜单或 Run 按钮的下拉列表中选中 Run Configurations,然后点击 new 或 duplicate 按钮以便创建一个新的运行配置(run configuration)。
  2. 对该 new configuration 进行命名,将 target platform 设置为 Apple iOS,将 launch method 设置为 On device,然后选中 standard 或 fast 打包方式(参见图7)。Standard 打包方式需要花费几分钟,但应用程序性能与发布版本相似。Fast 打包方式需要花费几秒钟,但应用程序的运行速度显著慢于发布版本。
创建一个用于在 Apple iOS设备上运行应用程序的run configuration
图7. 创建一个用于在 Apple iOS设备上运行应用程序的run configuration
  1. 点击 Run按钮,然后在 Certificate Password 对话框中输入你的证书密码。 Flash Builder 可以将你的应用程序转换为一个本机 iOS 应用程序。 在该过程完成之后,你将看到一个 Packaging Completed 对话框(参见图8)。
等待直到调试 IPA 包创建完毕
图8. 等待直到调试 IPA 包创建完毕
  1. 在你项目的 bin-debug 文件夹中找出 IPA 文件(参见图9)。 这是开发的应用程序的一个调试版本。 在下面的章节中,你将学习如何创建用于发行的 IPA 的发布版本。
寻找已创建的 Apple iOS调试包
图9. 寻找已创建的 Apple iOS调试包
步骤4:使用 iTunes 在 iOS 设备上安装应用程序。

现在,你可以在 iOS 设备上部署或调试应用程序。 与其它平台不同,Flash Builder 能够自动地将应用程序部署到设备上;你需要使用 Apple iTunes 完成这一任务。

  1. 打开 iTunes,选中File > Add to Library,然后添加应用程序的配置文件。 你可以通过将其拖拽到iTunes dock图标中添加该文件。
  2. 选中 File > Add to Library,然后将应用程序 IPA 文件添加到 iTunes (或将其拖拽到 iTunes dock 图标中)。
  3. 在 Apps 中找出你的新的应用程序(参见图10)。当前,该应用程序使用默认名称和图标。你将在下一章节学习如何对它们进行定制。
在iTunes中找出应用程序
图10. 在iTunes中找出应用程序
  1. 将你的 iOS 设备连接到你的计算机USB端口。
  2. 在 iTunes 中,选中附着的设备并且确保你的应用程序已经选中为设备同步方式,然后对设备进行同步(参见图11)。
将应用程序添加到 Apple iOS设备中
图11. 将应用程序添加到 Apple iOS设备中
  1. 在设备上找出相应的应用程序(参见图12),然后运行它(参见图13)。
找到设备上相应的应用程序
图 12. 找到设备上相应的应用程序
运行设备上相应的应用程序
图 13. 运行设备上相应的应用程序
步骤5:在设备上调试应用程序。

为了在设备上调试应用程序,你可以使用 Flash Builder 创建一个调试 IPA 包,然后在设备上使用 iTunes 安装它,就像你在设备上运行应用程序一样。 不过,对于调试来说,你的计算机和设备必须位于相同的 Wi-Fi 网络。 首先通过 iTunes 使用 USB 电缆在设备上安装应用程序;当对应用程序进行运行和调试时,可以使用 Wi-Fi 网络实现设备和 Flash Builder 之间所有通信任务。

  1. 在 Flash Builder 中,从 Debug 按钮的下拉菜单中选中 iOS 设备配置文件并且点击Debug。
  2. 在创建 IPA 包之后,你将在 Flash Builder 中看到一个 Waiting for Debugger Connection 对话框(参见图14)。在你在设备上安装和运行应用程序之后,调试器将进行连接操作。
在Flash Builder中,等待调试器连接完成
图14. 在Flash Builder中,等待调试器连接完成
  1. 再次在你项目的 bin-debug 文件夹中找出 IPA 文件,将其添加到 iTunes 中,然后将其与你的设备进行同步,就像你在上一步骤中的操作一样,以便将其安装到设备上。

    注:在你安装一个新的应用程序版本之前,你应该从设备上卸下现有的应用程序。

  2. 在设备上运行应用程序。 当代码运行到一个断点时, 应用程序将暂停,然后你可以使用 Flash Builder 对代码进行单步调试,就像你使用设备仿真器进行调试一样。

如果在你完成在设备上安装和运行应用程序之前 Flash Builder 调试器超时,你只需再次从 Flash Builder 中选择在 iOS 设备上进行调试,然后在设备上启动应用程序。

如果你在设备调试过程中遇到问题,请检查是否你的计算机处于一个 VPN 网络之中或使用防火墙软件。 如果计算机处于一个 VPN 网络之中但设备没有,则你需要将计算机脱离该VPN 网络以便调试操作能够正常进行。 如果你的防火墙已经打开,则设法关闭它。 如果你不能够或不希望关闭防火墙,则设法打开端口7935,Flash Builder 调试器将使用该端口与设备进行通信。

发行打包

为了为你的应用程序发行创建发布版本,你必须首先使用 iOS Provisioning Portal 创建一个发行开发人员证书和一个发行配置文件。 然后,你可以使用 Flash Builder 和这些发行文件创建发布版本。

步骤1:创建一个P12发行开发人员证书。

你可以使用你在前面的获取要求的证书 你可以使用你在前面的获取要求的证书章节中创建开发开发人员证书的相同过程来创建一个发行开发人员证书。 唯一不同的是你在 iOS Provisioning Portal 页面的 Distribution 标签而不是 Development 标签中创建它。

  1. 通过使用 Keychain Access(在Mac系统中)或 OpenSSL(在Windows系统中),生成一个新的证书签名请求(certificate signing request),就像你在 步骤 6 的 "获取要求的证书(Get required certificates)" 中的操作一样,然后将其保存到你的计算机中。
  2. 在 iOS Provisioning Portal 中,浏览到 Certificates > Distribution,然后点击 Request Certificate。
  3. 在你的计算机中,浏览到这一新的 CSR 文件,然后提交请求。
  4. 等待直到该证书签发,然后下载该证书。该文件被保存为 distribution_identity.cer。
  1. 通过使用 Keychain Access(在Mac系统中)或 OpenSSL(在Windows系统中),导入相应的发行证书(参见图15)并且创建一个P12版本的证书,就像你在 步骤 8 的 "获取要求的证书(Get required certificates)" 中的操作一样,然后将其保存到你的计算机中。
导入发行证书
图15. 导入发行证书
步骤2:创建发行配置文件。

你也可以使用你在创建开发配置文件时使用的相同过程来创建发行配置文件,但你使用的是 iOS Provisioning Portal 中的 Provisioning 页面,而不是的 Development 页面,并且你还使用发行开发人员证书。

  1. 在 iOS Provisioning Portal 中,浏览到 Provisioning > Distribution,然后点击 New Profile。
  2. 将发行方法设置为 Ad Hoc,选中 App ID 和相应设备,然后点击 Submit。 该应用程序仅能够发行到你在这里指定的设备上。这样,你可以在将应用程序的发布版本提交到 Apple App Store 之前在设备上创建和测试它。
  1. 再次点击 New Profile 按钮,并且为 Apple App Store 创建一个配置文件。
  1. 当配置文件的状态从 Pending 改变为 Active 时(你必须刷新该页面),下载相应的配置文件。
步骤3:在 Flash Builder 中,修改应用程序的描述符文件。

在使用 Flash Builder 创建应用程序的发布版本之前,应该在应用程序的描述符文件中设置应用程序的属性和 iOS 特定的设置。

  1. 返回到 Flash Builder,然后打开相应的 application-descriptor 文件。
  2. 将应用程序的 name 和 filename 元素设置为你希望在 iTunes 和设备上显示的值,设置 versionNumber(你应该针对发布到 App Store 的每个发行版本进行更新),以及其它任何你希望指定的信息(参见图16)。
  3. 关于其它设置的描述,参见 AIR 文档中的 Common Settings。
设置应用程序信息
图16. 设置应用程序信息
  1. 找出相应的图标标签并且为应用程序图标指定PNG文件(参见图17)。

    iOS 在 iPhone/iPod Touch 的 Spotlight 搜索结果中使用 29x29 像素图标,在 iPad 的 Spotlight 搜索结果中使用 48x48 像素图标,在 iPhone/iPod Touch 的主屏幕中使用 57x57 像素图标,在iPad的主屏幕中使用 72x72 像素图标,在 iPhone/iPod Touch 的主屏幕图标中使用 114x114 像素图标实现 960x640 像素的显示,以及在 iTunes 中使用 5124x512 像素图标。

    注:512像素的 PNG 文件只用于对你的应用程序的开发版本进行测试。 当你向 Apple App Store 提交最终的应用程序时,你应该独立地将 512 像素的图像作为 JPG 文件提交。它没有包含于相应的 IPA。

指定应用程序图标
图17. 指定应用程序图标
  1. 找出 iPhone 标签,然后修改 iOS 特定的设置(参见图18)。 你可以设置状态栏的式样、应用程序是否需要持久的 Wi-Fi 的接入、它是否在图标上使用眩光效果、支持的设备类型、iOS 兼容性过滤等。

关于这些设置的描述,参见 AIR 文档中的 iOS Setting。

设置iOS 特定的设置
图 18. 设置iOS 特定的设置
步骤4:在 Flash Builder 中,创建应用程序的发布版本。

在为 iOS 平台导出发布版本时,你应该使用你创建的发行开发人员证书(distribution developer certificate)和发行配置文件(distribution provisioning files)。

  1. 选中 Project > Export Release Build 并且确保将 Apple iOS 选中为目标平台(参见图19),然后点击 Next。
导出一个发布版本
图19. 导出一个发布版本
  1. 浏览到你的 P12发行开发人员证书(distribution developer certificate)和一个发行配置文件(distribution provisioning profile)(参见图20)。
  2. 为该特定配置文件选中包的类型:ad hoc 或 App Store(参见图20),然后点击 Finish。 应用程序将花费几分钟或更长时间进行编译。
为发行版本指定iOS 打包设置
图20. 为发行版本指定iOS 打包设置
  1. 找出相应的发布 IPA 包(参见图21)。
找出相应的发布IPA包
图21. 找出相应的发布IPA包
  1. 如果你创建了 ad hoc 发布版本,则将发行配置文件和发布 IPA 文件添加到 iTunes 中,就像你在开发配置文件中的操作一样,然后在你的设备中安装它。 你应该看到在应用程序描述符文件中指定的自定义名称和图标(参见图22和23)。

注:在你安装一个新的应用程序版本之前,你应该从设备上卸下现有的应用程序。

在iTunes中查看应用程序
图22. 在iTunes中查看应用程序
在iOS设备上查看应用程序
图 23. 在iOS设备上查看应用程序
  1. 如果你创建了一个 Apple App Store 发布版本,则按照 Apple App Store Resource Center 的指南提交你的应用程序。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值