iPhone 4 only app

To cut a long story shot I’v got a big 3D scene (virtual city) which I’v finally got running (as the iPhone 4 /ARM7 has more ram and power etc)

I can’t get my virtual city to run on 3g iTouch/iPhones is just exit after the spash screen (been battling for a year or so, only got an iPhone for last month)
So I want to limit it to the iPhone 4 only, I thought I could just build it with ARM7 as the only “Valid Architectures”.
BUT get this error when building

"warning: iPhone apps should include an armv6 architecture (current ARCHS = “armv7”). "

so

1 , can I create an app that can only run / be bought for the iPhone 4

2, Is simple saying “for iPhone 4 only” in the app description enough, I had read this was grounds for rejection ?

3, a solution I read about here was using UIRequiredDeviceCapabilities and “camera-flash” but agin as its not using the flash is this ground for rejection.

I’m just a bit concerned at times running out if I want any hope of getting it out before xmas so dont want it rejected

any advice / suggest are greatly appreciated.

jeff

You must specify ARMV7 in the ui capability declaration in ARM7 and target 4.0+ only to compile to ARMV7 only.

Also it does not work on 3G, which can happen fast. But why cut out the 3GS which will very likely run it?
ARMV7 would ensure that it is 3GS+ only :slight_smile:

@Dreamora, … If you were to target > 3GS+ devices only does Apple display a message on iTunes if you click the purchase button?

Unsure on that. That part of the AppStore is the one that compared to android is pretty bad.

I think it would tell you on the device but on iTunes … unsure.
With a bit of luck iTunes knows what kind of devices it has synced in ie what device classes it can support

Hi Thank for the help/advice

I’m not sure what you mean by “ui capability declaration in ARM7” is this in xcode?

I’m using xcode 3.2.5 and iOS4.2

if I set “architectures” to Optimized (arm7)
I get the following error

“warning: iPhone apps should include an armv6 architecture (current ARCHS = “armv7”).”

is this something I should be setting back in Unity (Unity is set to “iPhone only” and “universal armv6+armv7”
Their is no option in unity Target Platform for ARMV7 only in the drop down list so I’m changing it in the xcode build info window.

any pointer?
sorry to sound like a nooob, well I am (at least with iphone side of unity)

think I have sused a bit more out, the UIRequiredDeviceCapabilities is in the info.plist so I have added the key “UIRequiredDeviceCapabilities” and added the value “armv7”

but I’m still getting the error

warning: iPhone apps should include an armv6 architecture (current ARCHS = “armv7”).

Did you ensure that the deployment target is 4.0 or higher? (and that the required caps entry is setup right)

I do appreciate your time dreamora

in unity sdk version is set to 4.2 and target OS is set to 4.2

in xcode

in the info window I have iOS Deployment Target set to iOS4.2 and base SDK is set to iOS4.2

I also added MinimumOSVersion
4.0+

to the info.pList.

I’m not sure what required caps entry is ?

a little more info if I build with Architectures set to "Standard (armv6 armv7) is build with out errors

when it set to optimized (armv7) I get this error about including armv6 architecture.

I also noticed in the build results window the error come up in the first line “check dependencies” the next line say “process Info.list” with a green tick. just this mean the error is happening before the info.plist file is processed (suggesting it a config setting)

Ok little more progress

I can get it to build with out error set to Standard (armv6 armv7) (I have removed armv6 from the valid archs list so it only show armv7.

Also I did notice once error I had not set UIRequiredDeviceCapabilities as an array

UIRequiredDeviceCapabilities
armv7

So I have tried it in the application uploader and it passed their checks and started uploading.

Although this would appear to be compiled with the Standard(armv6 armv7) option as it has the UIRequiredDeviceCapabilities details will this make it only available on the store for armv7 devices?

but still not able to build with optimized (armv7)

Any more progress?

have you had the same problem (presumed other people must be in the same boat)

I have submitted it to the app store BUT compiled as Standard (armv6 armv7) I added

UIRequiredDeviceCapabilities
armv7

to the info.Plist file which I think make it only run on ARM7 devices ? as I say it uploaded and it waiting review.

So I thought I’ll see what comes out on the store if it only allows it for iPhone 4.

But I presume the file is bigger than it need to be as it has the ARM6 version to.

Has anyway been able to compile with optimized (armv7) without getting the error
“warning: iPhone apps should include an armv6 architecture (current ARCHS = “armv7”).”

that will tell itunes connect on upload that it is arm7 only

as for the ocmpile error: this might be related to unity not providing armv7 only target at the time (requested that months ago and its on feedback.unity3d.com in the iphone section), it always has armv6 in

dreamora (your fast) and very helpfull.

So for future then … How/what do I change to compile to optimized (armv7) .

I preusme I need to remove a reference to armv6
Is this done in Unity or Xcode >

As mentioned unity always contains code with ARMV6 in, even if you target armv6 + armv7 (which you would need to go anywhere).

I’m unsure you can compile this to ARMV7 only at all due to this small detail (which is responsible for the app being 32 to 40mb in size without anything in the project basically)
Have not tried it recently into this directly, only into ARMV6 exclusive direction to cut down the size.
Don’t see any use for ARMV7 only if unity does not offer us a ARMV7 only deployment at all

Thanks for the info I get it now (my own fault really for having a stupid big 3d model of my city)

Well at least I finally got it uploaded, So until Unity add ARMv7 only build, I’ll just have to build for ARMV6 + ARMV7 and add UIRequiredDeviceCapabilities, and take a hit on the file size.

And carry on optimising my 3d model, Must try Object Occulsion too.

cheers

the filesize hit is something you can’t avoid anyway until unity provides the ARMV7 only build even if you could build armv7 only, cause not compiling for armv6 does not remove its static library parts (they are just not loaded at runtime ie its always only half of that that gets loaded into RAM when the app runs)

hey Mikevanman,
Did you manage to get rid of this warning?
I’m having the same issue and I’d like to build an armv7 only version too.

ARMV7 only app needs this (and only this)

In Unity 3.3 set it to armv7 (only)

In Info.plist : UIRequiredDeviceCapabilities
armv7

In the Project Xcode settings:

Architectures: armv7 - this is already set by Unity
Valid architectures: armv7

The deployment target iOS can be still i.e. iOS3.1 since the iPhone3GS could run that and it’s a armv7 device

No it cant be 3.1 because the UIRequirement Capability flag is not valid prior iOS 3.2