4.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, author, date
| title | author | date | 
|---|---|---|
| Titanium | Sander van der Burg | 2018-11-18 | 
Titanium
The Nixpkgs repository contains facilities to deploy a variety of versions of the Titanium SDK versions, a cross-platform mobile app development framework using JavaScript as an implementation language, and includes a function abstraction making it possible to build Titanium applications for Android and iOS devices from source code.
Not all Titanium features supported -- currently, it can only be used to build Android and iOS apps.
Building a Titanium app
We can build a Titanium app from source for Android or iOS and for debugging or
release purposes by invoking the titaniumenv.buildApp {} function:
titaniumenv.buildApp {
  name = "myapp";
  src = ./myappsource;
  preBuild = "";
  target = "android"; # or 'iphone'
  tiVersion = "7.1.0.GA";
  release = true;
  androidsdkArgs = {
    platformVersions = [ "25" "26" ];
  };
  androidKeyStore = ./keystore;
  androidKeyAlias = "myfirstapp";
  androidKeyStorePassword = "secret";
  xcodeBaseDir = "/Applications/Xcode.app";
  xcodewrapperArgs = {
    version = "9.3";
  };
  iosMobileProvisioningProfile = ./myprovisioning.profile;
  iosCertificateName = "My Company";
  iosCertificate = ./mycertificate.p12;
  iosCertificatePassword = "secret";
  iosVersion = "11.3";
  iosBuildStore = false;
  enableWirelessDistribution = true;
  installURL = "/installipa.php";
}
The titaniumenv.buildApp {} function takes the following parameters:
- The nameparameter refers to the name in the Nix store.
- The srcparameter refers to the source code location of the app that needs to be built.
- preRebuildcontains optional build instructions that are carried out before the build starts.
- targetindicates for which device the app must be built. Currently only 'android' and 'iphone' (for iOS) are supported.
- tiVersioncan be used to optionally override the requested Titanium version in- tiapp.xml. If not specified, it will use the version in- tiapp.xml.
- releaseshould be set to true when building an app for submission to the Google Playstore or Apple Appstore. Otherwise, it should be false.
When the target has been set to android, we can configure the following
parameters:
- The androidSdkArgsparameter refers to an attribute set that propagates all parameters to theandroidenv.composeAndroidPackages {}function. This can be used to install all relevant Android plugins that may be needed to perform the Android build. If no parameters are given, it will deploy the platform SDKs for API-levels 25 and 26 by default.
When the release parameter has been set to true, you need to provide
parameters to sign the app:
- androidKeyStoreis the path to the keystore file
- androidKeyAliasis the key alias
- androidKeyStorePasswordrefers to the password to open the keystore file.
When the target has been set to iphone, we can configure the following
parameters:
- The xcodeBaseDirparameter refers to the location where Xcode has been installed. When none value is given, the above value is the default.
- The xcodewrapperArgsparameter passes arbitrary parameters to thexcodeenv.composeXcodeWrapper {}function. This can, for example, be used to adjust the default version of Xcode.
When release has been set to true, you also need to provide the following
parameters:
- iosMobileProvisioningProfilerefers to a mobile provisioning profile needed for signing.
- iosCertificateNamerefers to the company name in the P12 certificate.
- iosCertificaterefers to the path to the P12 file.
- iosCertificatePasswordcontains the password to open the P12 file.
- iosVersionrefers to the iOS SDK version to use. It defaults to the latest version.
- iosBuildStoreshould be set to- truewhen building for the Apple Appstore submission. For enterprise or ad-hoc builds it should be set to- false.
When enableWirelessDistribution has been enabled, you must also provide the
path of the PHP script (installURL) (that is included with the iOS build
environment) to enable wireless ad-hoc installations.
Emulating or simulating the app
It is also possible to simulate the correspond iOS simulator build by using
xcodeenv.simulateApp {} and emulate an Android APK by using
androidenv.emulateApp {}.
