Patrons

SharedPreferences wrappers with an encryption package.

License

License

GroupId

GroupId

com.prolificinteractive
ArtifactId

ArtifactId

patrons
Last Version

Last Version

0.1.0
Release Date

Release Date

Type

Type

aar
Description

Description

Patrons
SharedPreferences wrappers with an encryption package.
Project URL

Project URL

https://github.com/prolificinteractive/Patrons
Source Code Management

Source Code Management

https://github.com/prolificinteractive/Patrons

Download patrons

How to add to project

<!-- https://jarcasting.com/artifacts/com.prolificinteractive/patrons/ -->
<dependency>
    <groupId>com.prolificinteractive</groupId>
    <artifactId>patrons</artifactId>
    <version>0.1.0</version>
    <type>aar</type>
</dependency>
// https://jarcasting.com/artifacts/com.prolificinteractive/patrons/
implementation 'com.prolificinteractive:patrons:0.1.0'
// https://jarcasting.com/artifacts/com.prolificinteractive/patrons/
implementation ("com.prolificinteractive:patrons:0.1.0")
'com.prolificinteractive:patrons:aar:0.1.0'
<dependency org="com.prolificinteractive" name="patrons" rev="0.1.0">
  <artifact name="patrons" type="aar" />
</dependency>
@Grapes(
@Grab(group='com.prolificinteractive', module='patrons', version='0.1.0')
)
libraryDependencies += "com.prolificinteractive" % "patrons" % "0.1.0"
[com.prolificinteractive/patrons "0.1.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

Patrons

Travis branch

Let your patron do the work.

A Patron is a preference wrapper. Come also with an encryption system.

Features

Use the adequate patron for the preference value type you would like to store.

Patrons handle all types handled by shared preferences:

  • boolean
  • float
  • float
  • int
  • String
  • StringSet

Patrons also provide an encrypted version of the shared preferences. Use patrons-conceal to encrypt your preference values.

Installation

Step 1. Add the JitPack repository to your build file

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Step 2. Add the dependency

dependencies {
  implementation 'com.github.prolificinteractive.patrons:patron:${patronsVersion}'

  // If you want patrons with encryption of your shared preferences
  implementation 'com.github.prolificinteractive.patrons:patron-conceal:${patronsVersion}'
}

Usage

A default patron exists for all shared preferences types.

Boolean

val boolPref: Preference<Boolean> = BooleanPreference(prefs, "key")

Float

val floatPref: Preference<Float> = FloatPreference(prefs, "key")

Integer

val intPref: Preference<Integer> = IntPreference(prefs, "key")

Long

val longPref: Preference<Long> = LongPreference(prefs, "key")

String

val stringPref: Preference<String> = StringPreference(prefs, "key")

String Set

val stringSetPref: Preference<Set<String>> = StringSetPreference(prefs, "key")

Conceal

Init Conceal in your application class:

import com.facebook.soloader.SoLoader;

public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, false);
  }
}

Encryption

SharedPreferences Backed Keychain

val prefs = ConcealSharedPreferences(context)

Keystore Backed Keychain

By default, preference's key is NOT encrypted but the behaviour can be customized by passing your own custom KeyEncryption

val defaultPref = PreferenceManager.getDefaultSharedPreferences(context)
val concealedPrefs = ConcealSharedPreferences(
  this,
  defaultPref,
  NoKeyEncryption(),
  ConcealEncryption(
    context,
    "conceal_encryption",
    AndroidConceal
      .get()
      .createDefaultCrypto(KeystoreBackedKeychain(context, defaultPref))
    )
)

Proguard

TODO

Contributing to Patrons

To report a bug or enhancement request, feel free to file an issue under the respective heading.

If you wish to contribute to the project, fork this repo and submit a pull request. Code contributions should follow the standards specified in the Prolific Android Style Guide.

License

prolific

Copyright (c) 2018 Prolific Interactive

Patrons is maintained and sponsored by Prolific Interactive. It may be redistributed under the terms specified in the LICENSE file.

com.prolificinteractive

Prolific Interactive

Prolific Interactive is a strategy-led mobile agency partnering with high-growth lifestyle brands.

Versions

Version
0.1.0