[TIMOB-23530] Hyperloop - IPHONEOS_DEPLOYMENT_TARGET of 7.0 despite value of min-ios-ver in tiapp.xml
| GitHub Issue | n/a |
|---|---|
| Type | Bug |
| Priority | Critical |
| Status | Closed |
| Resolution | Fixed |
| Resolution Date | 2016-06-29T01:52:24.000+0000 |
| Affected Version/s | n/a |
| Fix Version/s | Release 5.4.0 |
| Components | Hyperloop, iOS |
| Labels | hyperloop, swift |
| Reporter | Ron Piwetz |
| Assignee | Hans Knöchel |
| Created | 2016-06-10T15:05:23.000+0000 |
| Updated | 2016-08-02T22:20:09.000+0000 |
Description
I've set
min-ios-ver to 9.0 within tiapp.xml, and when running appc ti build I can see an INFO message of Minimum iOS version: 9.0
When it gets to the Hyperloop section, I see a TRACE message of
{noformat}
[Hyperloop] CocoaPods IPHONEOS_DEPLOYMENT_TARGET = 7.0
{noformat}
I believe this is leading to parameter of -target x86_64-apple-ios7.0 being set during swift compilation, causing an error for the particular pod I am trying to use (ImagePicker)
One of the errors:
{noformat}
error: 'dispatch_queue_attr_make_with_qos_class' is only available on iOS 8.0 or newer
{noformat}
There are lots more like this in the logs
Recreating this error can be done by using a Podfile with the below contents:
use_frameworks!
platform :ios, '9.0'
target 'Hyperloop_Sample' do
pod 'ImagePicker'
end
I have copy/pasted the failing swift build command, replaced the -target x86_64-apple-ios7.0 with -target x86_64-apple-ios9.0 and it completes successfully.
Attachments
| File | Date | Size |
|---|---|---|
| build_iphone.log | 2016-06-15T19:42:06.000+0000 | 75504 |
Hello, Could you explain a little more about how you are seeing the issue. I tried to test the hyperloop 1.2.0 which I see it build fine. Please where you are making the modification in tiapp.xml and please provide the error log. Regards, Sharif.
in tiapp.xml, add
I attached my build log file. In it, you can see on line 483 where xcodebuild is being called with
-alltargets IPHONEOS_DEPLOYMENT_TARGET=7.0which leads to line 486 of[Hyperloop] CocoaPods IPHONEOS_DEPLOYMENT_TARGET = 7.0so then on line 498, you see-target x86_64-apple-ios7.0but if i change that target to bex86_64-apple-ios9.0instead it works You can also see 10 instances oferror: 'XXXXXX' is only available on iOS 8.0 or newer[~cng] Do you know if this will be in the GA build of Hyperloop coming out?
Did you make sure you set it inside the Podile (which has the 7.0 by default). See hyperloop-examples:
Changing that to 9.0 should do it.As shown in the original report, I have it set to 9.0 in the Podfile, but hyperloop is being told to use 7.0
Right. So the
IOS_MINinsideplugins/hyperloop/<version>/hooks/ios/hyperloop.jsis currently used hardcoded, although it should use the<min-ios-ver/>if existing.PR to use
this.builder.minIosVerinstead ofMIN_IOSin the CLI: https://github.com/appcelerator/hyperloop.next/pull/36[~hansknoechel] Steps to test please.
*Steps to test*: 1. Use the [hyperloop-examples](https://github.com/appcelerator/hyperloop-examples) project and replace the Hyperloop module & plugin from [here](https://github.com/appcelerator/hyperloop.next/releases) 2. Paste
<min-ios-ver>9.0</min-ios-ver>inside the<ios/>section of the tiapp.xml 3. Paste the following inside thePodfile:4. Run the project *Expected result*: The project does not fail *Note* Don't use cocoapods 1.0.0 as this doesn't work with hyperloop at the moment. use cocoa pods 0.39.0 instead. If you want to downgrade the version, refer to this link: http://stackoverflow.com/questions/20487849/downgrading-or-installing-older-version-of-cocoapodsuse_frameworks! platform :ios, '9.0' target 'Hyperloop_Sample' do pod 'ImagePicker' endSmaller test case for PR
1. *appc new -n testPod --classic* 2. Install hyperloop module from [here](https://github.com/appcelerator/hyperloop.next/releases) 3. Paste<min-ios-ver>9.0</min-ios-ver>inside the<ios/>section of the tiapp.xml 4. Paste the following inside thePodfilein root of project:5. Include this in tiapp.xmluse_frameworks! platform :ios, '9.0' target 'testPod' do pod 'ImagePicker' end6. *appc run -p ios*<modules> <module>hyperloop</module> </modules> <plugins> <plugin>hyperloop</plugin> </plugins>Expected result
The project will build successfully *Note* Don't use cocoapods 1.0.0 as this doesn't work with hyperloop at the moment. use cocoa pods 0.39.0 instead. If you want to downgrade the version, refer to this link: http://stackoverflow.com/questions/20487849/downgrading-or-installing-older-version-of-cocoapods [~hansknoechel] Your fix removed the swift error in this ticket, but with my reproduce steps, I encountered a different error:Can you please check to see what's wrong? could it be my configuration?[TRACE] ld: framework not found ImagePicker [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ERROR] ** BUILD FAILED ** [ERROR] The following build commands failed: [ERROR] Ld build/Products/Debug-iphonesimulator/SGTestCocoa.app/SGTestCocoa normal x86_64 [ERROR] (1 failure)As discussed in TIMOB-23570, the above-described issue is another issue that should be handled independently from this one, so we can put it into 5.4.0.
[~hansknoechel], [~cng], TIMOB-23570 is blocking us from verifying this ticket. If we want this fix to be in 5.4.0, should TIMOB-23570 be fixed first and put into 5.4.0?
Close ticket as fixed. Verified that
<min-ios-ver>is being respected during build. *Note:* Needed to apply the workaround from TIMOB-23671 since I started encountering the segfault issue. Tested on: Appc CLI NPM: 4.2.7 Appc CLI Core: 5.4.0-37 Arrow: 1.8.2 SDK: 5.4.0.v20160801022303 Node: v4.4.7 OS: Mac OS X (10.11.6) Xcode: 7.3.1