aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-03-02 18:34:51 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-03-02 18:34:51 +0100
commite6af789bf50f9636d3455c4bd1b662ab5d04e3e2 (patch)
tree35e7560cd785aa20c1fa814332d16bd094921282 /README.md
parent5e53a5417c11f54f437d9f220d3e2e8579b8bf1b (diff)
parent145e793db1d732bdd230be92750123cd20c9502d (diff)
downloadopen-keychain-e6af789bf50f9636d3455c4bd1b662ab5d04e3e2.tar.gz
open-keychain-e6af789bf50f9636d3455c4bd1b662ab5d04e3e2.tar.bz2
open-keychain-e6af789bf50f9636d3455c4bd1b662ab5d04e3e2.zip
Merge branch 'development' into linked-identities
Conflicts: OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserAttributesAdapter.java
Diffstat (limited to 'README.md')
-rw-r--r--README.md55
1 files changed, 36 insertions, 19 deletions
diff --git a/README.md b/README.md
index ff045de01..77ae69262 100644
--- a/README.md
+++ b/README.md
@@ -106,37 +106,54 @@ see
* Mailinglist Archive at http://bouncy-castle.1462172.n4.nabble.com/Bouncy-Castle-Dev-f1462173.html
* Commit changelog of pg subpackage: https://github.com/bcgit/bc-java/commits/master/pg
-
-## Notes
-
-### Gradle Build System
+## Build System
We try to make our builds as [reproducible/deterministic](https://blog.torproject.org/blog/deterministic-builds-part-one-cyberwar-and-global-compromise) as possible.
-When changing build files or dependencies, respect the following requirements:
-* No precompiled libraries (you never know what pre-compiled jar files really contain!). All libraries should be forked into the open-keychain Github project and then provided as git submodules in the "extern" folder.
-* No dependencies from Maven (also a soft requirement for inclusion in [F-Droid](https://f-droid.org))
+
+#### Update Gradle version
* Always use a fixed Android Gradle plugin version not a dynamic one, e.g. ``0.7.3`` instead of ``0.7.+`` (allows offline builds without lookups for new versions, also some minor Android plugin versions had serious issues, i.e. [0.7.2 and 0.8.1](http://tools.android.com/tech-docs/new-build-system))
-* Commit the corresponding [Gradle wrapper](http://www.gradle.org/docs/current/userguide/gradle_wrapper.html) to the repository (allows easy building for new contributors without the need to install the required Gradle version using a package manager)
-* In order to update the build system to a newer gradle version you need to:
- * Update every build.gradle file with the new gradle version and/or gradle plugin version
+* Update every build.gradle file with the new gradle version and/or gradle plugin version
* build.gradle
* OpenKeychain/build.gradle
- * OpenKeychain-API/build.gradle
- * OpenKeychain-API/example-app/build.gradle
- * OpenKeychain-API/libraries/keychain-api-library/build.gradle
- * run ./gradlew wrapper twice to update gradle and download the new gradle jar file
- * commit the new gradle jar and property files
-
-### Slow Gradle?
+* run ./gradlew wrapper twice to update gradle and download the new gradle jar file
+* commit the corresponding [Gradle wrapper](http://www.gradle.org/docs/current/userguide/gradle_wrapper.html) to the repository (allows easy building for new contributors without the need to install the required Gradle version using a package manager)
+
+#### Update SDK and Build Tools
+* Open build.gradle and change:
+```
+ext {
+ compileSdkVersion = 21
+ buildToolsVersion = '21.1.2'
+}
+```
+* Change SDK and Build Tools in git submodules "openkeychain-api-lib" and "openpgp-api-lib" manually. They should also build on their own without the ext variables.
+
+#### Add new library
+* You can add the library as a Maven dependency or as a git submodule (if patches are required) in the "extern" folder.
+* If added as a Maven dependency, pin the library using [Gradle Witness](https://github.com/WhisperSystems/gradle-witness) (Do ``./gradlew -q calculateChecksums`` for Trust on First Use)
+* If added as a git submodule, change the ``compileSdkVersion`` and ``buildToolsVersion`` in build.gradle to use the variables from the root project:
+```
+android {
+ compileSdkVersion rootProject.ext.compileSdkVersion
+ buildToolsVersion rootProject.ext.buildToolsVersion
+}
+```
+* You can check for wrong ``compileSdkVersion`` by ``find -name build.gradle | xargs grep compileSdkVersion``
+
+#### Slow Gradle?
* https://www.timroes.de/2013/09/12/speed-up-gradle/
* Disable Lint checking if it is enabled in build.gradle
-### Error:Configuration with name 'default' not found.
+#### Error:Configuration with name 'default' not found.
Gradle project dependencies are missing. Do a ``git submodule init && git submodule update``
-### Translations
+#### Build on Mac OS X fails?
+
+Try exporting JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
+
+## Translations
Translations are hosted on Transifex, which is configured by ".tx/config".