Archive for category Apple

codesign IPA and the code object is not signed at all problem

You know this journey starts with, “…I was so excited to get Mountain Lion and download the new Xcode.”  I’m now absolutely shocked as for the first time, I’m faced with a strange and unique predicament.  I cannot archive one of my commonly archived for Ad Hoc developer release iOS applications.  What happened?  Where did it start breaking?  I’ll share the facts here and maybe, just maybe, this might help out some poor soul out there.

Let’s start by saying this, how do you even know you’re having this issue?  The first sign of trouble is you build an archive file in Xcode for an “Ad Hoc” release.  The last step finishes up with a code signing or “codesign” process and a final saving of the IPA file.   Everything seems to work properly.   You then do one of the following, install via iTunes or upload the IPA to Test Flight.  All seems fine and grand.  The trouble has just begun.  Your users will begin reporting to you that they cannot download or worse they are seeing the “Failed to install” error.  You’re already in this hole now… what is going on?

My first gut reaction was to start building another archive and then another and each one had the same issue.  I finally realized that the Xcode Organizer tool was going to help me out.  I did the install using iTunes on my iPad 3 and monitored the iPad 3 console in Organizer.

Aug 28 21:07:55 unknown installd[7066] <Error>: unrecognized status -67068 from codesigning library
Aug 28 21:07:55 unknown installd[7066] <Error>: 00403000 verify_signer_identity: Could not copy validate signature: -402620415
Aug 28 21:07:55 unknown installd[7066] <Error>: 00403000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.6ua8Zg/foo_extracted/Payload/MySpecialApp.app
Aug 28 21:07:55 unknown com.apple.itunesstored[7074] <Notice>: MobileInstallationInstall: failed with -1
Aug 28 21:07:55 unknown installd[7066] <Error>: 00403000 install_application: Could not preflight application install
Aug 28 21:07:56 unknown installd[7066] <Error>: 00403000 handle_install: API failed
Aug 28 21:07:56 unknown installd[7066] <Error>: 00403000 send_message: failed to send mach message of 71 bytes: 10000003
Aug 28 21:07:56 unknown installd[7066] <Error>: 00403000 send_error: Could not send error response to client

I can’t tell you how upsetting it was to see this error and to know that Xcode when archiving did not even make a peep about a code signing error.  I quickly opened up my friendly terminal and located my IPA file that I had just attempted to install.  I ran the famous command “codesign” and here is what it looks like.

Chris-Danielsons-MacBook-Pro-2:Desktop myUserAcct$ codesign -dvvv MySpecialApp.app
MySpecialApp.app: code object is not signed at all

So it’s clear to me that Apple has a fairly major issue on their hands that has seemingly let the user wander mindlessly into a trap thinking they were on a great journey of sorts.

So here is the question, how does one correct this issue?  Continuing to fail miserably… here is what I have done thus far to attempt to correct the issue.

  1. I have verified that all my certificates are in order.  Deleted my mobile provisioning profiles manually, re-added them from the Apple developer portal.
  2. Open Disk Utility and do a full verify and repair disk permissions.
  3. Do a full shutdown and startup of my computer.

None of these processes have fixed this issue.

I finally figured out the solution by trial and error.  In my case I had a folder name that matched the “Product Name” variable under build settings.   This also matched the entire project name!  So I simply changed one field.  I changed the “Build Settings” -> “Product Name” .  The value of MySpecialApp was changed to My-SpecialApp.  That was simply it!  I then logged back into the Apple developer portal and created a new App ID and mobile provisioning profiles for development and distribution and the rest is history.  My releases now work when deployed via the Ad Hoc distribution.

A final note on this.  This is definitely a bug that Apple should either alert the user that they have done something wrong and enable some sort of automated corrective action.  After archiving I still receive:

codesign -dvvv My-SpecialApp.ipa
My-SpecialApp.ipa: code object is not signed at all

So what gives? Something is very wrong here, but this solution works for now.

 

, , , , , , , ,

2 Comments

ePub Submission Got You Down?

Today I released my new interactive digital children’s book, Riley and the Magical Laundry Basket iPhone/iPad application.  I wanted to take the story to the next level by releasing an ePub version into Apple’s iBookstore.  The story is about Riley as she is transported away to an imaginary world via her magical laundry basket.  In this world she is trying to get to the cupcake palace. iTunes Linkhttp://itunes.apple.com/us/app/riley-magical-laundry-basket/id456764124?mt=8

The cover/title of Riley and the Magical Laundry Basket

Riley and the Magical Laundry Basket

I wanted to release Riley and the Magical Laundry Basket as an ePub book.  I was absolutely ecstatic as my final “.epub” file worked flawlessly and looked beautifully in my initial tests on iPad and iPhone.  Today, I decided I was going to move ahead and upload the file using iTunes Producer.  I became frantic as I discovered a host of errors produced by iTunes Producer and when I searched online, I didn’t find much help!  I’m going to take the esoteric “errors” you see and translate them for any/all people.  If you need help just add in a comment, but these were my basic errors and how I solved them today.

My first error encountered.  This error made me go cross eyed trying to figure out what exactly the trouble was.

“length of first filename in archive must be 8, but was 9”

Chris’ Translation & Solution:  make sure that the “mimetype” file is the first one compressed into your epub archive file.  Don’t worry I’ll show you how to fix it near the end of this post.

My second error:

“extra field length for first filename must be 0, but was 28” at Book (MZItmspBookPackage)

Chris’ Translation & Solution: the zip command or tool you are using is adding additional file attributes into the archive or compressed file.

Using the command line (terminal) on my Macbook I was able to fix both these issues.  I changed directory to the root of my epub book and ran the following command.

zip -X -r rmlb.epub mimetype *

The -X listed removes the extra file attributes (from issue #2) shown.  Explicitly defining that the mimetype file is the first file to compress fixes issue #1.  A little further explanation of the command shown…  The -r means “recursively”, basically add everything within the current directory including other sub-directories.  The rmlb.epub is the final name of the .epub file.  The * is a wildcard character telling the zip command to put everything into the archive.

My directory structure looked as follows.

Screenshot of ePub directory structure.

I saw many references to using the OEBPS folder, but in this case it is not necessary.  You just have to make sure that you add the “mimetype” file first into the archive.

After I did the following command, iTunes Producer accepted my ePub book and now I’m waiting for Apple’s approval.

Happy coding and I hope this helps you if you had an issue!

5 Comments

iPhone users able to build a shinier world, one turd at a time

This blog usually focuses on software development, but I can’t resist sharing this with all of you out there.  Have a good laugh!

MaxPowerSoft Puts a New Polish on an Old Adage: You Actually Can Polish a Turd

Polish It now available at the iPhone App Store

SAN DIEGO, CA (May 24, 2010) – MaxPowerSoft (www.maxpowersoft.com) today announced the release of Polish It, an iPhone application designed to facilitate “a shinier world, one turd at a time”. Available for $0.99 at Apple’s iPhone App Store, ‘Polish It’ is both a literal and cute/comedic take on the old and well-known phrase “You can’t polish a turd”. Your goal is simple: Choose a turd you like, and polish it! Utilize the touchscreen and your finger for polishing, tilt the phone to maneuver, and snap a photo at anytime to share.

“We wanted to reach out and give frustrated workers, students, and really all curious people in general, the powerful ability to truly polish a turd,” says Nic Danielson, Director of Marketing. “MaxPowerSoft has created an innovative new technology that allows one to therapeutically accomplish the task of polishing turds in the palm of your hand, no matter where you are, and on a whim to boot – most importantly, it can be done without the need for any sanitization processes.  There really is nothing else like it in the market, or the world for that matter.”

Features of Polish It include:

  • Objects rendered in full 3D.
  • Choose from over 10 objects to polish.
  • Simple controls: Touch to polish, Tilt phone to maneuver.
  • Snap a photo and send to your friends.
  • More features to come.

Pricing and Availability:

Polish It is available for $0.99 at the iPhone App Store:

http://itunes.apple.com/us/app/polish-it/id345199287?mt=8

, , , , , , ,

1 Comment

Release iPhone/iPod Touch FreeSWITCH Console

fs_logo_57_57 Well, it has been a long battle.  Fought since June 5th, 2009, but at long last Apple has come through and allowed the FreeSWITCH Console application into the app store.

FreeSWITCH is an open source telephony platform designed to facilitate the creation of voice and chat driven products scaling from a soft-phone up to a soft-switch.  It can be used as a simple switching engine, a PBX, a media gateway or a media server to host IVR applications using simple scripts or XML to control the callflow.

So without much further ado, here is the iTunes link: App Store, FreeSWITCH Console.

FreeSWITCH Console Screenshot

The application requires that you have the event socket layer (ESL) module installed in your FreeSWITCH instance.

, , , , ,

7 Comments

Mounting MobileMe iDisk Using WebDav and Linux

Anyone have a MobileMe account and wondered if you can access the iDisk from a mount command in your Linux environment? It’s handy for backing up your data and general file sharing.

This simple step by step process will allow you to gain read and write access to your MobileMe user account’s iDisk drive space. The first pre-cursor you need to fulfill is that you need the davfs (on debian/ubuntu flavors just run: apt-get install davfs2) package installed.

Next we’re going to create a mount point that will be used as a point of reference for the iDisk drive.

sudo mkdir /mnt/idisk

Using the root user account, modify your /etc/fstab file by adding the following at the bottom. Just change the {account_name} section below:

https://idisk.mac.com/{account_name}    /mnt/idisk      davfs   rw,noauto,user  0       0

Now that you’ve completed the modification of the mount.  Let’s run a test.

mydev:/mnt# mount /mnt/idisk
 
Please enter the username to authenticate with server
  https://idisk.mac.com/{acccount_name}
or hit enter for none.
Username: {acccount_name}
 
Please enter the password to authenticate {acccount_name} with server
  https://idisk.me.com/{acccount_name}
or hit enter for none.
Password:
mydev:/mnt# ls -al /mnt/idisk
total 11
drwxr-xr-x 15 root root  256 2009-08-13 08:11 .
drwxr-xr-x  4 root root 4096 2009-08-13 07:59 ..
drwxr-xr-x  2 root root   68 2009-06-16 14:33 Backup
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Documents
drwxr-xr-x  2 root root   68 2009-06-17 07:14 Groups
drwxr-xr-x  5 root root  132 2009-07-02 09:11 iPhone Development
drwxr-xr-x  5 root root  100 2009-06-17 07:48 Library
drwx------  2 root root   36 2009-08-13 08:11 lost+found
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Movies
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Music
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Pictures
drwxr-xr-x  2 root root   36 2009-06-17 07:49 Public
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Sites
drwxr-xr-x  3 root root   88 2008-07-10 01:11 Software
drwxr-xr-x  3 root root   52 2009-06-17 07:53 Web

That’s great isn’t it? Now the only trouble is it keeps on prompting you for your username and password. In my situation I want this automated. Luckily for us, davfs has a mechanism built into it for managing this. It’s located in the /etc/davfs2/secrets file. So as the root user run the following commands.

mydev:/# umount /mnt/idisk
mydev:/# echo "https://idisk.mac.com/{account_name}   {account_name}   {account_password}" >> /etc/davfs2/secrets
mydev:/# mount /mnt/idisk
mydev:/# ls -al /mnt/idisk
total 11
drwxr-xr-x 15 root root  256 2009-08-13 08:11 .
drwxr-xr-x  4 root root 4096 2009-08-13 07:59 ..
drwxr-xr-x  2 root root   68 2009-06-16 14:33 Backup
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Documents
drwxr-xr-x  2 root root   68 2009-06-17 07:14 Groups
drwxr-xr-x  5 root root  132 2009-07-02 09:11 iPhone Development
drwxr-xr-x  5 root root  100 2009-06-17 07:48 Library
drwx------  2 root root   36 2009-08-13 08:11 lost+found
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Movies
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Music
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Pictures
drwxr-xr-x  2 root root   36 2009-06-17 07:49 Public
drwxr-xr-x  2 root root   36 2009-06-16 14:33 Sites
drwxr-xr-x  3 root root   88 2008-07-10 01:11 Software
drwxr-xr-x  3 root root   52 2009-06-17 07:53 Web
mydev:/# umount /mnt/idisk

And that is it! No more prompting for the username and password. Pretty simple implementation and we’re off to the races.

EDIT NOTES: Thanks DaveDaveDave for the comment, I changed the https://idisk.me.com to the new and functional https://idisk.mac.com

, , , , , ,

24 Comments