| Index: README.md |
| diff --git a/README.md b/README.md |
| index ce2d29c550de70be4b3c4cb51557e0fd95199477..5ccc426dfd539fd1e5d23075384086c065d017f2 100644 |
| --- a/README.md |
| +++ b/README.md |
| @@ -1,10 +1,9 @@ |
| Adblock Plus Library for Android |
| ======================== |
| -An Android library project that runs a proxy to block ads. |
| +An Android library project, tests and demo application for AdblockWebView widget. |
| -Updating the dependencies |
| -------------------------- |
| +## Updating the dependencies |
| Adblock Plus Library for Android has dependencies that aren't in this repository. |
| To update those, call: |
| @@ -13,16 +12,15 @@ To update those, call: |
| ## Library |
| -Building with Ant |
| ------------------- |
| +### Building with Ant |
| -### Requirements |
| +#### Requirements |
| * [The Android SDK](http://developer.android.com/sdk) |
| * [The Android NDK](https://developer.android.com/tools/sdk/ndk) |
| * [Ant](http://ant.apache.org) |
| -### Building |
| +#### Building |
| In the 'libadblockplus-android' directory create the file _local.properties_ and set |
| _sdk.dir_ and _ndk.dir_ to where you installed it, e.g.: |
| @@ -34,36 +32,41 @@ Then run: |
| ant debug |
| -Building with Maven |
| -------------------- |
| +### Building with Maven |
| -### Requirements |
| +#### Requirements |
| All 'Building with Ant' requirements and additional requirements: |
| * [Maven](https://maven.apache.org) |
| -### Building |
| +#### Building |
| + |
| +Go to android sdk directory '/platforms/android-21' and run: |
| + |
| + mvn install:install-file -Dfile=./android.jar -DgroupId=com.google.android -DartifactId=android |
| + -Dversion=5.0 -Dpackaging=jar -DgeneratePom=true |
| Set environment variable ANDROID_HOME to your Android SDK directory or pass it in command-line (below). |
| -In the 'libadblockplus-android' directory run: |
| +In the root directory run: |
| mvn clean install [-Dandroid.sdk.path=/some/where/sdk] |
| -This will generate *.aar library artifact in the 'target' directory. |
| +This will generate *.aar library artifacts in the 'libadblockplus-android/target', |
| +'libadblockplus-android-settings/target', 'libadblockplus-android-webview/target' directories |
| +and *.apk in the 'libadblockplus-android-webviewapp/target' directory. |
| -Building with Gradle/Android Studio |
| ------------------------------------ |
| +### Building with Gradle/Android Studio |
| -### Requirements |
| +#### Requirements |
| * [The Android SDK](http://developer.android.com/sdk) |
| -* Android SDK Build tools 22.0.1 |
| +* Android SDK Build tools 24.0.1 |
| * [The Android NDK](https://developer.android.com/tools/sdk/ndk) |
| Edit 'buildToolsVersion' in 'build.gradle' files if necessary. |
| -### Building from command-line |
| +#### Building from command-line |
| In the project root directory create the file _local.properties_ and set |
| _sdk.dir_ and _ndk.dir_ to where you installed it, e.g.: |
| @@ -75,7 +78,7 @@ In the project root directory run: |
| ./gradlew assembleDebug |
| -This will generate *.aar library artifact in 'libadblockplus-android/build/outputs/aar/' directory. |
| +This will generate *.aar library artifact in the 'libadblockplus-android/build/outputs/aar/' directory. |
| ## Library tests |
| @@ -87,7 +90,7 @@ Make sure _Library_ requirements are present. |
| Set ANDROID_HOME environment variable to your Android SDK directory. |
| -In the 'libadblockplus-android-tests' run: |
| +In the 'libadblockplus-android-tests' directory run: |
| ant instrument |
| @@ -122,14 +125,195 @@ For example: |
| ### Building with Gradle/Android Studio |
| -Make sure you've created _local.properties_ file to build the library (see above). |
| +Make sure you've created the _local.properties_ file to build the library (see above). |
| In the project root directory run: |
| ./gradlew assembleDebugAndroidTest |
| -This will generate *.apk in 'libadblockplus-android-tests/build/outputs/apk/' directory. |
| +This will generate *.apk in the 'libadblockplus-android-tests/build/outputs/apk/' directory. |
| ### Testing with Gradle/Android Studio |
| You can select test class/method and click 'Run ..Test'. The library and test app will be |
| -compiled, installed to emuator/device and launched automatically. |
| +compiled, installed to emulator/device and launched automatically. |
| + |
| +## Settings |
| + |
| +You can find adblock fragments in the 'libadblockplus-android-settings' directory: |
| +* AdblockGeneralSettingsFragment - main fragment |
| +* AdblockWhitelistedDomainsSettingsFragment - whitelisted domains fragment |
| + |
| +### Usage |
| + |
| +Create `AdblockEngine` instance with factory methods and `AdblockSettingsStorage` instance. |
| +You can use `AdblockSettingsSharedPrefsStorage` implementation to store settings in `SharedPreferences`. |
| +Or you can use Adblock facade: |
| + |
| + Adblock.get().init(this, true, Adblock.PREFERENCE_NAME); |
| + |
| +Implement the following interfaces in your settings activity: |
| + |
| +* `AdblockGeneralSettingsFragment.Provider` |
| +* `AdblockGeneralSettingsFragment.Listener` |
| +* `AdblockWhitelistedDomainsSettingsFragment.Listener` |
| + |
| +and return created instance or Adblock facade instances: |
| + |
| + Adblock.get().getEngine(); // engine |
| + Adblock.get().getStorage(); // storage |
| + |
| +Retain Adblock facade instance in activity `onCreate` in synchronous mode (it may take few seconds): |
| + |
| + Adblock.get().retain(false); |
| + |
| +or in asynchronous mode (without current thread lock): |
| + |
| + Adblock.get().retain(true); |
| + |
| +Invoke `waitforReady` every time you need AdblockEngine instance if retained in asynchronous mode: |
| + |
| + Adblock.get().waitForReady(); |
| + |
| +Release Adblock facade instance in activity `onDestroy`: |
| + |
| + Adblock.get().release(); |
| + |
| +Insert `AdblockGeneralSettingsFragment` fragment instance in runtime to start showing settings UI. |
| + |
| +### Building |
| + |
| +#### Building with Ant |
| + |
| +In the 'libadblockplus-android-settings' directory create the file _local.properties_ and set |
| +_sdk.dir_ to where you installed it, e.g.: |
| + |
| + sdk.dir = /some/where/sdk |
| + |
| +Then run: |
| + |
| + ant debug |
| + |
| + |
| +#### Building with Gradle |
| + |
| +In the project root directory run: |
| + |
| + ./gradlew assemble |
| + |
| +This will generate *.aar in the 'libadblockplus-android-settings/build/outputs/aar' directory. |
| + |
| +## WebView Application |
| + |
| +You can find demo application for 'AdblockWebView' class in |
| +'libadblockplus-android-webviewapp' directory. |
| + |
| +### Building |
| + |
| +Make sure _Library_ requirements are present. |
| + |
| +#### Building with Ant |
| + |
| +In the 'libadblockplus-android-webviewapp' directory create the file _local.properties_ and set |
| +_sdk.dir_ to where you installed it, e.g.: |
| + |
| + sdk.dir = /some/where/sdk |
| + |
| +Then run: |
| + |
| + ant debug |
| + |
| +This will generate *.apk in the 'libadblockplus-android-webviewapp/bin/' directory. |
| + |
| +#### Building with Gradle |
| + |
| +In the project root directory run: |
| + |
| + ./gradlew assemble |
| + |
| +This will generate *.apk in the 'libadblockplus-android-webviewapp/build/outputs/apk/' directory. |
| + |
| + |
| +## WebView |
| + |
| +You can find 'AdblockWebView' class in the 'libadblockplus-android-webview' directory. |
| + |
| +`AdblockWebView` class provides built-in ad blocking |
| +(both resource loading filtering and element hiding) and inherits from Android |
| +['WebView'](https://developer.android.com/reference/android/webkit/WebView.html). |
| + |
| +### Usage |
| + |
| +In layout XML: |
| + |
| + <org.adblockplus.libadblockplus.android.webview.AdblockWebView |
| + android:id="@+id/main_webview" |
| + android:layout_width="match_parent" |
| + android:layout_height="match_parent"/> |
| + |
| +In java source code: |
| + |
| + AdblockWebView webView = (AdblockWebView) findViewById(R.id.main_webview); |
| + |
| +Use `setAdblockEnabled(boolean adblockEnabled)` to enable/disable adblocking. |
| + |
| +Use `setDebugMode(boolean debugMode)` to turn debug log output (Android log and JS console) on/off. |
| + |
| +Use `setAllowDrawDelay(int allowDrawDelay)` to set custom delay to start render webpage after 'DOMContentLoaded' event is fired. |
| + |
| +Use `setAdblockEngine(AdblockEngine adblockEngine)` to use external adblock engine. |
| +If adblock engine is not set, it's created by AdblockWebView instance automatically. |
| + |
| +Use `dispose(Runnable disposeFinished)` to release resources (**required**). |
| +Note it can be invoked from background thread. |
| + |
| +### Building |
| + |
| +#### Building with Ant |
| + |
| +In the 'libadblockplus-android-webview' directory create the file _local.properties_ and set |
| +_sdk.dir_ to where you installed it, e.g.: |
| + |
| + sdk.dir = /some/where/sdk |
| + |
| +Then run: |
| + |
| + ant debug |
| + |
| + |
| +#### Building with Gradle |
| + |
| +In the project root directory run: |
| + |
| + ./gradlew assemble |
| + |
| +This will generate *.aar in the 'libadblockplus-android-webview/build/outputs/aar' directory. |
| + |
| +## WebView Application |
| + |
| +You can find demo application for 'AdblockWebView' class in the |
| +'libadblockplus-android-webviewapp' directory. |
| + |
| +### Building |
| + |
| +Make sure _Library_ requirements are present. |
| + |
| +#### Building with Ant |
| + |
| +In the 'libadblockplus-android-webviewapp' directory create the file _local.properties_ and set |
| +_sdk.dir_ to where you installed it, e.g.: |
| + |
| + sdk.dir = /some/where/sdk |
| + |
| +Then run: |
| + |
| + ant debug |
| + |
| +This will generate *.apk in the 'libadblockplus-android-webviewapp/bin/' directory. |
| + |
| +#### Building with Gradle |
| + |
| +In the project root directory run: |
| + |
| + ./gradlew assemble |
| + |
| +This will generate *.apk in the 'libadblockplus-android-webviewapp/build/outputs/apk/' directory. |