I have an mobile application written in Delphi XE8 that I can deploy to either Android or iOS from two separate projects. The only reason for maintaining separate projects is the different destination platforms have different "uses" sections that will not compile ...
With ANDROID as the destination :
uses
...
FMX.Layouts, FMX.ListView,
FMX.PhoneDialer,
IdURI,
Androidapi.JNIBridge,
Androidapi.JNI.Provider,
AndroidApi.Jni.GraphicsContentViewText,
Androidapi.JNI.Net,
Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,
AndroidAPI.Helpers,
AndroidApi.Jni.App,
Androidapi.IOUtils, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, Data.DBXDataSnap, IPPeerClient, ... ;
With IOS as the destination :
uses
...
FMX.Layouts, FMX.ListView,
FMX.PhoneDialer,
///// iOS Only ///////////
MacApi.Helpers, iOSapi.UIKit,
///// iOS Only ///////////
IdURI, IdSSLOpenSSLHeaders_Static,
System.IOUtils,
IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, Data.DBXDataSnap, IPPeerClient, ... ;
I have tried placing {ifdef IOS} uses ... {Else} uses .... {EndIf IOS} to define two separate uses statements for two different destination platforms, but that would not compile.
Any helpful advice would be greatly appreciated. -- ImageBASE
As TLama pointed out, it appears you're missing the $
character. Without it, these are treated merely as comments. What you should do is...
{$IFDEF IOS}
...
{$ELSE}
...
{$ENDIF}
Or:
{$IFDEF IOS}
...
{$ENDIF}
{$IFDEF ANDROID}
...
{$ENDIF}
For example:
uses
...
FMX.Layouts, FMX.ListView,
FMX.PhoneDialer,
{$IFDEF IOS}
///// iOS Only ///////////
MacApi.Helpers, iOSapi.UIKit,
{$IFDEF CPUARM}
// iOS Devices Only
IdSSLOpenSSLHeaders_Static,
// iOS Devices Only
{$ENDIF}
///// iOS Only ///////////
{$ENDIF}
{$IFDEF ANDROID}
///// Android Only ///////////
Androidapi.JNIBridge,
Androidapi.JNI.Provider,
AndroidApi.Jni.GraphicsContentViewText,
Androidapi.JNI.Net,
Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,
AndroidAPI.Helpers,
AndroidApi.Jni.App,
Androidapi.IOUtils,
///// Android Only ///////////
{$ENDIF}
IdURI,
System.IOUtils,
IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, Data.DBXDataSnap, IPPeerClient, ... ;