How to make a backwards-compatible Titanium module? - titanium

Title says it all: is it possible to make Titanium modules that are backwards-compatible with Titanium apps that are lower than 7.0.0GA?
I tried to set the minsdk value in manifest for my module to 6.0.4GA but Appcelerator doesn't allow me to add it for apps lower than 7.0.0GA.
How can I make a backwards-compatible Titanium module built with Titanium 7.0.0GA?

Because you need to compile your module with apiversion 4, it has to be minSdk 7.0.0
However, you can easily recompile the module again for lower versions. So, lower apiversion to 3 and set minsdk to 6.0.0, and you can use it in TiSDK 6.
It not really is backwards compatible, but just having 2 builds (and 2 versions) should be fine. You could even include them both in your app and just switch based on SDK you use.
I'd recommend changing the major version by 1 though, so for SDK 6 version 1.0, and for SDK 7, make it version 2.0

Related

Titanium settings to distribute an android app

I have a doubt with the Android SDK setting in the menu for distribute an Android App in Titanium.
What Android SDK Version means?
The minimum SDK Version?
Or
I must create an APK for each Android
Version?
If choose Android 4.3 [x86] the resultimg APK will work for the older android devices like 2.3.3 too?
And viceversa?
The min sdk tells which would be the oldest version of android that it supports means if we give minSdk version 2.3.3 then it should work for all above and specific versions
Thanks

What's the meaning of Base SDK, iOS deployment target, Target, and Project in xcode

Say I set base SDK to 7, what does it mean? It could mean that the app would run on iOS 7. But that's what iOS deployment target is for.
Also why do I specify those 3 values in both project and target. It doesn't make sense. Why specify the same thing twice?
In the iOS 7 TechTalk, session Architecting Modern Apps, Part 2, they explain this clearly
Good read Hi! I'm #available!
So, a modern App might use iOS 9 as the Target SDK, and iOS 7 as the deployment target. This means that you can run on iOS 7, iOS 8 and iOS 9, and that you have available to you any iOS 9 calls when actually running on iOS 9.
You can read more in my post SDK and Deployment Target
The base SDK is what you build your app against (i.e. include and library files and frameworks). As you say, it doesn't affect the deployment target, except that base sdk >= deployment target.
You specify build settings on 2 levels as each project can have multiple targets and you might not want the same settings for all targets. The project-level settings override the default settings and the target-level settings override the project-level settings.
For example I have projects with both OSX and iOS targets and some are ARC and some are MRR. I'd have to have different projects for each if I was unable to specify build settings with the level of granularity that Xcode allows.
Base SDK is the SDK you link against. Deployment Target is the minimum required iOS version you application needs to run. You can build an application with SDK 7 that runs under iOS 6. But then you have to take care to not use any function or method that is not available on iOS 6. If you do, your application will crash on iOS 6 as soon as this function is used.
See the apple documentation for more details: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

iOS App Distribution and Deployment Target

I need to build app for distribution via app store.
Application is tested and working on iOS 5.0, 5.1 and 6.0.
Do I need to build different archives for each iOS version (change iOS Deployment Target setting for each build)?
Is there any difference to compiled output when I change iOS Deployment Target setting?
You just need to do one build with the lowest iOS version you want to support, and then you go through all the upload process.
Basically the SDK version you are using is highest iOS version it will run and Deployment Target is the lowest.
So set your Deployment Target to 5.0, compile using iOS SDK 6.0 (you don't have any other option, though) and that's it. Submit to the App Store.
I don't know if there are some differences in binary when changing Deployment Target, but there are some during compilation for sure. For example when you set it to iOS 6, you may get deprecation warnings from the latest API changes.

Xcode library reverted to 5.1 from 6

I have been developing an app using Xcode, which included the Facebook SDK. The Facebook SDK requires the AdSupport.framework and the Social.framework, both of which were previously installed, but seem to have disappeared. My question is how do it update the library to 6.0, instead of five? I understand that you have to go into the build phases and add the frameworks in the Line Binary With Libraries section, but when I go to add the framework, the folder is 5.1, not six. I have looked through the Apple doc's and haven't found anything.
Here is an image of what I'm getting:
It should look like this:
There should be no way the SDKs provided with Xcode can regress. However you could see them vanish if you launch an older version of Xcode.
Based on experience, if you had Xcode installed before it was a single app bundle and have subsequently installed the app bundle version then there's a reasonable probability the old version is still present and therefore good odds that a Spotlight launch will open the wrong one.

Deprecated errors while converting app compatible with new IOS

I am developing an application.
The main thing is that i have to make compatible it with latest IOS.So, I just want to know
whether i need to install latest xcode sdk for that ? or
i can make it with sdk lower than latest?
Thanks for Helping .
The only reason you would need to use the latest SDK would be to take advantage of the latest iOS 5 changes (new API's and features like Storyboarding).
But anything that is built under older SDK's (such as iOS 4.3) is supposed to run just fine on iOS 5. In reality, that isn't always the case though.
You can/should make the target SDK be the lowest "target" device you want to handle (eg, 3.2), though you can compile/build with either iOS 4 or iOS 5. If you don't build with Xcode 4, though, you'll need a physical iOS 5 device to test on. (Good to have one anyway, but it's inconvenient having to do all your testing on a device.) If you do build on Xcode 4 be sure to test both against iOS 5 and a lower version (if you want compatibility with a lower version).