154 lines
6.0 KiB
Markdown
154 lines
6.0 KiB
Markdown
|
# AdvancedPrivacy
|
||
|
An app to let you control and protect your privacy.
|
||
|
|
||
|
|
||
|
# Features
|
||
|
The following features are currently part of AdvancedPrivacy app.
|
||
|
1. Centralized overview dashboard.
|
||
|
2. Fake location.
|
||
|
3. Hiding IP address.
|
||
|
4. Control trackers across apps.
|
||
|
|
||
|
# Technologies
|
||
|
- Kotlin as main language
|
||
|
- Kotlin coroutines and flow for asynchronous code
|
||
|
- AndroidX (core-ktx, fragment-ktx, and lifecycle etc.)
|
||
|
- Google Material Design component for UI elements
|
||
|
- Timber for logging
|
||
|
- MapLibre for map support
|
||
|
- LeakCanary for keeping an eye on memory leaks.
|
||
|
|
||
|
# Flavours
|
||
|
This app comes in two flavours, one for /e/OS and second one for other android (where app doesn't have system access)
|
||
|
|
||
|
# Testing
|
||
|
Need to write test and add code coverage.
|
||
|
|
||
|
# Development
|
||
|
|
||
|
## Setup
|
||
|
You can use any latest stable version of android studio to be able to build this app.
|
||
|
|
||
|
## Supported Versions
|
||
|
- Minimum SDK: 26 (Android O)
|
||
|
- Compile SDK: 34 (Android U)
|
||
|
- Target SDK: 33 (Android T)
|
||
|
|
||
|
|
||
|
## Code Style and Quality
|
||
|
This project uses [ktlint](https://github.com/pinterest/ktlint), provided via the [spotless](https://github.com/diffplug/spotless) gradle plugin. To maintain the same code style, all the codestyle configuration has been bundled into the project.
|
||
|
|
||
|
To check for any codestyle related error, `./gradlew spotlessCheck`. Use `./gradlew spotlessApply` to autoformat in order to fix any code quality related issues.
|
||
|
|
||
|
### Setting up pre-commit hooks
|
||
|
To strictly enforce the code quality, this project has a pre-commit hook which is triggered everytime before you commit any changes (only applies to *.kt, *.gradle, *.md and *.gitignore). You must setup the pre-commit hook before doing any changes to the project. For that, this project has a script which can executed as follows:
|
||
|
```bash
|
||
|
./hooks/pre-commit
|
||
|
```
|
||
|
|
||
|
## Build dependencies
|
||
|
|
||
|
TrackerFilter won't work unless your rom was build with this specific netd project:
|
||
|
|
||
|
[android_system_netd](../../../e_privacycentral_android_system_netd)
|
||
|
|
||
|
To create an /e/ build with this specific project, follow the documentation to create an usual /e/ build for your device https://doc.e.foundation/devices until `repo sync`
|
||
|
|
||
|
After `repo sync` all the sources, replace
|
||
|
```
|
||
|
system/netd
|
||
|
```
|
||
|
|
||
|
with this repo [android_system_netd](../../../e_privacycentral_android_system_netd)
|
||
|
|
||
|
then run the build as usual
|
||
|
|
||
|
This won't include advanced privacy, you still need to build the app.
|
||
|
|
||
|
## Build
|
||
|
If you'd like to build AdvancedPrivacy locally, you should be able to just clone and build with no issues.
|
||
|
|
||
|
For building from CLI, you can execute use `./gradlew assemble<Flavor><Debug|Release>` command:
|
||
|
|
||
|
Example for eOs debug version
|
||
|
```bash
|
||
|
./gradlew assembleEDebug
|
||
|
```
|
||
|
|
||
|
## How to use AdvancedPrivacy apk
|
||
|
You can build the apk locally by using above instructions or you can download the latest stable apk from `master` branch pipeline.
|
||
|
|
||
|
### To run apk on /e/OS devices
|
||
|
|
||
|
If you are running your tests on a `/test` build, the debug buildtype already sign it with the appropriate key, and without the persistant flag, to allow further updates.
|
||
|
But the first time, to replace the AdvancedPrivacy app, embeded in the test build, you have to use the following commands:
|
||
|
|
||
|
```shell
|
||
|
adb root && adb remount
|
||
|
adb push your_advanced_privacy_debug_build.apk /system/priv-app/AdvancedPrivacy/AdvancedPrivacy.apk
|
||
|
adb shell kill -9 $(adb shell pidof -s foundation.e.advancedprivacy)
|
||
|
```
|
||
|
|
||
|
#### AdvancedPrivacy requiement against the system
|
||
|
|
||
|
AdvancedPrivacy needs to be installed as system app and whitelisting in order to grant some system specific permissions. Follow these steps to make it work properly on /e/OS
|
||
|
|
||
|
1. From `Developer options`, enable `Android debugging` and `Rooted debugging`
|
||
|
1. Sign the apk with platform certificate. You can use this command to do that
|
||
|
|
||
|
```shell
|
||
|
apksigner sign --key platform.pk8 --cert platform.x509.pem AdvancedPrivacy.apk app-e-release-unsigned.apk
|
||
|
```
|
||
|
|
||
|
If you are running your tests on an `/test` build, you can find keys at https://gitlab.e.foundation/e/os/android_build/-/tree/v1-q/target/product/security
|
||
|
1. Install apk as system app and push permissions whitelist with following commands:
|
||
|
```shell
|
||
|
adb root && adb remount
|
||
|
adb shell mkdir system/priv-app/AdvancedPrivacy
|
||
|
adb push AdvancedPrivacy.apk system/priv-app/AdvancedPrivacy
|
||
|
```
|
||
|
|
||
|
1. Push permissions whitelist.
|
||
|
- it requires the whitelisting [privapp-permissions-foundation.e.advancedprivacy.xml](privapp-permissions-foundation.e.advancedprivacy.xml) file that can be found in the project repository.
|
||
|
- then use the following command
|
||
|
```bash
|
||
|
adb push privapp-permissions-foundation.e.advancedprivacy.xml /system/etc/permissions/
|
||
|
```
|
||
|
|
||
|
1. Allow the fake location service to run in background. Add <allow-in-power-save package="foundation.e.advancedprivacy" /> in the file /system/etc/permissions/platform.xml .
|
||
|
|
||
|
1. Reboot the device
|
||
|
```shell
|
||
|
adb reboot
|
||
|
```
|
||
|
|
||
|
### To run apk on stock android devices
|
||
|
You can simply install the apk. Keep in that mind all features won't be available on stock android devices.
|
||
|
|
||
|
> Voila !!!, AdvancedPrivacy is installed successfully in your device.
|
||
|
|
||
|
# Distribution
|
||
|
This project can be distributed as prebuilt apk with /e/OS or it can be published on other app stores for non /e/OS devices.
|
||
|
|
||
|
# For developers and contributers
|
||
|
Please refer to [Development Guide](DEVELOPMENT.md) for detailed instructions about project structure, architecture, design patterns and testing guide.
|
||
|
|
||
|
# License
|
||
|
```
|
||
|
Copyright (C) 2023 MURENA SAS
|
||
|
Copyright (C) 2021 ECORP
|
||
|
|
||
|
This program is free software: you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License as published by
|
||
|
the Free Software Foundation, either version 3 of the License, or
|
||
|
(at your option) any later version.
|
||
|
|
||
|
This program is distributed in the hope that it will be useful,
|
||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
GNU General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with this program. If not, see https://www.gnu.org/licenses/.
|
||
|
```
|