Nacho Mail is a Xamarin/C# email application capable of ActiveSync and IMAP and targeted for enterprise customers.
NachoClientX houses nearly all of the client application code, including:
NachoCore
, the platform-independent code handling all non-UI tasksNachoClient.iOS
, the iOS clientNachoClient.Android
, the Android clientNachoClient.Mac
, a proof-of-concept Mac app demostrating NachoCore's versatilityTo setup a deveopment environment, you'll need Visual Studio Community Edition.
When installing Visual Studio, be sure to include:
Next up is configuring the Android SDK.
* Version is hard-coded by TokenAutoComplete, would be nice to remove exact version dependency
A few build scripts need to know where the android NDK is (TODO: see if we can elimiate this requirment).
So, add something like the following line to your .bash_profile or .bashrc file:
export NDK=/Users/yourname/Library/Developer/Xamarin/android-sdk-macosx/ndk-bundle
This is a typical location where Visual Studio installs the android ndk, but it may not be correct for all installations. Be sure to find the path yourself.
NachoClientX depends on several other git repositories for supporting code, mostly forks of third-party packages.
To get all the other repositories, run:
NachoClientX $ scripts/repos.py clone
Development builds of Nacho Mail are done entirely in Visual Studio. Using the target selector in the top
left of the toolbar, choose either NachoClient.iOS
or NachoClient.Android
in the first segment, then choose
Debug
in the second segment, then choose your device in the final segment. Press Run and a build will begin,
with the app launching on your device upon build completion.
Release builds are done from the command line only using the build.py
script, such as:
NachoClientX $ scripts/build.py store 3.5.0 710
There are three arguments to the script:
While not necessary, it is recommended to do a build from a clean set of repositories. The only setup you need is a clean clone of NachoClientX in an empty folder. The build script will take care cloning all the other repos.
$ git clone git@github.com:nachocove/NachoClientX
$ NachoClientX/scripts/build.py ...
When run with the default arguments, the build.py
script will result in four outputs:
iOS .xarchive
- The Xcode-compatible archive, which can be used to re-export the exact build by hand using different signing optionsiOS .ipa
- The iOS app bundle suitable for distributionAndroid unsigned .apk
- The unsigned Android app bundle used by clients that want to re-sign the appAndroid signed .apk
- The signed Android app bundle suitable for distributionEach minor release (e.g., 3.5) gets is own branch, and bugfix releases (e.g., 3.5.0 and 3.5.1) are typically built off of that
single 3.5 branch. The build.py
script will automatically create this branch during the first build of a new minor version.
Every repository will be branched.
If needed, you can use repos.py
to create a branch just for a bugfix release, but this should only be necessary if
two bugfix releases are being worked on simultaneously. build.py
will recognize a bugfix relase branch if present
and will choose it over the minor release branch.
Every build results in each repository being tagged with the build version and number.