Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2.6.0 #64

Merged
merged 50 commits into from
Jan 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
b87b6ed
Add support for TLS 1.2 on API 16+
farhanjkhan May 8, 2018
2931d51
Add back final keyword
farhanjkhan May 9, 2018
5bab855
Bumping the minSdkVersion from 15 to 16
farhanjkhan May 9, 2018
f853d84
Merge branch 'next-release' into feature/tls_1_2
arun251 Aug 14, 2018
024a75b
Merge pull request #64 from launchdarkly/feature/tls_1_2
arun251 Aug 14, 2018
ff65ca3
Merge branch 'master' into next-release
arun251 Sep 12, 2018
44eed4a
Circle CI 2.0
nejifresh Sep 25, 2018
ba1fe52
Created new branch for multi-environment sdk feature
torchhound Oct 1, 2018
c47d2d5
Stub out new LDConfig and LDConfig.Builder code for multi-environment.
gavwhela Oct 1, 2018
73e4b98
Added overloaded init method in LDClient for creating secondary insta…
torchhound Oct 2, 2018
3962f10
Added getForMobileKey methods
torchhound Oct 2, 2018
c020ff9
Added LDClient init test for secondary environment, added exception t…
torchhound Oct 2, 2018
1956014
Move primary instance into general instances map. Begin on methods ef…
gavwhela Oct 2, 2018
cf10753
Removed incorrect LDClient test
torchhound Oct 2, 2018
a09191d
Fixed 1 failing test in LDClient, added multi-environment test file, …
torchhound Oct 2, 2018
e318b61
Removed unnecessary ListenableFuture in LDClient init, changed identi…
torchhound Oct 2, 2018
0fbe675
Added setOnlineStatus multi-environment changes
torchhound Oct 3, 2018
afe797a
Moved primaryEnvironmentName to LDConfig, simplifying by removing pri…
gavwhela Oct 6, 2018
babd1cd
Add back in constructor without environment to UserManager
gavwhela Oct 6, 2018
33fd8d7
Specialize HttpFeatureFlagFetcher to the environment, looks like User…
gavwhela Oct 6, 2018
eb93b8c
Added SharedPreferences migration strategy
Oct 6, 2018
43ded05
Merged UserManager changes
Oct 6, 2018
b595b6c
All tests pass, fixed migration strategy to conform to spec, fixed pr…
torchhound Oct 8, 2018
e8ac421
Update StreamUpdateProcessor construct to take an environment for the…
gavwhela Oct 9, 2018
441fa93
Fix issue with LDConfig mobileKeys hashmap creation.
gavwhela Oct 9, 2018
f0b68e6
Combine futures so LDClient init future waits on all online instances…
gavwhela Oct 10, 2018
1a039e1
Propagate IOException on closing instances to caller.
gavwhela Oct 10, 2018
baea3ff
Merge futures for identify call.
gavwhela Oct 10, 2018
fc665cf
Some changes from code review.
gavwhela Oct 11, 2018
783375d
Removed static from instanceId and now old SharedPreferences will onl…
Oct 11, 2018
f82c03f
Fixed instanceId
torchhound Oct 11, 2018
be1dd1c
Updates from PR review.
gavwhela Oct 17, 2018
f647f3b
Merge pull request #83 from launchdarkly/circlecimigrate
arun251 Oct 17, 2018
3dbab83
Merge branch 'master' into next-release
arun251 Oct 25, 2018
a8d4b53
Added version and flagVersion, if available
jamesthacker Nov 6, 2018
f2c456e
refactor(LDClient, LDConfig): changes for PR
torchhound Dec 12, 2018
9215b65
refactor(LDClient): changed isInternetConnected behavior for PR
torchhound Dec 12, 2018
5cce5b8
refactor(LDClient): removed async getForMobileKeys and wait seconds v…
torchhound Dec 12, 2018
f2d1343
Bugfix/timber cleanup (#92)
jamesthacker Jan 12, 2019
081ee16
Merge pull request #91 from launchdarkly/bugfix/ping-event-versions
gavwhela Jan 12, 2019
cac1e27
Fix crash when example app is backgrounded twice.
gwhelanLD Jan 14, 2019
ceaa85a
Merge pull request #93 from launchdarkly/bugfix/example-background-crash
torchhound Jan 15, 2019
84569fe
Merge remote-tracking branch 'remotes/origin/multi-environment' into …
gwhelanLD Jan 16, 2019
cd02ea3
Add security provider update mechanism using Google Play Services to
gwhelanLD Jan 22, 2019
6b135f4
Shared Preferences Fix for Multi Environment (#94)
torchhound Jan 22, 2019
55eef13
Fix edge cases in how multi-environment handles connection changes.
gwhelanLD Jan 22, 2019
562fd56
fix(UserManagerTest.java): incorrect number of arguments to UserManag…
Jan 22, 2019
9edb050
Remove line of testing code accidentally left in and refactor shared
gwhelanLD Jan 22, 2019
34c942a
Final fixes to store migration. Should be fairly future proof.
gwhelanLD Jan 22, 2019
eb16d7b
Update version numbers.
gwhelanLD Jan 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,18 @@


All notable changes to the LaunchDarkly Android SDK will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).

## [2.6.0] - 2019-01-22
### Added
- Support for connecting to multiple environments through LDClient interface.
- Security provider hot patch for devices without support for TLSv1.2 (requires Google Play Services to be successful).
### Changed
- Use Timber formatting instead of String concatenation in logging.
- Replace Log calls with Timber in example app.
### Fixed
- Client now parses and stores flag version information correctly in polling mode, allowing these fields to be included in feature and summary events.
- Prevent example app from permanently closing LDClient on first backgrounding.
### Removed
- Support for Android Ice Cream Sandwich, 4.0.3, API 15
## [2.5.4] - 2018-10-25
### Changed
- Outbound HTTP requests now have an authentication scheme token in `Authorization` request headers
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# LaunchDarkly Android SDK
This library is compatible with Android SDK versions 15 and up (4.0.3 Ice Cream Sandwich)
This library is compatible with Android SDK versions 16 and up (4.1 Jelly Bean)


How to use:
Expand All @@ -8,7 +8,7 @@ Check out the included example app, or follow things here:
1. Declare this dependency:

```
compile 'com.launchdarkly:launchdarkly-android-client:2.5.4'
compile 'com.launchdarkly:launchdarkly-android-client:2.6.0'
```
1. In your application configure and initialize the client:

Expand Down Expand Up @@ -69,7 +69,7 @@ The LaunchDarkly Android SDK defaults to what we have found to be the best combi

This configuration means that you will get near real-time updates for your feature flag values when the app is in the foreground.

###Other Options
### Other Options
If you prefer other options, here they are:

1. Streaming can be disabled in favor of polling updates. To disable streaming call `.setStream(false)` on the `LDConfig.Builder` object.
Expand Down
4 changes: 3 additions & 1 deletion example/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ android {
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.launchdarkly.example"
minSdkVersion 15
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
Expand Down Expand Up @@ -48,5 +48,7 @@ dependencies {
// Comment the previous line and uncomment this one to depend on the published artifact:
// compile 'com.launchdarkly:launchdarkly-android-client:1.0.1'

implementation 'com.jakewharton.timber:timber:4.7.0'

testImplementation 'junit:junit:4.12'
}
Binary file added example/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions example/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
172 changes: 172 additions & 0 deletions example/gradlew
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
#!/usr/bin/env sh

##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

APP_NAME="Gradle"
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.
DEFAULT_JVM_OPTS=""

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn () {
echo "$*"
}

die () {
echo
echo "$*"
echo
exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`

# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option

if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi

# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"

# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi

exec "$JAVACMD" "$@"
84 changes: 84 additions & 0 deletions example/gradlew.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
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.
set DEFAULT_JVM_OPTS=

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega
Loading