Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-11175] iOS 6: Project using sdk 6.0 has strange target architecture

GitHub Issuen/a
TypeBug
PriorityMedium
StatusClosed
ResolutionFixed
Resolution Date2013-01-24T20:05:11.000+0000
Affected Version/sRelease 2.1.3, Release 3.0.0
Fix Version/sRelease 3.1.0, 2013 Sprint 02 API, 2013 Sprint 02
ComponentsiOS
Labelsapi, triage
ReporterMartin Guillon
AssigneeBlain Hamon
Created2012-09-26T07:41:00.000+0000
Updated2017-03-31T22:18:10.000+0000

Description

Yesterday i add to debug my app on an ipad 3 running 6.0 So i launch the generated xcode project for my app, selected universal target and run. Xcode told me that i could not run the app on that device. After looking at the project i found out something strange about the targets. Valid architecture was not the same for all of them. Screenshots speak for themselves. After changing valid archs of the universal target to "armv7 armv7s", the app did run on the device. If i am correct a project using 6.0 sdk should not have any mention of armv6, right?

Attachments

FileDateSize
Screen Shot 2012-09-26 at 9.30.03 AM.png2012-09-26T07:41:00.000+000064946
Screen Shot 2012-09-26 at 9.30.26 AM.png2012-09-26T07:41:00.000+000060836
Screen Shot 2012-09-26 at 9.30.32 AM.png2012-09-26T07:41:00.000+000057580
Screen Shot 2012-09-26 at 9.30.38 AM.png2012-09-26T07:41:00.000+000059123

Comments

  1. Daniel Sefton 2012-09-26

    Tested and confirmed on: iOS 6 SDK, Titanium Studio, build: 2.1.2.201208301612, TiSDK 2.1.3 RC. Xcode also complains about updating recommended settings: "Upgrade ARMV6 assembler codegen from THUMB to ARM mode". The targets have "Valid Architectures" set to "armv6 armv7 i386". On iOS 6 this should be "armv7 armv7s i386". And ideally "Architectures" should all be set to $(ARCHS_STANDARD_32_BIT) which translates to "Standard (armv7, armv7s)". It's currently set to "armv6 armv7". I'm guessing the project generation in Titanium has yet to be updated for iOS 6.
  2. Blain Hamon 2012-10-27

    Okay, here's the sticky wicket. Adding armv7s is something that must be done in the future, yes. But if you have an app set to build for an arch, it requires ALL parts be there for that arch. And as of now, NO modules made would have armv7s. So I propose that the archs for 3.0 be such: Titanium apps: armv7. Titanium modules: armv7, armv7s. Then the archs would have armv7 and armv7s for both, after enough time has been given for the module marketplace to refresh. Additional possibilities for extra style points is to have the cli detect what archs modules have through otool.
  3. Ingo Muschenetz 2012-10-29

    This sounds good to me. To confirm, that would mean we'd be dropping support for armv6 (by default)?
  4. Eric Merriman 2012-10-29

    I attempted to reproduce using Xcode 4.5, iPad 3 with iOS 6. With a sample project, the architectures are as reported, armv6 and armv7. I was unable however to get a failure using the steps in the ticket. I was able to run the universal target on iPad, which strangely launched in iPhone paradigm. The discrepancy in results could be related to any modules used in the project. Mine had none, but the reporter could very well be including modules. Regardless, the architecture needs to be addressed.
  5. Ingo Muschenetz 2012-10-30

    @Martin--did you use modules in your project? Eric was unable to reproduce your exact failure.
  6. Martin Guillon 2012-10-30

    @Ingo, @Eric: Yes i do use module in that project. But do modules modify the target architecture? That seem quite strange to me If so that might explain the strange targets One remark though , @Eric you say that you are facing [this](https://github.com/appcelerator/titanium/issues/20) issue, which means you are using the new "node" build system. And so it s not the same code that generate the xcode project (if i am correct!). Maybe this bug is gone with the new node system. I was facing it using the old build system
  7. Blain Hamon 2012-10-30

    Okay, the change is thus: The Titanium module templates have the archs specifications removed, and for the Titanium app, the archs now no longer list armv6. This means modules will use the XCode/user default, so yay future proofing for free. As for the app, right now it builds only armv7 (If someone really really wants to use arm6, there's a workaround, but that's an extreme edge case). The reason for no armv7s yet is to give modules time to have the architecture supported before it's required. That is, the advantage of having the small superset of armv7 used is currently outweighted by the danger of linker failures, but this is only a function of time.
  8. Ingo Muschenetz 2012-11-02

    Pulling this out of the developer preview for 3.0.0 until I get confirmation from QE on how they will be testing this.
  9. Lee Morris 2017-03-31

    Closing ticket as fixed, if there are any problems, please file a new ticket.

JSON Source