Merge pull request #313 from afischerdev/migrate-to-gradle
Migrate to gradle Part 2 This should run out of the box. But for Android you need a file 'local.properties' which is exclude in .gitignore See also new README I've tested it on a Window10 system and an Ubuntu under Windows - w/o Android
This commit is contained in:
commit
1066700c01
17 changed files with 334 additions and 225 deletions
15
README.md
15
README.md
|
@ -46,21 +46,26 @@ A full documentation on how to set this up is available at
|
|||
|
||||
### Build and Install
|
||||
|
||||
To compile BRouter (including the BRouter Android app), use
|
||||
To compile BRouter (including the BRouter Android app), add a file 'local.properties' to main folder with your Android path (Windows sample)
|
||||
|
||||
```
|
||||
mvn clean install -Dandroid.sdk.path=<your-sdk-path>
|
||||
sdk.dir=D\:\\Android\\android-sdk
|
||||
```
|
||||
|
||||
|
||||
and use
|
||||
|
||||
```
|
||||
gradlew clean build
|
||||
```
|
||||
|
||||
If you only want to compile BRouter and the server part (skipping the Android
|
||||
app), use
|
||||
|
||||
```
|
||||
mvn clean install -pl '!brouter-routing-app'
|
||||
gradlew clean build -x :brouter-routing-app:build
|
||||
```
|
||||
|
||||
You can use `-Dmaven.javadoc.skip=true` to skip the JavaDoc processing and
|
||||
`-DskipTests` to skip running the unitary tests.
|
||||
|
||||
|
||||
### Get the required segments (data) files
|
||||
|
|
|
@ -4,4 +4,5 @@ plugins {
|
|||
|
||||
dependencies {
|
||||
implementation project(':brouter-util')
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
}
|
||||
|
|
|
@ -8,5 +8,6 @@ dependencies {
|
|||
implementation project(':brouter-util')
|
||||
implementation project(':brouter-expressions')
|
||||
implementation project(':brouter-codec')
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
|
||||
}
|
||||
|
|
|
@ -711,6 +711,15 @@ public final class OsmTrack
|
|||
|
||||
public List<String> iternity;
|
||||
|
||||
public void writeJson( String filename ) throws Exception
|
||||
{
|
||||
BufferedWriter bw = new BufferedWriter( new FileWriter( filename ) );
|
||||
|
||||
bw.write( formatAsGeoJson() );
|
||||
bw.close();
|
||||
}
|
||||
|
||||
|
||||
public String formatAsGeoJson()
|
||||
{
|
||||
int turnInstructionMode = voiceHints != null ? voiceHints.turnInstructionMode : 0;
|
||||
|
|
|
@ -5,4 +5,5 @@ plugins {
|
|||
dependencies {
|
||||
implementation project(':brouter-util')
|
||||
implementation project(':brouter-codec')
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ public class EncodeDecodeTest
|
|||
{
|
||||
URL testpurl = this.getClass().getResource( "/dummy.txt" );
|
||||
File workingDir = new File(testpurl.getFile()).getParentFile();
|
||||
File profileDir = new File( workingDir, "/../../../misc/profiles2" );
|
||||
File profileDir = new File( workingDir, "/../../../../misc/profiles2" );
|
||||
File lookupFile = new File( profileDir, "lookups.dat" );
|
||||
|
||||
// read lookup.dat + trekking.brf
|
||||
|
|
|
@ -2,15 +2,25 @@ plugins {
|
|||
id 'application'
|
||||
}
|
||||
|
||||
version = '1.6.1'
|
||||
|
||||
application {
|
||||
// Gradles 'application' plugin requires one main class; since we have multiple ones, just specify
|
||||
// one of them, since the applications won't be run from gradle anyways.
|
||||
mainClassName = 'btools.mapcreator.PosUnifier'
|
||||
mainClass.set('btools.mapcreator.PosUnifier')
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes "Main-Class": getMainClass()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':brouter-util')
|
||||
implementation project(':brouter-codec')
|
||||
implementation project(':brouter-util')
|
||||
implementation project(':brouter-expressions')
|
||||
implementation('junit:junit:4.13')
|
||||
|
||||
testImplementation('junit:junit:4.13.1')
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ public class MapcreatorTest
|
|||
Assert.assertTrue( "test-osm-map dreieich.osm not found", mapurl != null );
|
||||
File mapFile = new File(mapurl.getFile());
|
||||
File workingDir = mapFile.getParentFile();
|
||||
File profileDir = new File( workingDir, "/../../../misc/profiles2" );
|
||||
File profileDir = new File( workingDir, "/../../../../misc/profiles2" );
|
||||
File tmpdir = new File( workingDir, "tmp" );
|
||||
tmpdir.mkdir();
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ plugins {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation project(':brouter-util')
|
||||
implementation project(':brouter-codec')
|
||||
implementation project(':brouter-expressions')
|
||||
|
|
|
@ -3,32 +3,78 @@ plugins {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
|
||||
defaultConfig {
|
||||
applicationId "btools.routingapp"
|
||||
minSdkVersion 10
|
||||
targetSdkVersion 29
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 30
|
||||
versionCode 41
|
||||
versionName "1.6.1"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
setProperty("archivesBaseName","BRouterApp." + defaultConfig.versionName)
|
||||
|
||||
//testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
if(project.hasProperty("RELEASE_STORE_FILE")) {
|
||||
signingConfigs {
|
||||
// this uses a file ~/.gradle/gradle.properties
|
||||
// with content:
|
||||
// RELEASE_STORE_FILE={path to your keystore}
|
||||
// RELEASE_STORE_PASSWORD=*****
|
||||
// RELEASE_KEY_ALIAS=*****
|
||||
// RELEASE_KEY_PASSWORD=*****
|
||||
//
|
||||
release {
|
||||
// enable signingConfig in buildTypes to get a signed apk file
|
||||
storeFile file(RELEASE_STORE_FILE)
|
||||
storePassword RELEASE_STORE_PASSWORD
|
||||
keyAlias RELEASE_KEY_ALIAS
|
||||
keyPassword RELEASE_KEY_PASSWORD
|
||||
|
||||
// Optional, specify signing versions used
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
debuggable false
|
||||
if(project.hasProperty("RELEASE_STORE_FILE")) {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
debug {
|
||||
minifyEnabled false
|
||||
debuggable true
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
checkReleaseBuilds false //added this line to the build.gradle under the /android/app/build.gradle
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.3.0'
|
||||
|
||||
implementation project(':brouter-mapaccess')
|
||||
implementation project(':brouter-core')
|
||||
implementation project(':brouter-expressions')
|
||||
implementation project(':brouter-util')
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,9 @@ import java.io.BufferedWriter;
|
|||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import android.os.Bundle;
|
||||
import btools.router.OsmNodeNamed;
|
||||
|
@ -16,6 +18,10 @@ import btools.router.RoutingEngine;
|
|||
|
||||
public class BRouterWorker
|
||||
{
|
||||
private static final int OUTPUT_FORMAT_GPX = 0;
|
||||
private static final int OUTPUT_FORMAT_KML = 1;
|
||||
private static final int OUTPUT_FORMAT_JSON = 2;
|
||||
|
||||
public String baseDir;
|
||||
public String segmentDir;
|
||||
public String profileName;
|
||||
|
@ -65,6 +71,22 @@ public class BRouterWorker
|
|||
{
|
||||
rc.startDirection = Integer.valueOf( params.getInt( "direction" ) );
|
||||
}
|
||||
if (params.containsKey( "extraParams" )) { // add user params
|
||||
String extraParams = params.getString("extraParams");
|
||||
if (rc.keyValues == null) rc.keyValues = new HashMap<String,String>();
|
||||
StringTokenizer tk = new StringTokenizer( extraParams, "?&" );
|
||||
while( tk.hasMoreTokens() ) {
|
||||
String t = tk.nextToken();
|
||||
StringTokenizer tk2 = new StringTokenizer( t, "=" );
|
||||
if ( tk2.hasMoreTokens() ) {
|
||||
String key = tk2.nextToken();
|
||||
if ( tk2.hasMoreTokens() ) {
|
||||
String value = tk2.nextToken();
|
||||
rc.keyValues.put( key, value );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
readNogos( params ); // add interface provided nogos
|
||||
RoutingContext.prepareNogoPoints( nogoList );
|
||||
|
@ -99,20 +121,33 @@ public class BRouterWorker
|
|||
}
|
||||
|
||||
String format = params.getString("trackFormat");
|
||||
boolean writeKml = format != null && "kml".equals( format );
|
||||
int writeFromat = OUTPUT_FORMAT_GPX;
|
||||
if (format != null) {
|
||||
if ("kml".equals(format)) writeFromat = OUTPUT_FORMAT_KML;
|
||||
if ("json".equals(format)) writeFromat = OUTPUT_FORMAT_JSON;
|
||||
}
|
||||
|
||||
OsmTrack track = cr.getFoundTrack();
|
||||
if ( track != null )
|
||||
{
|
||||
if ( pathToFileResult == null )
|
||||
{
|
||||
if ( writeKml ) return track.formatAsKml();
|
||||
return track.formatAsGpx();
|
||||
switch ( writeFromat ) {
|
||||
case OUTPUT_FORMAT_GPX: return track.formatAsGpx();
|
||||
case OUTPUT_FORMAT_KML: return track.formatAsKml();
|
||||
case OUTPUT_FORMAT_JSON: return track.formatAsGeoJson();
|
||||
default: return track.formatAsGpx();
|
||||
}
|
||||
|
||||
}
|
||||
try
|
||||
{
|
||||
if ( writeKml ) track.writeKml(pathToFileResult);
|
||||
else track.writeGpx(pathToFileResult);
|
||||
switch ( writeFromat ) {
|
||||
case OUTPUT_FORMAT_GPX: track.writeGpx(pathToFileResult); break;
|
||||
case OUTPUT_FORMAT_KML: track.writeKml(pathToFileResult); break;
|
||||
case OUTPUT_FORMAT_JSON: track.writeJson(pathToFileResult); break;
|
||||
default: track.writeGpx(pathToFileResult); break;
|
||||
}
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
|
|
|
@ -2,19 +2,23 @@ plugins {
|
|||
id 'application'
|
||||
}
|
||||
|
||||
version = '1.6.1'
|
||||
|
||||
application {
|
||||
mainClassName = 'btools.server.BRouter'
|
||||
mainClass.set('btools.server.BRouter')
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes "Main-Class": "$mainClassName"
|
||||
attributes "Main-Class": getMainClass()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation('junit:junit:4.13')
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
|
||||
implementation project(':brouter-util')
|
||||
implementation project(':brouter-core')
|
||||
implementation project(':brouter-mapaccess')
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ public class IntegrityCheckTest
|
|||
File resultfile = new File( resulturl.getFile() );
|
||||
workingDir = resultfile.getParentFile();
|
||||
|
||||
File segmentDir = new File( workingDir, "/../../../brouter-map-creator/target/test-classes/tmp/segments" );
|
||||
File segmentDir = new File( workingDir, "/../../../../brouter-map-creator/build/resources/test/tmp/segments" );
|
||||
File[] files = segmentDir.listFiles();
|
||||
|
||||
for ( File f : files )
|
||||
|
|
|
@ -61,13 +61,13 @@ public class RouterTest
|
|||
wplist.add( n );
|
||||
|
||||
RoutingContext rctx = new RoutingContext();
|
||||
rctx.localFunction = wd + "/../../../misc/profiles2/trekking.brf";
|
||||
rctx.localFunction = wd + "/../../../../misc/profiles2/trekking.brf";
|
||||
// c.setAlternativeIdx( 1 );
|
||||
|
||||
RoutingEngine re = new RoutingEngine(
|
||||
wd + "/" + trackname,
|
||||
wd + "/" + trackname,
|
||||
wd + "/../../../brouter-map-creator/target/test-classes/tmp/segments", wplist, rctx );
|
||||
wd + "/../../../../brouter-map-creator/build/resources/test/tmp/segments", wplist, rctx );
|
||||
re.doRun( 0 );
|
||||
|
||||
return re.getErrorMessage();
|
||||
|
|
|
@ -3,5 +3,5 @@ plugins {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
testImplementation('junit:junit:4.13.1')
|
||||
}
|
||||
|
|
|
@ -3,12 +3,11 @@
|
|||
buildscript {
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.6.3'
|
||||
classpath 'com.android.tools.build:gradle:4.1.3'
|
||||
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
|
@ -18,9 +17,8 @@ buildscript {
|
|||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip
|
||||
|
|
Loading…
Reference in a new issue