The Divvun and Giellatekno teams build language technology aimed at minority and indigenous languages
Gïelese has a client and a remote server for data storage. These steps focus on the compilation of the client.
These are the steps required to build the three apps presently supported by the Gïelese source code:
???
python -c "import os ; print os.urandom(24)" > secret_key
python manage.py init_db
python manage.py install_media -f ../data/sma_media.xml
python manage.py append_lexical_data -f ../data/n_smanob_test.xml
The latter only installs/updates definitions for existing words from the first step, if you want to just install everything, use:
python manage.py install_lexicon -f ../data/n_smanob.xml
Prepare JSON files.
python manage.py prepare_json
Extracting is a little tricky. Mind the dot at the end, as we need the current directory too.
pybabel compile -d translations
In the main directory (~/$GTHOME/apps/aajege/src/) run the following command:
make prepare-for-phonegap
This will take a little while. It does the following:
PhoneGap system dependencies:
For building with Android
PhoneGap dependencies must be installed using ‘npm’, globally. NB: you may need sudo permissions for this.
$ npm install -g phonegap@3.6.3-0.22.6
$ npm install -g cordova@3.6.3-0.2.13
$ npm install -g ios-sim@3.1.1
These dependencies are checked in sma-client/phonegap/package.json
./node_modules/.bin/brunch build --production
=> webapp???
=> Android app???
=> iOS app phonegap build android
cd PATH_TO_RELEASE/platforms/android
ant release
NB: you will be prompted for the keystore password (twice). This is in priv too.
The file will be generated in bin
. This should be enough for building
Android .apk files for release, but but if this is not enough see further steps
in the following document.
Other relevant docs:
NB: before uploading a new release to the android app store, be sure to update the versionCode in the AndroidManifest.xml file.
If you encounter errors in the process of the phonegap build android command, run the following instead:
cordova build android
This will return much more useful feedback.
?
?
For beta testing on android, users must be a member of the Google group (gielese-tester-community), where they must follow the development link in order to get permission to download any beta versions. After the user is a member of the group, this is automatic.
Invites must be managed within the Group, as it is not listed as public.
As a beta tester, follow this procedure:
NB: Since it may take a few hours for APKs to be deployed to all of google Play’s servers, it may be so that you will be able to enroll in the beta program, but not access the beta. If this is so, try back in a couple hours.
In the Apple Developer Member Center, you must have the following things:
The wizards used to create these will explain in good detail how to generate certificates.
The end result will be that you will need to install the Deployment Certificate on your own machine through the Keychain Access app.
NB: the Bundle ID must be the same for the upload to work. You can set this on Apple’s side within iTunes Connect.
Follow the documentation, but also make sure that you:
And then check the installed plugins and, remove and add them all individually
Review process returns:
Missing Push Notification Entitlement - Your app appears to include API used to
register with the Apple Push Notification service, but the app signature's
entitlements do not include the "aps-environment" entitlement.
But, we don’t use push notifications.
Problem: Phonegap 3.5 seems to automatically include API calls to set up the push notification API, even though the phonegap project is not configured to use a push notification plugin… Building the XCode project from PhoneGap results in the inclusion of the following lines in Gielese/Classes/AppDelegate.m. Apple is warning that the certificate does not include these entitlements. One way would be to regenerate a provisioning profile with these entitlements, but keeping the app simpler seems to be a better idea.
// repost all remote and local notification using the default NSNotificationCenter so multiple plugins may respond
- (void) application:(UIApplication*)application
didReceiveLocalNotification:(UILocalNotification*)notification
{
// re-post ( broadcast )
[[NSNotificationCenter defaultCenter] postNotificationName:CDVLocalNotification object:notification];
}
- (void) application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// re-post ( broadcast )
NSString* token = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
[[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotification object:token];
}
- (void) application:(UIApplication *)application
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
// re-post ( broadcast )
[[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotificationError object:error];
}
Commenting these out, rebuilding, and resubmitting, is supposed to fix the problem (currently waiting for proof from the approval process).