Gradle update.
This commit is contained in:
		@@ -21,7 +21,7 @@ DerivedData/
 | 
				
			|||||||
build
 | 
					build
 | 
				
			||||||
.gradle
 | 
					.gradle
 | 
				
			||||||
local.properties
 | 
					local.properties
 | 
				
			||||||
/gradle/builds
 | 
					/builds
 | 
				
			||||||
/platform-android/.externalNativeBuild
 | 
					/platform-android/.externalNativeBuild
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Git
 | 
					# Git
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -22,5 +22,7 @@ DerivedData/
 | 
				
			|||||||
build
 | 
					build
 | 
				
			||||||
.gradle
 | 
					.gradle
 | 
				
			||||||
local.properties
 | 
					local.properties
 | 
				
			||||||
/gradle/builds
 | 
					/builds
 | 
				
			||||||
/platform-android/.externalNativeBuild
 | 
					/platform-android/.externalNativeBuild
 | 
				
			||||||
 | 
					.cxx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ build_project:
 | 
				
			|||||||
    - "( ./lib/bin/build_libsodium-macos clean && ./lib/bin/build_libsodium-macos )"
 | 
					    - "( ./lib/bin/build_libsodium-macos clean && ./lib/bin/build_libsodium-macos )"
 | 
				
			||||||
    - "( ./lib/bin/build_libjson-c-macos clean && ./lib/bin/build_libjson-c-macos )"
 | 
					    - "( ./lib/bin/build_libjson-c-macos clean && ./lib/bin/build_libjson-c-macos )"
 | 
				
			||||||
    - "( cd ./platform-independent/c/cli && ./clean && targets=all ./build && ./mpw-tests && ./mpw-cli-tests )"
 | 
					    - "( cd ./platform-independent/c/cli && ./clean && targets=all ./build && ./mpw-tests && ./mpw-cli-tests )"
 | 
				
			||||||
    - "( export JAVA_HOME=$(java_home -Fv 10 || java_home -Fv 9* ) && cd ./gradle && ./gradlew --stacktrace clean test )"
 | 
					    - "( export JAVA_HOME=$(java_home -Fv 10 || java_home -Fv 9* ) && ./gradlew --stacktrace clean test )"
 | 
				
			||||||
    - "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword iOS' -sdk iphonesimulator clean build )"
 | 
					    - "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword iOS' -sdk iphonesimulator clean build )"
 | 
				
			||||||
    - "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword macOS' clean build )"
 | 
					    - "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword macOS' clean build )"
 | 
				
			||||||
  tags:
 | 
					  tags:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ buildscript {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    dependencies {
 | 
					    dependencies {
 | 
				
			||||||
        classpath group: 'com.android.tools.build', name: 'gradle', version: '3.1.0'
 | 
					        classpath group: 'com.android.tools.build', name: 'gradle', version: '3.5.0'
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										43
									
								
								gradle/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										43
									
								
								gradle/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							@@ -1,43 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
<project version="4">
 | 
					 | 
				
			||||||
  <component name="NullableNotNullManager">
 | 
					 | 
				
			||||||
    <option name="myDefaultNullable" value="javax.annotation.Nullable" />
 | 
					 | 
				
			||||||
    <option name="myDefaultNotNull" value="javax.annotation.Nonnull" />
 | 
					 | 
				
			||||||
    <option name="myNullables">
 | 
					 | 
				
			||||||
      <value>
 | 
					 | 
				
			||||||
        <list size="9">
 | 
					 | 
				
			||||||
          <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
 | 
					 | 
				
			||||||
          <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
 | 
					 | 
				
			||||||
          <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
 | 
					 | 
				
			||||||
          <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
 | 
					 | 
				
			||||||
          <item index="4" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
 | 
					 | 
				
			||||||
          <item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
 | 
					 | 
				
			||||||
          <item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
 | 
					 | 
				
			||||||
          <item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
 | 
					 | 
				
			||||||
          <item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
 | 
					 | 
				
			||||||
        </list>
 | 
					 | 
				
			||||||
      </value>
 | 
					 | 
				
			||||||
    </option>
 | 
					 | 
				
			||||||
    <option name="myNotNulls">
 | 
					 | 
				
			||||||
      <value>
 | 
					 | 
				
			||||||
        <list size="9">
 | 
					 | 
				
			||||||
          <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
 | 
					 | 
				
			||||||
          <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
 | 
					 | 
				
			||||||
          <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
 | 
					 | 
				
			||||||
          <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
 | 
					 | 
				
			||||||
          <item index="4" class="java.lang.String" itemvalue="javax.validation.constraints.NotNull" />
 | 
					 | 
				
			||||||
          <item index="5" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
 | 
					 | 
				
			||||||
          <item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
 | 
					 | 
				
			||||||
          <item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
 | 
					 | 
				
			||||||
          <item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
 | 
					 | 
				
			||||||
        </list>
 | 
					 | 
				
			||||||
      </value>
 | 
					 | 
				
			||||||
    </option>
 | 
					 | 
				
			||||||
  </component>
 | 
					 | 
				
			||||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="10" project-jdk-type="JavaSDK">
 | 
					 | 
				
			||||||
    <output url="file://$PROJECT_DIR$/build/classes" />
 | 
					 | 
				
			||||||
  </component>
 | 
					 | 
				
			||||||
  <component name="ProjectType">
 | 
					 | 
				
			||||||
    <option name="id" value="Android" />
 | 
					 | 
				
			||||||
  </component>
 | 
					 | 
				
			||||||
</project>
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
<root>
 | 
					 | 
				
			||||||
    <item name='com.google.common.base.Preconditions T checkNotNull(T, java.lang.Object) 1'>
 | 
					 | 
				
			||||||
        <annotation name='org.jetbrains.annotations.NonNls' />
 | 
					 | 
				
			||||||
    </item>
 | 
					 | 
				
			||||||
</root>
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
<root>
 | 
					 | 
				
			||||||
    <item name='com.google.common.io.Resources java.net.URL getResource(java.lang.String) 0'>
 | 
					 | 
				
			||||||
        <annotation name='org.jetbrains.annotations.NonNls' />
 | 
					 | 
				
			||||||
    </item>
 | 
					 | 
				
			||||||
</root>
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
<root>
 | 
					 | 
				
			||||||
    <item name='org.testng.Assert void assertEquals(java.lang.String, java.lang.String, java.lang.String) 2'>
 | 
					 | 
				
			||||||
        <annotation name='org.jetbrains.annotations.NonNls' />
 | 
					 | 
				
			||||||
    </item>
 | 
					 | 
				
			||||||
</root>
 | 
					 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								gradle/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gradle/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -1,5 +1,6 @@
 | 
				
			|||||||
 | 
					#Mon Sep 23 12:55:35 EDT 2019
 | 
				
			||||||
distributionBase=GRADLE_USER_HOME
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
 | 
					 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
 | 
				
			||||||
							
								
								
									
										22
									
								
								gradle/gradlew → gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								gradle/gradlew → gradlew
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,21 @@
 | 
				
			|||||||
#!/usr/bin/env sh
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright 2015 the original author or authors.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					# you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					# You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					# See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##############################################################################
 | 
					##############################################################################
 | 
				
			||||||
##
 | 
					##
 | 
				
			||||||
##  Gradle start up script for UN*X
 | 
					##  Gradle start up script for UN*X
 | 
				
			||||||
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
 | 
				
			|||||||
APP_BASE_NAME=`basename "$0"`
 | 
					APP_BASE_NAME=`basename "$0"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
DEFAULT_JVM_OPTS=""
 | 
					DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
					# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
				
			||||||
MAX_FD="maximum"
 | 
					MAX_FD="maximum"
 | 
				
			||||||
@@ -109,8 +125,8 @@ if $darwin; then
 | 
				
			|||||||
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 | 
					    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# For Cygwin, switch paths to Windows format before running java
 | 
					# For Cygwin or MSYS, switch paths to Windows format before running java
 | 
				
			||||||
if $cygwin ; then
 | 
					if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
 | 
				
			||||||
    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
 | 
					    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
 | 
				
			||||||
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
 | 
					    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
 | 
				
			||||||
    JAVACMD=`cygpath --unix "$JAVACMD"`
 | 
					    JAVACMD=`cygpath --unix "$JAVACMD"`
 | 
				
			||||||
							
								
								
									
										18
									
								
								gradle/gradlew.bat → gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								gradle/gradlew.bat → gradlew.bat
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +1,19 @@
 | 
				
			|||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem Copyright 2015 the original author or authors.
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					@rem you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					@rem You may obtain a copy of the License at
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					@rem Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					@rem distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					@rem See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					@rem limitations under the License.
 | 
				
			||||||
 | 
					@rem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@if "%DEBUG%" == "" @echo off
 | 
					@if "%DEBUG%" == "" @echo off
 | 
				
			||||||
@rem ##########################################################################
 | 
					@rem ##########################################################################
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
@@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0
 | 
				
			|||||||
set APP_HOME=%DIRNAME%
 | 
					set APP_HOME=%DIRNAME%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
set DEFAULT_JVM_OPTS=
 | 
					set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Find java.exe
 | 
					@rem Find java.exe
 | 
				
			||||||
if defined JAVA_HOME goto findJavaFromJavaHome
 | 
					if defined JAVA_HOME goto findJavaFromJavaHome
 | 
				
			||||||
@@ -1,13 +1,15 @@
 | 
				
			|||||||
apply plugin: 'com.android.application'
 | 
					plugins {
 | 
				
			||||||
 | 
					    id 'com.android.application'
 | 
				
			||||||
 | 
					    id 'com.github.spotbugs' version '2.0.0'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
android {
 | 
					android {
 | 
				
			||||||
    compileSdkVersion 25
 | 
					    compileSdkVersion 28
 | 
				
			||||||
    buildToolsVersion '27.0.3'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    defaultConfig {
 | 
					    defaultConfig {
 | 
				
			||||||
        applicationId 'com.lyndir.masterpassword'
 | 
					        applicationId 'com.lyndir.masterpassword'
 | 
				
			||||||
        minSdkVersion 19
 | 
					        minSdkVersion 24
 | 
				
			||||||
        targetSdkVersion 25
 | 
					        targetSdkVersion 28
 | 
				
			||||||
        versionCode 20701
 | 
					        versionCode 20701
 | 
				
			||||||
        versionName '2.7.1'
 | 
					        versionName '2.7.1'
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -22,8 +24,8 @@ android {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    sourceSets {
 | 
					    sourceSets {
 | 
				
			||||||
        main {
 | 
					        main {
 | 
				
			||||||
            jniLibs.srcDirs "$rootDir/../lib/libsodium/build-android~/out/lib",
 | 
					            jniLibs.srcDirs "$rootDir/lib/libsodium/build-android~/out/lib",
 | 
				
			||||||
                            "$rootDir/../lib/libjson-c/build-android~/out/lib"
 | 
					                            "$rootDir/lib/libjson-c/build-android~/out/lib"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,28 +52,28 @@ dependencies {
 | 
				
			|||||||
    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
					    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    implementation group: 'org.slf4j', name: 'slf4j-android', version: '1.7.13-underscore'
 | 
					    implementation group: 'org.slf4j', name: 'slf4j-android', version: '1.7.13-underscore'
 | 
				
			||||||
    implementation group: 'com.jakewharton', name: 'butterknife', version: '8.5.1'
 | 
					    implementation group: 'com.jakewharton', name: 'butterknife', version: '10.2.0'
 | 
				
			||||||
    annotationProcessor group: 'com.jakewharton', name: 'butterknife-compiler', version: '8.5.1'
 | 
					    annotationProcessor group: 'com.jakewharton', name: 'butterknife-compiler', version: '10.2.0'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
preBuild {
 | 
					preBuild {
 | 
				
			||||||
    dependsOn task( type: Exec, 'build_libsodium-android', {
 | 
					    dependsOn task( type: Exec, 'build_libsodium-android', {
 | 
				
			||||||
        commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-android"
 | 
					        commandLine 'bash', "$rootDir/lib/bin/build_libsodium-android"
 | 
				
			||||||
        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
					        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
				
			||||||
    } )
 | 
					    } )
 | 
				
			||||||
    dependsOn task( type: Exec, 'build_libjson-c-android', {
 | 
					    dependsOn task( type: Exec, 'build_libjson-c-android', {
 | 
				
			||||||
        commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-android"
 | 
					        commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-android"
 | 
				
			||||||
        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
					        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
				
			||||||
    } )
 | 
					    } )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean {
 | 
					clean {
 | 
				
			||||||
    dependsOn task( type: Exec, 'clean_libsodium-android', {
 | 
					    dependsOn task( type: Exec, 'clean_libsodium-android', {
 | 
				
			||||||
        commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-android", 'clean'
 | 
					        commandLine 'bash', "$rootDir/lib/bin/build_libsodium-android", 'clean'
 | 
				
			||||||
        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
					        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
				
			||||||
    } )
 | 
					    } )
 | 
				
			||||||
    dependsOn task( type: Exec, 'clean_libjson-c-android', {
 | 
					    dependsOn task( type: Exec, 'clean_libjson-c-android', {
 | 
				
			||||||
        commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-android", 'clean'
 | 
					        commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-android", 'clean'
 | 
				
			||||||
        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
					        environment 'ANDROID_NDK_HOME', android.ndkDirectory
 | 
				
			||||||
    } )
 | 
					    } )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,7 +75,7 @@
 | 
				
			|||||||
			buildPhases = (
 | 
								buildPhases = (
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			buildToolPath = gradle;
 | 
								buildToolPath = gradle;
 | 
				
			||||||
			buildWorkingDirectory = /Users/lhunath/Documents/workspace/lyndir/MasterPassword/gradle;
 | 
								buildWorkingDirectory = /Users/lhunath/Documents/workspace/lyndir/MasterPassword;
 | 
				
			||||||
			dependencies = (
 | 
								dependencies = (
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			name = "MasterPassword-JNI";
 | 
								name = "MasterPassword-JNI";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,8 @@ import org.gradle.internal.jvm.Jvm
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
    id 'cpp-library'
 | 
					 | 
				
			||||||
    id 'base'
 | 
					    id 'base'
 | 
				
			||||||
 | 
					    id 'cpp-library'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
description = 'Master Password Algorithm Implementation'
 | 
					description = 'Master Password Algorithm Implementation'
 | 
				
			||||||
@@ -16,7 +16,7 @@ artifacts {
 | 
				
			|||||||
        components.withType( ComponentWithRuntimeFile ) {
 | 
					        components.withType( ComponentWithRuntimeFile ) {
 | 
				
			||||||
            if (optimized)
 | 
					            if (optimized)
 | 
				
			||||||
                from runtimeFile, {
 | 
					                from runtimeFile, {
 | 
				
			||||||
                    into standardOperatingSystem( targetPlatform ) + '/' + standardArchitecture( targetPlatform )
 | 
					                    into targetMachine.getOperatingSystemFamily().getName() + '/' + targetMachine.getArchitecture().getName()
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -25,6 +25,7 @@ artifacts {
 | 
				
			|||||||
library {
 | 
					library {
 | 
				
			||||||
    baseName.set( 'mpw' )
 | 
					    baseName.set( 'mpw' )
 | 
				
			||||||
    linkage.set( [Linkage.SHARED] )
 | 
					    linkage.set( [Linkage.SHARED] )
 | 
				
			||||||
 | 
					    source.from fileTree( 'src' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Reconfigure the toolchain from C++ to C.
 | 
					    // Reconfigure the toolchain from C++ to C.
 | 
				
			||||||
    toolChains {
 | 
					    toolChains {
 | 
				
			||||||
@@ -42,75 +43,43 @@ library {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Cross-compile for these host platforms.
 | 
					    // Cross-compile for these host platforms.
 | 
				
			||||||
    // TODO: Cross-compiling, blocked by: https://github.com/gradle/gradle-native/issues/169 - CppLibraryPlugin.java:163
 | 
					    // TODO: Cross-compiling, blocked by: https://github.com/gradle/gradle-native/issues/169 - CppLibraryPlugin.java:163
 | 
				
			||||||
    operatingSystems.set( [objects.named( OperatingSystemFamily, OperatingSystemFamily.LINUX ),
 | 
					//    operatingSystems.set( [objects.named( OperatingSystemFamily, OperatingSystemFamily.LINUX ),
 | 
				
			||||||
                           objects.named( OperatingSystemFamily, OperatingSystemFamily.MAC_OS ),
 | 
					//                           objects.named( OperatingSystemFamily, OperatingSystemFamily.MAC_OS ),
 | 
				
			||||||
                           objects.named( OperatingSystemFamily, OperatingSystemFamily.WINDOWS )] )
 | 
					//                           objects.named( OperatingSystemFamily, OperatingSystemFamily.WINDOWS )] )
 | 
				
			||||||
 | 
					    targetMachines.set( [
 | 
				
			||||||
 | 
					            machines.linux.x86_64,
 | 
				
			||||||
 | 
					            machines.windows.x86, machines.windows.x86_64,
 | 
				
			||||||
 | 
					            machines.macOS.x86_64
 | 
				
			||||||
 | 
					    ] )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    components.withType( CppComponent ) {
 | 
					    components.withType( CppComponent ) {
 | 
				
			||||||
        cppSource.from fileTree( 'src' )
 | 
					        // JDK for JNI support.
 | 
				
			||||||
 | 
					        privateHeaders.from files( new File( Jvm.current().javaHome, 'include' ) ) { first().eachDir { from it } }
 | 
				
			||||||
        privateHeaders {
 | 
					 | 
				
			||||||
            // JDK for JNI support.
 | 
					 | 
				
			||||||
            from files( new File( Jvm.current().javaHome, 'include' ) ) { first().eachDir { from it } }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        binaries.whenElementFinalized {
 | 
					        binaries.whenElementFinalized {
 | 
				
			||||||
            project.dependencies {
 | 
					            project.dependencies {
 | 
				
			||||||
                def system = standardOperatingSystem( targetPlatform )
 | 
					                def system = targetMachine.getOperatingSystemFamily().getName()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // libsodium
 | 
					                // libsodium
 | 
				
			||||||
                archive.dependsOn project.tasks.maybeCreate( "build_libsodium-${system}", Exec ).configure {
 | 
					                archive.dependsOn project.tasks.maybeCreate( "build_libsodium-${system}", Exec ).configure {
 | 
				
			||||||
                    commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-${system}"
 | 
					                    commandLine 'bash', "$rootDir/lib/bin/build_libsodium-${system}"
 | 
				
			||||||
                    privateHeaders.from "$rootDir/../lib/libsodium/build-${system}~/out/include"
 | 
					                    privateHeaders.from "$rootDir/lib/libsodium/build-${system}~/out/include"
 | 
				
			||||||
                    add( linkLibraries.name, fileTree( "$rootDir/../lib/libsodium/build-${system}~/out/lib" ) )
 | 
					                    add( linkLibraries.name, fileTree( "$rootDir/lib/libsodium/build-${system}~/out/lib" ) )
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                clean.dependsOn project.tasks.maybeCreate( "clean_libsodium-${system}", Exec ).configure {
 | 
					                clean.dependsOn project.tasks.maybeCreate( "clean_libsodium-${system}", Exec ).configure {
 | 
				
			||||||
                    commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-${system}", 'clean'
 | 
					                    commandLine 'bash', "$rootDir/lib/bin/build_libsodium-${system}", 'clean'
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // libjson-c
 | 
					                // libjson-c
 | 
				
			||||||
                /*archive.dependsOn project.tasks.maybeCreate( "build_libjson-c-${system}", Exec ).configure {
 | 
					                /*archive.dependsOn project.tasks.maybeCreate( "build_libjson-c-${system}", Exec ).configure {
 | 
				
			||||||
                    commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-${system}"
 | 
					                    commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-${system}"
 | 
				
			||||||
                    privateHeaders.from "$rootDir/../lib/libjson-c/build-${system}~/out/include"
 | 
					                    privateHeaders.from "$rootDir/lib/libjson-c/build-${system}~/out/include"
 | 
				
			||||||
                    add( linkLibraries.name, fileTree( "$rootDir/../lib/libjson-c/build-${system}~/out/lib" ) )
 | 
					                    add( linkLibraries.name, fileTree( "$rootDir/lib/libjson-c/build-${system}~/out/lib" ) )
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                clean.dependsOn project.tasks.maybeCreate( "clean_libjson-c-${system}", Exec ).configure {
 | 
					                clean.dependsOn project.tasks.maybeCreate( "clean_libjson-c-${system}", Exec ).configure {
 | 
				
			||||||
                    commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-${system}", 'clean'
 | 
					                    commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-${system}", 'clean'
 | 
				
			||||||
                }*/
 | 
					                }*/
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
static String standardOperatingSystem(NativePlatform platform) {
 | 
					 | 
				
			||||||
    OperatingSystem os = platform.getOperatingSystem()
 | 
					 | 
				
			||||||
    if (os.isWindows())
 | 
					 | 
				
			||||||
        return OperatingSystemFamily.WINDOWS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else if (os.isMacOsX())
 | 
					 | 
				
			||||||
        return OperatingSystemFamily.MAC_OS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else if (os.isLinux())
 | 
					 | 
				
			||||||
        return OperatingSystemFamily.LINUX
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Other systems will need to use a Linux compatibility layer.
 | 
					 | 
				
			||||||
    return OperatingSystemFamily.LINUX
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static String standardArchitecture(NativePlatform platform) {
 | 
					 | 
				
			||||||
    Architecture arch = platform.getArchitecture()
 | 
					 | 
				
			||||||
    if (arch.isArm())
 | 
					 | 
				
			||||||
        return 'arm'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else if (arch.name.toLowerCase( Locale.ROOT ).startsWith( 'arm' ))
 | 
					 | 
				
			||||||
        return 'arm64'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else if (arch.isAmd64())
 | 
					 | 
				
			||||||
        return 'x86_64'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else if (arch.isI386())
 | 
					 | 
				
			||||||
        return 'x86'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Other systems will need to be compatible with the x86 architecture.
 | 
					 | 
				
			||||||
    return 'x86'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
    id 'java-library'
 | 
					    id 'java-library'
 | 
				
			||||||
 | 
					    id 'com.github.spotbugs' version '2.0.0'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
description = 'Master Password Algorithm Implementation'
 | 
					description = 'Master Password Algorithm Implementation'
 | 
				
			||||||
@@ -16,10 +17,8 @@ configurations {
 | 
				
			|||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
					    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.5'
 | 
					    api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.8'
 | 
				
			||||||
    api group: 'org.jetbrains', name: 'annotations', version: '13.0'
 | 
					    api group: 'org.jetbrains', name: 'annotations', version: '16.0.2'
 | 
				
			||||||
    api group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
 | 
					 | 
				
			||||||
    api group: 'com.google.code.findbugs', name: 'findbugs-annotations', version: '3.0.1'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    lib project( path: ':masterpassword-core', configuration: 'default' )
 | 
					    lib project( path: ':masterpassword-core', configuration: 'default' )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -199,5 +199,11 @@ public final class Native {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return x86;
 | 
					            return x86;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public String toString() {
 | 
				
			||||||
 | 
					            return name().replace('_', '-' );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,8 @@
 | 
				
			|||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
    id 'java'
 | 
					    id 'java'
 | 
				
			||||||
    id 'application'
 | 
					    id 'application'
 | 
				
			||||||
    id 'com.github.johnrengelman.shadow' version '2.0.4'
 | 
					    id 'com.github.spotbugs' version '2.0.0'
 | 
				
			||||||
 | 
					    id 'com.github.johnrengelman.shadow' version '5.1.0'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
description = 'Master Password GUI'
 | 
					description = 'Master Password GUI'
 | 
				
			||||||
@@ -31,7 +32,7 @@ shadowJar {
 | 
				
			|||||||
                         storepass: System.getenv( 'STORE_PW' ),
 | 
					                         storepass: System.getenv( 'STORE_PW' ),
 | 
				
			||||||
                         keypass: System.getenv( 'KEY_PW_DESKTOP' ),
 | 
					                         keypass: System.getenv( 'KEY_PW_DESKTOP' ),
 | 
				
			||||||
                         preservelastmodified: 'true',
 | 
					                         preservelastmodified: 'true',
 | 
				
			||||||
                         signedJar: "${rootDir}/../public/site/${project.name}-${project.version}.jar" )
 | 
					                         signedJar: "${rootDir}/public/site/${project.name}-${project.version}.jar" )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,22 +1,19 @@
 | 
				
			|||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
    id 'java-library'
 | 
					    id 'java-library'
 | 
				
			||||||
    id 'net.ltgt.apt' version '0.9'
 | 
					    id 'com.github.spotbugs' version '2.0.0'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
description = 'Master Password Site Model'
 | 
					description = 'Master Password Site Model'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
					    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
				
			||||||
    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.5'
 | 
					    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.8'
 | 
				
			||||||
 | 
					    implementation 'com.github.spotbugs:spotbugs-annotations:4.0.0-beta4'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    api project( ':masterpassword-algorithm' )
 | 
					    api project( ':masterpassword-algorithm' )
 | 
				
			||||||
    api group: 'joda-time', name: 'joda-time', version: '2.4'
 | 
					    api group: 'joda-time', name: 'joda-time', version: '2.10'
 | 
				
			||||||
    api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.5'
 | 
					    api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.8'
 | 
				
			||||||
    api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.5'
 | 
					    api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.8'
 | 
				
			||||||
    api group: 'com.google.code.findbugs', name: 'findbugs-annotations', version: '3.0.1'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    compileOnly group: 'com.google.auto.value', name: 'auto-value', version: '1.2'
 | 
					 | 
				
			||||||
    apt group: 'com.google.auto.value', name: 'auto-value', version: '1.2'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    testImplementation group: 'org.testng', name: 'testng', version: '6.8.5'
 | 
					    testImplementation group: 'org.testng', name: 'testng', version: '6.8.5'
 | 
				
			||||||
    testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'
 | 
					    testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ public abstract class Changeable {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        changeExecutor.submit( () -> {
 | 
					        changeExecutor.submit( () -> {
 | 
				
			||||||
            synchronized (changeExecutor) {
 | 
					            synchronized (mutex) {
 | 
				
			||||||
                if (grouping != Grouping.APPLY)
 | 
					                if (grouping != Grouping.APPLY)
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                changed = false;
 | 
					                changed = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,17 +1,21 @@
 | 
				
			|||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
    id 'java'
 | 
					    id 'java'
 | 
				
			||||||
 | 
					    id 'com.github.spotbugs' version '2.0.0'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
description = 'Master Password Test Suite'
 | 
					description = 'Master Password Test Suite'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
					    implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
 | 
				
			||||||
 | 
					    implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    implementation project( ':masterpassword-algorithm' )
 | 
					    implementation project( ':masterpassword-algorithm' )
 | 
				
			||||||
    implementation project( ':masterpassword-model' )
 | 
					    implementation project( ':masterpassword-model' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    testImplementation group: 'org.testng', name: 'testng', version: '6.8.5'
 | 
					    testImplementation group: 'org.testng', name: 'testng', version: '6.8.5'
 | 
				
			||||||
    testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'
 | 
					    testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    runtime group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.1'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test.useTestNG()
 | 
					test.useTestNG()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,23 +5,23 @@ def localFile = file( 'local.properties' )
 | 
				
			|||||||
localFile.exists() && local.load( localFile.newDataInputStream() )
 | 
					localFile.exists() && local.load( localFile.newDataInputStream() )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include 'masterpassword-core'
 | 
					include 'masterpassword-core'
 | 
				
			||||||
project( ':masterpassword-core' ).projectDir = new File( '../platform-independent/c/core' )
 | 
					project( ':masterpassword-core' ).projectDir = new File( 'platform-independent/c/core' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include 'masterpassword-algorithm'
 | 
					include 'masterpassword-algorithm'
 | 
				
			||||||
project( ':masterpassword-algorithm' ).projectDir = new File( '../platform-independent/java/algorithm' )
 | 
					project( ':masterpassword-algorithm' ).projectDir = new File( 'platform-independent/java/algorithm' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include 'masterpassword-model'
 | 
					include 'masterpassword-model'
 | 
				
			||||||
project( ':masterpassword-model' ).projectDir = new File( '../platform-independent/java/model' )
 | 
					project( ':masterpassword-model' ).projectDir = new File( 'platform-independent/java/model' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include 'masterpassword-tests'
 | 
					include 'masterpassword-tests'
 | 
				
			||||||
project( ':masterpassword-tests' ).projectDir = new File( '../platform-independent/java/tests' )
 | 
					project( ':masterpassword-tests' ).projectDir = new File( 'platform-independent/java/tests' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include 'masterpassword-gui'
 | 
					include 'masterpassword-gui'
 | 
				
			||||||
project( ':masterpassword-gui' ).projectDir = new File( '../platform-independent/java/gui' )
 | 
					project( ':masterpassword-gui' ).projectDir = new File( 'platform-independent/java/gui' )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (local.containsKey( 'sdk.dir' ) && file( local.getProperty( 'sdk.dir' ) ).exists()) {
 | 
					if (local.containsKey( 'sdk.dir' ) && file( local.getProperty( 'sdk.dir' ) ).exists()) {
 | 
				
			||||||
    include 'masterpassword-android'
 | 
					    include 'masterpassword-android'
 | 
				
			||||||
    project( ':masterpassword-android' ).projectDir = new File( '../platform-android' )
 | 
					    project( ':masterpassword-android' ).projectDir = new File( 'platform-android' )
 | 
				
			||||||
} else {
 | 
					} else {
 | 
				
			||||||
    logger.warn( "Skipping masterpassword-android since sdk.dir is not defined in local.properties." )
 | 
					    logger.warn( "Skipping masterpassword-android since sdk.dir is not defined in local.properties." )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user