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.open();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 http://iphonedevwiki.howett.net/index.php?title=Xcode#Developing_without_Provisioning_Profile.

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.

Friday, September 25, 2009

GreenTea devices — You can still use Maps.

I have forcefully enabled GreenTea on my device (with MobileSubstrate) but almost everything behaves normally (iTunes is still accessible, YouTube is not hidden, Maps shows everywhere, etc.). The only difference I've noticed is:
  • There is no Hybrid mode in Maps when GreenTea is on.

Oh well.

Thursday, September 24, 2009

China, no Google Maps for you (maybe)

Today I was making the API for GraphicsServices, and found something... interesting.

Since 3.0 it was "well known" that there is a mysterious capability called as "Green Tea". Nothing was known except for this funny name. Things start to get clear in the 3.1 firmware. The GraphicsServices of 3.1 has a new set of API for querying some properties of Maps and MapKit. Strangely, in the disassembly of these functions, the mysterious "Green Tea" capability was refered, e.g.
Boolean GSMapKitUserShifting() {
static CFStringRef gtDefault = CFSTR("MapKitUserShiftingGreenTea");
static CFStringRef ngtDefault = CFSTR("MapKitUserShiftingNonGreenTea");
if (GSSystemHasCapability(CFSTR("green-tea")))
return GetMapsDefault(gtDefault);
else
return GetMapsDefault(ngtDefault);
}

It means the "Green Tea" capability is related to Maps, and takes different default values. No big deal right?