Monday, January 18, 2010

CrashReporter 0.2f available for testing; iKeyEx 0.3 sneak peak

CrashReporter 0.2f has been available for testing. This version should fully eliminate the crash caused by fat binaries. Also, it has a hidden preference enabling "Email crash report to developer" within CR. But to avoid swarm of emails by stupid users blaming the tertiary suspects without any grounds you're required to read the source code of CR to know how to enable it ;).

Also, I have put up iKeyEx 0.3~beta1 for anyone who needs the new feature to test. 0.3 is an intermediate version between 0.2 and 0.5 to address some keyboard developers' requests, in particular:
  • When the key is a combining character, NFC is automatically applied.

  • variantType = "immediate-accents" (e.g. Thai and Arabic) is available via "text with traits".

  • more-after and shift-after (e.g. Zhuyin keyboard and the apostrophe) can be explicitly turned on and off via the "after" traits.

(0.5 shall support the "image" traits again, and thus keyboard theming; and the "star" operator in .cin IME.)

And, I'd like to point out that, if you want to change the text of Return and Space in your keyboard, you can already do so by strings.plist. This is supported from the start, not a new feature.

Wednesday, January 6, 2010

Two IDA Pro 5.x Scripts for iPhoneOS binaries

If you use IDA Pro to disasseble iPhoneOS binaries (Mach-O/ARM), you may find these scripts useful:
  • dyldinfo: This script lets IDA Pro understands the DYLD_INFO[_ONLY] command introduced in firmware 3.1. Running this recovers some missing symbols.

  • fixobjc2: For binaries built with Objective-C ABI 2, this script can find and label all Objective-C functions and ivar offsets.

The result will look like this:

Because IDA doesn't allow "-" and spaces in names, the Objective-C function names are renamed like this:
  • -[Foo bar:baz:] →
  • +[Foo bar:baz:] →
  • -[Foo(Cat) bar:baz:] → Foo(Cat).bar:baz:

(Note: Try not to run fixobjc2 before dyldinfo, some information cannot be found.)

Tuesday, December 29, 2009

iKeyEx 0.2b, CrashReporter 0.2e, class-dump-z 0.2a released

Change log for iKeyEx 0.2b:

  • iKeyEx now uses postinst triggers to register layouts and input managers (r594). Keyboard makers may leave out the [pre|post][inst|rm] scripts now because the list will be updated as your keyboard is installed or removed. (You still need a postinst script if you want to support automatic purging.) As a side effect, all input modes explicitly deleted by the user (via Mix and Match) will be added back in and activated. If you really don't want that layout, uninstall it from Cydia.

  • Fixed issue 470: iKeyEx left/right arrows don't work in multi-line text input controls (r593).

  • No longer crashes for a layout with different landscape and portrait layout classes (r588). Thanks erik_joya for reporting!

Change log for CrashReporter 0.2e:

  • Fixed issue 481: CrashReport doesn't recognize FAT binaries. (r592)

Change log for class-dump-z 0.2a (except Windows, I need to reinstall VS2008 first):

  • Support for "hints file" (r589). See this wiki page for detail. Thanks rpetrich for suggestion!

Tuesday, December 15, 2009

iKeyEx and 5-Row QWERTY 0.2a will be on Cydia soon.

The minor updates for iKeyEx (r579) and 5-Row QWERTY (r580) are released and will be on the Big Boss repo within 2 days. They can be downloaded from here as usual.

These updates are to address some defects reported after 0.2 is put on the repo, for iKeyEx:
  • Keyboards for Hebrew, Arabic and other right-to-left languages will default to use right-to-left input direction. (r578. Thanks DB42/OpenHebrew for reporting!)

  • Eliminated the built-in keyboard selection list in Settings, which became useless when iKeyEx is installed (it cannot be respected because the keyboard list is not safemode-safe otherwise). (r579)

For 5-Row QWERTY:
  • The , and . keys are swapped back to their expected position. (Thanks Optimo for noticing!)

  • Reset the special characters won't duplicate the double quote (") anymore. (r580)

  • Changing the layout flushes the cache correctly now. (issue 471)

Friday, December 4, 2009

iKeyEx 0.2~rc1, Cangjie 0.2-3, CrashReporter 0.2d released

O hai, long time no post!

This is because I have posted many material which were to be put here to the "iPhone Development Wiki" created by Dustin Howett. (And also because of "schoolworks and tests" :p) This blog will remain for release notes only.

Back to the main topic, there are 3 major releases today: iKeyEx 0.2~rc1:
  • Different layouts in portrait and landscape orientation is supported again (r509, thanks DB42 for noticing)
  • CrashReporter support (r548)
  • Hooks only UIKit (r548).
  • Config file is now placed in ~/Library/Preferences/hk.kennytm.iKeyEx3.plist (r559).
  • Keyboard settings won't be lost due to Safe mode anymore.
  • .cin IME: Stop radical composition on failure by default.
  • .cin IME: Corrected sorting.
  • Other minor stuff.

Cangjie 0.2-3:
  • The shift key will be disabled in the 倉頡QWERTY鍵盤. If you want to enter English letters in this keyboard layout, long press on a key (e.g. 水 -> [水][E]).

CrashReporter 0.2d:
  • Made UIProgressHUD truly model to avoid crash due to accidental file deletion during symbolication.
  • Smarter suspect identification.
  • Symbolication in command line with the "-s" flag.
  • Complains if you did not install syslogd :)

Monday, September 28, 2009

Sorry Ollie Kett but...

can I sell this scriptlet for $0.99?

javascript:var s=document.documentElement.outerHTML.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\n/g,"<br/>");;document.write(s);document.close();

Disclaimer: This is not how Source Explore works. I did not even buy, try, pirate, or do anything with this app.

Saturday, September 26, 2009

Compiling iPhoneOS (3.1) apps with Xcode 3.2 without Provisioning Profile

Note: I don't know if this method still works, and I don't care. (And do not use the dd method mentioned in the article. It is extremely fragile to patch a binary file.)

Note 2: Please also check

I want to compile.

This is easiest to solve. To compile you still need a certificate that can code-sign, but think this as a lip-service. Here is the procedure to create a self-signed code-signing certificate using Keychain Access. Make sure you create the certificate in the "login" (default) keychain, not the "System" keychain. After the certificate is created, perform these steps:
  1. Open /Developer/Platforms/iPhoneOS.platform/Info.plist. (Backup if you want to be safe.)
  2. Go to line 46. Replace the XCiPhoneOSCodeSignContext with XCCodeSignContext
  3. Go to line 79. Replace the XCiPhoneOSCodeSignContext with XCCodeSignContext
  4. Save the file.
  5. Restart Xcode.
  6. Compile!

After doing this, you can't use entitlements with Xcode anymore. But you have ldid -Sxyz.xml that does the same job.