注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水禅心

淡若秋菊何妨瘦, 清到梅花不畏寒.

 
 
 

日志

 
 

75 Essential Tools for iOS Developers——iOS 开发者必不可少的 75 个工具  

2013-08-28 11:31:56|  分类: iphone |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://benscheirman.com/2013/08/the-ios-developers-toolbelt


If you were to go to a master woodworker’s shop, you’d invariably find a plethora of tools that he or she uses to accomplish various tasks.

In software it is the same. You can measure a software developer by how they use their tools. Experienced software developers master their tools. It is important to learn your current tools deeply, and be aware of alternatives to fill in gaps where your current ones fall short.

With that in mind, I present to you a gigantic list of tools. Some of these I use daily, others I see potential in. If you have more tools you’d like to see here, just make sure to add a comment.

I tried to categorize these the best I can. Some of the entries are websites, some are back-end services, but most are apps that you install. Not all of the apps are free, so I’ll make a note with a $to denote that an app costs money.

And without further ado, we’ll start from the beginning of any project, and that

Inspiration

  • pttrns - A great library of iOS screen designs categories by task. If you want to see how other apps handle activity feeds, for instance, this is a great place to go see a bunch of examples.
  • TappGala - Another great collection of nice app designs. It’s not categorized by task, but is just a list of great apps to get inspiration from.
  • Cocoa Controls - A great list of components (code) that you can use in your iOS apps. Sometimes you’ll find great pieces of code that can save you time, other times you can just learn how other developers accomplish certain features. Subscribe to their weekly newsletter; all signal, little noise.
  • IICNS - A collection of really great icons. Get inspired, but don’t copy.
  • Dribbble - Some of the best digital designers post up their work for all to see. A treasure-trove of designs to look at.
  • Capptivate - a gallery of inspirational designs. Some contain animations. Thanks, @joaopmaia!

Design

  • Mocks ($) - An easy to use tool to create a quick mockup of an iOS app. Comes with a bunch of the default controls you can use to assemble something quickly.
  • Briefs ($) - A really useful app that allows you to create a mockup of an app and stitch them together so you can see the interaction. Deploy to a device so you can see what it feels like in your hand.
  • Acorn ($) - A strong competitor to Photoshop, only way cheaper. I find myself reaching for Photoshop less & less these days. Under active development.
  • Sketch ($) - A vector-based drawing tool that is increasingly useful these days, as screen sizes and pixel densities change. It is often helpful to design once and have the freedom to scale up & down as needed. Also sports a really powerful export system. For some example Sketch projects, check out Sketchmine. See my screencast on Sketch for a live demo.
  • iOS 7 PSD by Teehan+Lax - A super handy resource if you (or your designer) uses Photoshop. An iOS 6 version is also available.
  • Bjango’s Photoshop Actions - A definite time-saver if you use Photoshop to design iOS apps. One click access to resize canvases, scale by 200% (or 50%), set global lighting to 90?, and more. Their blog also has a bunch of useful Photoshop workflow tips.
  • xScope ($) - An indespensible swiss-army knife of tools such as guides, pixel loupes, screen rulers, and more. Want to know what color value that pixel is? Want to see how many pixels between a button and the window for a random Mac app? xScope has you covered. Also check out their companion iPhone app for mirroring designs you’re working on and seeing them in pixel-perfect glory on your iDevice.
  • Glyphish ($) - A fantastic collection of high quality icons for your iOS apps. Apple doesn’t provide a lot of built-in icons, so it’s handy to have a collection of icons covering all kinds of various concepts. I’m still looking for a use for that baby icon though. Glyphish comes in packs, and the latest pack has iOS 7 “thin line” icons which will be very handy when designing an iOS 7 app.
  • Fontastic Icons for iOS - An open source set of classes for utilizing icon fonts, such as Font Awesome in your iOS app. Quickly and easily have an icon in whatever pixel dimensions you require. Since fonts by nature can be scaled up and down with ease, this makes a really nice way to ship & use your icons without having to export multiple versions for the sizes you require.
  • PaintCode ($) - A vector-based drawing tool that exports your artwork as the equivalent Core Graphics source code. Awesome for learning how Core Graphics drawing works, but also incredibly handy if you want your drawing to be dynamic. See my screencast on PaintCode for a live demo.
  • Edge Insets ($) - A simple tool that helps you define your edge insets for repeatable images. Available on the Mac App Store.
  • LiveView - A remote screen viewer for iOS, making it easy to immediately see your designs on a device. Thanks, @_funkyboy!
  • Skala Preview ($) - Another excellent tool for quickly showing your designs off on a real device. The guys at Bjango are awesome and this app is deserving of the price. Thanks, jn40!

Source Control

  • Git - If you’re not using source control stop what you’re doing and rectify that. I use git for everything I do and love it.
  • Kaleidoscope ($) - The best diff/merge tool around. Does 3-way merges and is beautiful to look at. I use it every day.
  • p4merge - A free, ugly alternative to Kaleidoscope. Powerful 3-way merge, but good luck finding the download link. It’s hidden deeper in their site every time I look for it.
  • Git X - A simple, powerful GUI tool for visualizing git timelines and quickly & easily staging commits. I usually live in the Terminal for git usage, but fall back to this app when I need to stage hunks of changes into logical commits. This is a fork of the original (abandoned) GitX, which I found on this list of forks.
  • Source Tree - A free, full-featured Git application. I don’t use this because I favor the command line, but if a GUI tool is your cup-o-tea, check this app out.

Dissecting Apps

  • pngcrush - This little utility can crush & uncrush PNG files, which is handy when you want to view images contained in app bundled distributed in the App Store. Just open iTunes, view the local Apps list, and right click on any icon to Show in Finder. Once there, open up the app and you’ll see a bunch of PNG files, but you can’t view them. Using pngcrush you can extract the full version so it can be opened with Preview.
  • appcrush.rb - This handy little ruby script will automate the above process for all images. Just point it to a .app file on your disk and it will extract all the images to a folder on your desktop. Handy for seeing how apps on your phone accomplish certain designs. Check out my screencast on dissecting apps for a live demo.
  • Charles ($, free limited demo) - I don’t know what’s going on with the ugly UI or icon, but Charles is an essential tool for any developer. Charles acts as a proxy to allow you to inspect your network traffic to & from the iPhone Simulator. You can also inspect traffic from your device by setting your phone’s proxy to your Mac running Charles. With self-signed SSL certificates, request & response breakpoints, and request/response viewers, Charles is really amazingly powerful. A must-have tool. Again, my screencast on dissecting apps covers this well.

Editors

I know what you’re thinking, don’t all iOS developers use Xcode? Well mostly, yes. But with my love/hate relationship with Xcode, I believe there is tremendous value in considering alternatives.

  • AppCode - A full-fledged IDE from Jetbrains (makers of the excellent ReSharper for .NET). Immensely powerful refactorings & features that help you write code faster. Quickly identify dead code, automatically insert #import statements when you use related code, easily extract variables, methods, and classes. My only wish for this app is that it would instead be a plugin to Xcode.
  • Vim - Wait, vim? Really? Yes, there are folks who do all their Objective-C development in vim. I’m not one of these, but I am a fan of vim for Ruby development. As such, I’m a huge fan of…
  • Xvim - An Xcode plug-in that gives you vim keybindings. Works well, ‘nuff said.
  • OMColorSense - Another plugin for Xcode, this one gives you a small display of color when your cursor is on a line looking like: [UIColor redColor]. Clicking on this little color tab opens a color picker that you can change, and any change in color you make is reflected in the code by changing the line to [UIColor colorWithRed:… green:… blue:… alpha:… ]. When someone is watching me write code with this enabled, they invariably ask me, “Whoa! What was that?!”
  • KSImageNamed - Another Xcode plug-in, this one allows you to autocompleted image filenames from your bundle when typing [UIImage imageNamed:…]. Great way to avoid the inevitable typo that causes this method to return nil and you to subsequently waste 10 minutes trying to figure out why your images aren’t displaying.
  • CocoaPods Xcode Plugin - This plug-in adds a menu item for interacting with CocoaPods. Useful if you don’t like dropping to the command line.
  • Alcatraz Package Manager - An awesome meta plug-in that allows you to easily install other Xcode color schemes and plug-ins with a single click.
  • Code Runner ($) - a light-weight code-aware text editor that knows how to compile & run code in most languages. Want to test out a quick snippet of Objective-C code and don’t want to create an entire Xcode project to do it? Code Runner to the rescue.

Documentation

Ahhh, documentation, everyone’s favorite topic. Even still, documentation is really important to have, so pay attention so we can make your life easier.

  • appledoc - Want to automatically generate documentation that look’s like Apple’s? Look no further. Automatically inter-links symbols defined in your project as well as extracting discussion to output using specially formatted code-comments. Generates official docsets and HTML web sites.
  • Dash ($) - A must-have API documentation viewer and code snippet manager. This tool is really handy as it allows you to download & search API docs for all kinds of languages & frameworks with lightning speed. The fastest way to get access to the docs. I integrate Dash with Alfred to make searches even faster.

Dependency Management

Yes, there’s only one tool listed here. I didn’t want to include actual 3rd party libraries, as that would be a different list entirely. When it comes to dependency management, there’s only one game in town:

  • CocoaPods - The essential tool for Objective-C projects. Allows you to quickly & easily integrate 3rd party libraries into your application. It does so by creating a second static library project and automatically links this with your projects. There are thousands of pods available, and it’s easy to add support for libraries that you don’t own (or perhaps are private). I use CocoaPods in every single project I work on.

Diagnostics & Debugging

At some point our app is in the field and we need to understand better what’s going on, maybe to fix bugs or to improve performance.

  • Cocoa Lumberjack - a much more powerful NSLog, Cocoa Lumberjack offers advanced logging behaviors such as logging to rotated files, logging to the network, and filtering based on log level (info, debug, warn, error). Covered by NSScreencast Episode 61
  • DCIntrospect - crazy powerful tool that you’d link inside your app when running in debug and on the simulator. Once you do, you can press the spacebar to get some really helpful view debugging support. See exact dimensions of elements on the screen, print out view hierarchies, even nudge views horizontally or vertically.
  • Pony Debugger - another tool you’d use by embedding a library in your debug builds, Pony Debugger actually utilizes Chrome’s dev tools for seeing network requests coming out of the device, as well as a rudimentary Core Data browser. It’s hard to describe, but check out my screencast on Pony Debugger for more info.
  • Runscope ($) - Runscope is a service running online that can capture requests, log details, and give you valuable data about your API. Simple to set up, as it’s an HTTP pass-through API, all you need to change is your host name.
  • SimPholders - Quick, easy access to your simulator folders. Browse by iOS version, then app name and jump right to the folder in Finder.
  • Spark Inspector - Debug your view hierarchy running on your app in debug mode, in 3D. This app really has to be seen to fully understand the value, but it can really help to understand what views are used to compose your app. Also contains a notification center inspector, so you can easily see what NSNotifications are firing and who is observing them. Another app to look at that is similar is Reveal.

Images

  • ImageAlpha - A Mac app that allows you to convert a 24-bit PNG with transparency to an 8-bit PNG with an alpha channel. Typically 8-bit PNGs don’t have an alpha channel, so if your image can be represented in 8-bits (say, a solid color button) you can save a lot on storage by converting the 24-bit PNG to 8-bit using ImageAlpha.
  • ImageOptim - Another Mac app that compresses PNGs in order to save space. Most PNG files can shave off a few % of the size, and sometimes you’ll shrink the files by 30% or more. Smaller images mean smaller app sizes and less memory used to load them at runtime.
  • Prepo - A little Mac app that can quickly resize artwork in all the various sizes you might need. Just drag a large icon file (say, 1024x1024) onto Prepo and watch it spit out 512x512 iTunesArtwork, 114x114 Icon@2x.png, and all the other sizes & filenames you’d expect.
  • Slender ($) - an awesome app that analyzes your app and finds all sorts of problems, such as missing retina artwork, unused images, image that could benefit from compression and more. Shave kilobytes off of your iPhone app by shedding unused images with Slender.

Core Data

  • Mogenerator - still a super useful tool for generating smart subclasses of your NSManagedObjects in your Core Data model. Some use Xcode for this, and resort to manually subclassing or creating categories in order to add logic to the models. Mogenerator runs as a quick pre-compile script to generate subclasses for you to use. It does this by creating an underscored version (_User) and a regular one for you to modify (User).
  • Base ($) - there will come a time when you need to inspect your actual Core Data sqlite database to see what’s going on. You can use the sqlite3 command line tool, but Base offers a nice looking GUI browser. Just don’t vomit when you see the database schema that Core Data created for you.
  • Core Data Editor ($) - for more advanced data anlysis, exploration, and modification you can use Core Data Editor. This app understands Core Data, so you’re working directly with the entities instead of database rows.

Back-end Services

Ultimately your iOS app will likely want to talk to a server to share data, fetch new content, send push notifications or whatever. While this can be accomplished manually, you might want a more drop-in solution.

  • Helios - Helios is an open-source framework that provides essential backend services for iOS apps, from data synchronization and push notifications to in-app purchases and passbook integration. Built on top of many open source ruby gems, so you can pick & choose and build your own stack if you so desire. Take a look at the Nomad CLI set of handy related tools as well.
  • Windows Azure Mobile Services - you can think of this sort of like a programmable database in the cloud. Create tables, run JavaScript on read, insert, delete to add additional functionality. Really easy support for push notifications as well.
  • Urban Airship - I’ve been using Urban Airship to deliver push notifications for a while now. Really easy to integrate with, and small usage is free.
  • Parse - This is another data-in-the-cloud service, but offers an impressive API and online data browser. We use Parse for a really small app and works well for that.

Analytics

There are other players here, but none that I’ve seen have been compelling enough to switch from flurry. I’m open to hearing suggestions, so let’s hear about ‘em in the comments.

  • Flurry - I’ve used flurry for a long time to provide useful analytics on the usage of my apps. Need to know when to stop supporting iOS 5? Flurry gives you the numbers to have a realistic conversation.

Deployment

  • Deploymate ($) - Need to support iOS 4 still, but you’re compiling with the iOS 6 SDK? Deploymate will warn you when you’re using symbols that don’t exist in your deployment target.
  • Cupertino - Part of the Nomad CLI tools, Cupertino gives you command line access to managing devices & profiles in the Apple Provisioning Portal. For example, just type ios devices:list to see the current list of devices in your account. Useful for automating lots of processes.
  • Hockey App ($) - A great service for managing the distribution of your ad-hoc builds. Testers can get a link to install new betas over the air. Also provides robust crash reporting so you can easily respond to crashes in your apps.
  • TestFlight - A free service, similar to Hockey App. We’ve used TestFlight with great success for easily distributing apps and collecting feedback from our users. My only wish is that they’d start charging for the service. Also includes analytics and crash reporting, but we don’t use those features.
  • iOS Simulator Cropper - A really easy way to snap images of the simulator, with or without status bar, with or without device chrome, etc. Great for taking App Store or just general marketing screenshots.
  • Status Magic ($) - Take better app store screenshots. Nothing makes your app look less crappy than an App Store screenshot that includes a low battery, or low signal. Status Magic gives you complete customization over what’s present in your status bar, including removing elements, changing the time to “9:41 AM” like Apple tends to do, and more.
  • Crashlytics - Excellent crash reporting for your apps in the field. Automatically uploads dSYMs on release builds so your crashes are automatically symbolicated and organized for you to focus on the most critical ones.

Testing

I don’t think we as a community focus enough on testing. There are great tools available to us, and most are so easy to use we have no real excuse not to write at least some tests for our apps.

  • Kiwi - A great Rspec-style testing framework for iOS. Built on top of SenTestingKit, so you just type?U to run your specs. Also includes a completely robust mocking & stubbing library as well as assertions.
  • Specta - A light-weight BDD framework very similar to Kiwi, but the expectation syntax has one major benefit over Kiwi: everything is implicitly boxed like this:expect(items.count).to.equal(5). There’s no need to wrap 5 in an NSNumber like Kiwi does. Use in conjunction with Expecta for a bunch of useful matchers.

The following are all various ways of performing end-to-end acceptance tests. These tests will actually interact with your interface, touching buttons, scrolling, etc. By nature these will be slower and more brittle, but testing in broad strokes is certainly helpful to see if all of the pieces fit together properly.

Demos / Marketing

  • Reflector ($) - Wirelessly mirror your iOS device on your Mac using Air Play. Great for doing demos of applications on your computer.
  • Placeit - A great collection of high res photos of people using devices, but the screens are templates that you can insert your own screenshots into. Very cool, and great for displaying your app in a nice way on your website.

App Sales Reporting

Of course you want to be able to see how much money you’re making on your app, right? There are a few solutions for this, but here are a couple that work well:

  • App Viz 2 ($) - a really useful Mac app for tracking sales of your apps. You run it locally and it logs in and downloads your sales reports.
  • App Annie - an online sales reporting tool. I’m less comfortable giving my credentials to iTunes to a 3rd party, but it does keep the reports up to date for you so you don’t have to run an app locally.In the comments, Josh Brown suggests creating a different user for analytics in iTunes Connect, which is a really good idea.

Grab Bag

These tools don’t have a defined category above, but deserve a mention nonetheless.

  • Quick Radar - Submitting bug reports to Apple is our only way of making their tools better. If you’re frustrated by the lack of a feature, you should be submitting a bug report. If you come across a bug,you should be submitting a bug report. One has no right to complain if they have not yet filed a radar :). With that in mind, submitting bug reports via bugreporter feels like a trip back to 1995. Quick Radar is an awesome little app that makes submitting bug reports super easy. Sports automatic posting to open radar so others can see it, in addition to tweeting, and posting to App.net. I use this app several times per week.

And there you have it. A gigantic wall of tools. Hopefully you learned about a few new ones you can add to your arsenal. If you enjoyed this post, please check out my iOS screencasts over at NSScreencast.

NSScreencast - Weekly bite-sized videos on iOS development.

iOS 开发者必不可少的 75 个工具
http://www.xiaojiayi.com/2013/08/25/ios-%E5%BC%80%E5%8F%91%E8%80%85%E5%BF%85%E7%9F%A5%E7%9A%84-75-%E4%B8%AA%E5%B7%A5%E5%85%B7%EF%BC%88%E8%AF%91%E6%96%87%EF%BC%89/

如果你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完成不同的任务。

软件开发同样如此。你可以从软件开发者如何使用工具中看出他水准如何。有经验的开发者精于使用工具。对你目前所使用的工具不断研究,同时了解一些替代品的使用,当你目前所用的工具无法满足你的需要时可以填补空缺。

记住了这些,我将向你展示一份关于各种工具的长长的列表。其中一些我每天都用,其他的我看情况使用。如果你还有更多的工具想展示在这个列表里,可以跟我留言哦亲。

我尽我所能给列表分分类。有一些是网站,有些是后台服务,但大多数是你可以装的应用。不是所有应用都是免费,因此我会用$符号来表示此应用是否要花钱。

废话不多说,我们马上开始。

灵感

  • pttrns - 一个很棒的按任务分类的iOS屏幕设计图库。举例来说,如果你想看其他应用如何处理活动feed,在这儿你可以找到一堆的例子。
  • TappGala - 另一个很棒的优美应用设计的集合站。它不是按任务来分类的,只是一个优秀应用的列表,你可以在此获取灵感。
  • Cocoa Controls - 一些很棒的你可以用在你的iOS应用中的组件(代码)的列表。有时你可以找到一段优秀代码来节省时间,有时你也可以学习其他开发者是如何完成某个功能的。订阅他们的每周一报吧,都是精华,极少糟粕。
  • IICNS - 真正优秀图标的集合。获取灵感吧,但不要抄袭。
  • Dribbble - 最优秀的设计师们在上面展示他们的作品。真正的精品。
  • Capptivate - 给人灵感的设计作品图库。有些带有动画。感谢你,@joaopmaia!

设计

  • Mocks ($) – 一个简单应用的快速创建iOS应用原型的工具。自带一些默认控件,你可以快速搭建原型。
  • Briefs ($) – 一个很有用的应用,可以让你创建应用原型,将原型连起来形成交互。你可以部署到真实设备上,看看在你手上是什么样的感觉。
  • Acorn ($) – Photoshop的有力竞争者,比ps便宜多了。我发现自己最近用Photoshop越来越少了。该项目在积极的开发维护中。
  • Sketch ($) - 一个基于矢量的画图工具,随着屏幕尺寸和像素密度的改变,这个工具越来越有用。只需要设计一次,然后可以根据需要进行缩放。同时还带有一个很强大的导出系统。对于Sketch示例项目,请看Sketchmine。我的 screencast on Sketch上有视频演示。
  • iOS 7 PSD by Teehan+Lax - 如果你(或者你的设计师)用Photoshop的话,这是个超有用的资源。也有 iOS 6 版本的。
  • Bjango’s Photoshop Actions - 如果你用Photoshop来设计iOS应用的话绝对能帮你省时间。一次点击即可重设画布大小,缩放200%(或50%),设置全局亮度为90等等。他们的 博客中也有许多Photoshop的工作技巧。
  • xScope ($) – 一把不可或缺的瑞士军刀,指导,像素放大镜,屏幕度量等等。想知道某个像素点的颜色值?想知道某个Mac应用的一个按钮和窗口之间有多少像素?xScope都能帮你。可以看下他们为镜像设计所开发的iPhone应用,看镜像设计在你的苹果设备上是多么的像素完美。
  • Glyphish ($) –  一个很赞的有很多你的iOS应用可以使用的高质量图标的集合。苹果提供的内置图标并不多,所有拥有这么一个囊括各种概念的图标集合很有用。我还在寻找关于婴儿的一些图标。Glyphish是以包的形式发布的,最新的包里有iOS7的“细线条”图标,当设计iOS7应用的时候很有用。
  • Fontastic Icons for iOS - 一个使用图标字体的开源类集合,例如iOS应用中的Font Awesome。可以在任何像素维度上快速简便的得到一个图标。由于字体在本质上可以轻松缩放,用这种办法可以很方便的在不同平台使用的图标,而无需根据不同尺寸导出不同的版本。
  • PaintCode ($) -一个基于向量的画图工具,可以将你的作品导出为Core Graphics源代码。用来学习Core Graphics绘图是非常棒的,同时如果你想要动态绘图也是非常方便。我的screencast on PaintCode上有视屏演示。
  • Edge Insets ($) – 一个帮助你定义可重用图片边距的简单工具。在Mac App Store上有售。
  • LiveView - 一个iOS上的远程屏幕查看器,在你的设备上可以立马轻松地看到你的设计图。谢谢你,@_funkyboy!
  • Skala Preview ($) – 另一个很棒的可以在真实设备上快速看到你的设计图的工具。Bjango的朋友们很给力,这个应用物有所值。谢谢你,jn40!

源代码控制

  • Git - 如果你没有使用源代码控制的话,停下手中的活立马做出改变吧。我使用git做任何事情,我超爱它的。
  • Kaleidoscope ($) – 最棒的diff/merge工具。三路合并,看着很漂亮。我每天都用。
  • p4merge - 一个免费的、简陋的Kaleidoscope的替代品。强大的三路合并功能,但找下载链接不容易啊。我每次要找的时候都觉得在他们网站上藏的很深啊。
  • Git X - 一个简单强大的GUI工具,可以看到git的时间线,轻松简便地实现暂存区提交。我通常在终端上使用git,但当我需要将暂存区的改变做一次提交的时候就会想到这个应用。这是原来(已经废弃)的GitX的一个衍生品,我在这个衍生品列表上找到的。
  • Source Tree - 一个免费功能很全的Git应用。我没用过是因为我喜欢命令行的方式,但如果你喜欢用GUI工具的话,可以看看这个。

剖析应用

  • pngcrush - 这个实用工具可以压缩解压缩PNG文件,当你想那些App Store上应用里的图片时很有用。只要打开iTunes,查看本地应用列表,对图标右键在Finder中打开。然后打开应用,你可以看到一堆PNG文件,但你没法查看它们。使用了pngcrush你可以将它们全部提取出来,然后用预览来查看。
  • appcrush.rb - 这个很方便的ruby脚本可以针对所有图片将以上过程自动化。只需将它指向你磁盘上的一个.app文件,它就会将所有图片提取到你桌面上的一个文件夹里。很方便地可以知道你手机上的应用如何完成某些设计的。我的my screencast on dissecting apps上有视频演示。
  • Charles ($, 免费功能受限的试用版) – 我不知道它的界面或者图标为何如此丑陋,但是Charles是对于任何开发者来说都非常重要的一个工具。Charles作为一个代理,允许你监视进出你iPhone模拟器的网络流量。你同样可以通过将手机的代理设置为你Mac上正在运行的Charles来监控你设备上的流量。字签名的SSL证书,请求&响应断点,请求/响应查看器,Charles真心是大赞。一个必须拥有的工具。再次,我的dissecting apps上视频演示。

编辑器

我知道你在想什么,难道不是所有iOS开发者都用Xcode吗?答案是大多数都使用。但从我和Xcode的恩恩怨怨来看,我相信很有必要来考虑下有哪些替代品。

  • AppCode - Jetbrains(ReSharper for .NET的制作公司)的一款功能全面的IDE。强大的重构工具和功能可以帮助你更快地写代码。快速识别死代码,当你使用了相关代码时自动插入#import语句,轻松选取变量、方法以及类。我唯一希望的是它能成为Xcode的一个插件。
  • Vim - 等一下, vim?真的么?确实是真的,有人在vim里做所有的Objective-C开发。我并不是其中之一,但我喜欢用vim开发ruby。就因为如此,我很喜欢…
  • Xvim -  一个Xcode插件,能使用vim中的keybindings。感觉不错,‘nuff说。
  • OMColorSense - 另一个Xcode插件,当你的光标停留在某个代码行如:[UIColor redColor]上的时候,它会在一小块区域里展示出代码中的颜色。点击颜色选项卡会打开颜色选择器,你在上面做的任何改变都会在代码里得到反映,相应代码改为[UIColor colorWithRed:... green... blue... alpha:... ]。当我开着这个功能写代码,别人看到的时候总是问我:“哇哦!这是啥玩意!”
  • KSImageNamed - 另一个Xcode插件,可以在你打下[UIImage imageNamed:...]的时候,自动补全bundle中图片的文件名。有了它,就可以避免那些不小心打错图片名导致方法返回nil,然后你花10分钟去检查为什么图片没有展示出来的问题了。
  • CocoaPods Xcode Plugin - 这个插件增加了一个菜单项可以和CocoaPods交互。如果你不想用命令行的话很有用。
  • Alcatraz Package Manager - 一个很棒的元插件,可以让你通过轻点鼠标轻松安装其他的Xcode配色方案和插件。
  • Code Runner ($) – 一个轻量级的代码感知文本编辑器,知道怎么编译和运行多种语言的代码。想快速测试一段Objective-C代码,又不想创建一整个Xcode项目?试试Code Runner吧。

文档

啊哈,文档,每个人最爱的话题。文档很重要,因此请注意一下,我们可以让你生活变得简单一些。

  • appledoc - 想自动生成苹果官方那样的文档吗?不用再找了。自动在你的项目中定义超链接符号,使用特殊格式的代码注释来提取内容。生成正式文档和HTML网页。
  • Dash ($) – 一个必须拥有的API文档查看器和代码片段管理器。它很好用,允许你下载并搜索各种语言和框架的API文档,而且速度很快。最快访问文档的方式。为了使搜索更快,我把Dash和Alfred集成起来使用

依赖管理

是的,这里只列举了一个工具。我不想引入真正的第三方库列表,因为它们属于完全不同的另一个列表。当我们谈到依赖管理的时候,最最重要的就是:

  • CocoaPods -  管理Objective-C项目的重要工具。允许你轻松快速地将第三方库集成到你的应用中。它是通过创建另一个静态库工程,然后自动链接到你的工程来实现的。有成千上万个可用的pod,可以轻松地为你的项目增加那些不属于你(或者私有)的第三方库支持。我在我的每个项目里都用了CocoaPods。

诊断&调试

有时候我们正在开发应用,我们想更好的了解到底发生了什么,修bug或者改善性能。

  • Cocoa Lumberjack - 一个更强大的NSLog,Cocoa Lumberjack提供了高级日志行为,比如记录日志到文件、网络,根据日志级别来筛选(info,debug,warn,error)。在NSScreencast Episode 61中有提到。
  • DCIntrospect - 当你在模拟器上调试的时候链接到你应用中的超强大的工具。一旦你这么做了,你可以按下空格键来取得一些很有用的视图调试支持。查看屏幕上视图元素的精确维度,打印视图层次,甚至水平或垂直移动视图。
  • Pony Debugger - 另一个你可以嵌入一个库到你调试版本中的工具,Pony Debugger实际上使用了Chrome的开发工具来查看设备上发出的网络请求,还有一个基本的Core Data浏览器。很难描述,请看我的screencast on Pony Debugger吧。
  • Runscope ($) – Runscope是一个网络服务,可以捕捉请求,记录日志,给你关于你的API的有用数据。因为它是个HTTP通道API, 搭建简单,你只需要更换你的主机名就行了。
  • SimPholders - 快速简单的访问你的模拟器文件夹。根据iOS版本来浏览,然后是应用名,可以直接在Finder中打开文件夹。
  • Spark Inspector -  在调试模式运行你的应用时,可以用3D来展示调试你的视图层次。这个应用你真的要看到了才会真正明白它的价值。它能帮助你了解你的应用是由哪些视图组成的。它还带有一个通知中心监视器,你可以轻松看到发出了哪些NSNotification,谁在观察它们。另一个监控NSNotification的应用是Reveal

图像

  • ImageAlpha - 一个Mac应用,可以让你将24位带透明度的PNG图转成8位的带alpha通道的PNG图。通常8位PNG图不带有alpha通道,因此如果你的图片可以用8位来表示(比如一个单色的按钮)的话,你可以通过把25位PNG转成8位的来节省很多空间。
  • ImageOptim - 另一个Mac应用,可以压缩PNG图片来节省空间。大多数PNG文件可以省掉几个百分点的大小,有时甚至30%或更多。图片更小意味着应用尺寸更小,运行时加载它们所使用的内存也更小。
  • Prepo - 一个Mac上的小应用,可以将图片快速变换为你需要的多个尺寸。只需要拖动一个大图标文件(比如,1024*1024)到Prepo,它就会生成512*512的iTunesArtwork,114*114的 Icon@2x.png,以及其他的尺寸和文件名。
  • Slender ($) -一个很棒的应用,可以分析你的应用,找出各种问题,比如缺少视网膜屏的图片,没用到的图片,能压缩的图片。使用Slender去除掉那些没用的图片,可以为你的iPhone应用节省好多空间。

Core Data

  • Mogenerator -  一个超有用的工具,在你的Core Data模型中生成NSManagedObjects智能子类。有些人使用Xcode完成这功能,通过手动子类化或者创建分类来为模型增加逻辑。Mogenerator作为预编译脚本运行来生成你可以使用的子类。它通过创建带有下划线的版本(_User)以及正常你可以修改的版本(User)来实现。
  • Base ($) – 你肯定会需要查看你的Core Data sqlite数据库来检查发生了什么。你可以使用sqlite3命令行工具,但Base给了你一个方便查看的GUI浏览器。当你看到Core Data为你创建的数据库schema时你可不要吐哦。
  • Core Data Editor ($) -对于一些更高级的数据分析、发掘以及修改,你可以使用Core Data Editor。这个应用了解Core Data,因此你是在直接和实体打交道,而不是数据库行。

 后台服务

最终你的iOS应用很可能会和服务器通信分享数据、获取新内容、发送推送通知等等。虽然你都可以手动去做,但你或许想要更方便的解决方案。

  • Helios - Helios是一个开源的框架,为iOS应用提供了基础的后台服务,从数据同步、推送通知到应用内购买以及passbook集成。它建立在许多开源ruby gem的基础上,因此如果你想要的话可以挑选构建你自己的栈。看一下Nomad CLI,有很多好用的相关工具。
  • Windows Azure Mobile Services - 你可以把它想象成在云端的一个可编程数据库。建表,用JavasScript来读取、插入、删除,增加额外的功能。实现推送通知相当简单。
  • Urban Airship - 我现在在用Urban Airship来实现推送通知。很容易集成,用户量不大的话是免费的。
  • Parse - 这是另一个云端数据服务,但是它提供了很多API以及有一个在线数据浏览器。我们一个很小的应用用了Parse,感觉不错。

 分析

这里还有些别的选择,但没有一个让我觉得有冲动把flurry换掉的。我乐于听取意见,欢迎在评论里告诉我吧。

  • Flurry - 我用flurry很长时间了,它可以提供用户使用我的应用的有用的分析数据。想知道什么时候可以停止支持iOS5么?Flurry会给你数据供你们讨论。

 部署

  • Deploymate ($) – 还需要支持iOS4,但是你在用iOS6 SDK编译?当你使用了一些在你的部署目标上不存在的符号时,Deploymate会警告你的。
  • Cupertino - Nomad CLI工具之一,Cupertino为你提供了命令行接口来管理苹果Provisioning Portal上的设备及profile。举例来说,只要键入ios devices:list就可以看到你帐号里的当前设备列表。可以用来自动化许多过程。
  • Hockey App ($) – 管理你ad-hoc版本发布的不错服务。测试人员可以得到一个链接,无线安装新的测试版本。它还提供了健壮的崩溃报告功能,你可以轻松应对你应用中的崩溃。
  • TestFlight - 一个类似于Hockey App的免费应用。我们使用TestFlight已经取得了很大成功,轻松发布应用,从用户那收集反馈。我唯一希望他们能对这个服务进行收费。它还包括了分析和崩溃报告功能,但我们没有用到那些功能。
  • iOS Simulator Cropper - 一个拍模拟器屏幕快照的简单方法,可以选择带或者不带状态栏,带或者不带机器外壳等等。对于App Store或者普通市场上的一些截屏很有用。
  • Status Magic ($) – 拍出更好的app store截屏图。没有什么比App Store上带有低电量或者低信号标识的截屏图更让你的应用看起来糟糕的了。Status Magic让你充分定制你的状态栏,包括去除一些元素,把时间改成苹果喜欢的“9:41 AM”那样,等等。
  • Crashlytics -对于你正在开发中的应用来说是个很棒的崩溃报告工具。在发布版里自动上传dSYM文件,因此你的崩溃日志会为你自动符号化并组织好,你可以专注于最关键的部分。

 测试

我认为我们作为一个社区对测试关注得还不够。有很多不错的工具可用,大多数都很好用,我们没有借口不为我们的应用写一些测试。

  • Kiwi - 一个不错的Rspec风格的iOS测试框架。基于SenTestingKit建立,因此你只需按下?U来运行你的用例。它同样带有健壮的mocking以及stubbing库和断言。
  • Specta -一个类似于Kiwi的轻量级BDD框架,但是它的expectation语法有一个比Kiwi好的地方:每个变量都隐式装箱:expect(items.count).to.equal(5)。不需要像Kiwi那样将5包装成NSNumber。和Expecta搭配使用效果更好。

以下的几个都可以用来执行端到端的验收测试。这些测试会和你的界面交互,点击按钮,滚动,等等。虽然上它们运行会比较慢,但是在大范围内测试会更容易看到所有的模块整合的是否良好。

 演示/市场

  • Reflector ($) – 将你的iOS设备通过Air Play镜像到你的Mac上。很适合在你的电脑上做应用演示。
  • Placeit - 一些关于人们使用设备的高分辨率的图的集合,但是设备可以由你上传的截屏图来定制。很酷,很适合在你网站上优雅地展示你的应用。

应用销售报告

你当然想要知道你的应用能赚多少钱,不是么?有一些解决方案,这儿有些还不错的:

  • App Viz 2 ($) – 一个很有用的Mac应用,可以跟踪你应用的销量。你在本地运行它,它会登录并下载你的销售报告。
  • App Annie - 一个在线的销售报告工具。我不太乐意把我的认证信息交给除了iTunes以外的第三方,但它确实能确保你的报告是最新的,你无需在本地运行一个程序。在评论中,Josh Brown建议可以创建另一个用户用于iTunes Connect中的分析,这个主意不错。

摸彩袋

这些工具没有一个定义好的分类,但值得一提。

  • Quick Radar - 提交bug报告给苹果,是我们唯一可以帮助他们改善工具的办法。如果你由于缺少某个功能感到万分沮丧,你可以提交一个bug报告。如果你遇到了一个bug,你同样可以。如果他们没有雷达的话,用户还没有抱怨的权利:)因此,通过bugreporter来提交bug报告的话好像又回到了1995年。Quick Radar是一个很赞的应用,它可以使提交bug报告变得超级简单。自动发布到开放的雷达,这样其他人就能看到,也可以发twitter,发布到App.net。我每周都要用好几次这个应用。

好了就这么多。满满一墙的工具。希望你以后碰到新工具也能加入到你的兵器库里。如果你喜欢这篇文章,可以在NSScreencast里看下我的iOS屏幕录像。



  评论这张
 
阅读(2526)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018