Compare commits
No commits in common. "master" and "v0.98-alpha1" have entirely different histories.
master
...
v0.98-alph
1
.gitattributes
vendored
@ -1 +0,0 @@
|
||||
*.gpg binary
|
11
.gitignore
vendored
@ -17,6 +17,12 @@ build.xml
|
||||
.gradle/
|
||||
build/
|
||||
|
||||
# Gradle wrapper
|
||||
gradlew
|
||||
gradlew.bat
|
||||
gradle-wrapper.jar
|
||||
gradle-wrapper.properties
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
@ -42,8 +48,3 @@ extern/*/*/libs/
|
||||
|
||||
# Tests
|
||||
junit-report.xml
|
||||
|
||||
# Screen dumps from Android Studio/DDMS
|
||||
captures/
|
||||
|
||||
/fdroid/
|
||||
|
179
.gitlab-ci.yml
@ -1,142 +1,41 @@
|
||||
stages:
|
||||
- test
|
||||
- deploy
|
||||
before_script:
|
||||
- apt-get -q update -y
|
||||
- echo " == Installing packages required by this CI script"
|
||||
- apt-get -q install -y wget tar unzip
|
||||
- echo " == Installing OpenJDK 7"
|
||||
- apt-get -q install -y openjdk-7-jdk
|
||||
- echo " == Installing packages required by the 32-bit SDK"
|
||||
- apt-get -q install -y lib32stdc++6 lib32z1
|
||||
- echo " == Installing the Android SDK"
|
||||
- wget -q -O android-sdk.tgz https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
|
||||
- tar -x -z -f android-sdk.tgz
|
||||
- mv android-sdk-linux android-sdk
|
||||
- export ANDROID_HOME=$PWD/android-sdk
|
||||
- export PATH="$ANDROID_HOME/tools:$PATH"
|
||||
- echo " == Installing Android SDK components"
|
||||
- echo y | android -s update sdk --no-ui -a -t platform-tools,tools,build-tools-23.0.2,android-22,extra-android-m2repository
|
||||
- export PATH="$ANDROID_HOME/platform-tools:$PATH"
|
||||
- export PATH="$ANDROID_HOME/build-tools/23.0.2:$PATH"
|
||||
- echo " == Installing Android emulator images"
|
||||
- echo y | android -s update sdk --no-ui -a -t android-10
|
||||
- echo " == Installing Gradle"
|
||||
- wget -q -O gradle.zip https://services.gradle.org/distributions/gradle-2.7-bin.zip
|
||||
- unzip -q gradle.zip
|
||||
- export PATH="$PWD/gradle-2.7/bin:$PATH"
|
||||
|
||||
.base:
|
||||
image: registry.gitlab.com/fdroid/ci-images-client:latest
|
||||
before_script:
|
||||
- export GRADLE_USER_HOME=$PWD/.gradle
|
||||
- export ANDROID_COMPILE_SDK=`sed -n 's,.*compileSdkVersion\s*\([0-9][0-9]*\).*,\1,p' app/build.gradle`
|
||||
- alias sdkmanager="sdkmanager --no_https"
|
||||
- echo y | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" > /dev/null
|
||||
# limit RAM usage for all gradle runs
|
||||
- export maxmem=$(expr $(sed -n 's,^MemAvailable:[^0-9]*\([0-9][0-9]*\)[^0-9]*$,\1,p' /proc/meminfo) / 1024 / 2 / 1024 \* 1024)
|
||||
- printf "\norg.gradle.jvmargs=-Xmx${maxmem}m -XX:MaxPermSize=${maxmem}m\norg.gradle.daemon=false\norg.gradle.parallel=false\n" >> gradle.properties
|
||||
after_script:
|
||||
# this file changes every time but should not be cached
|
||||
- rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
|
||||
- rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/
|
||||
cache:
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
|
||||
.test-template: &test-template
|
||||
extends: .base
|
||||
stage: test
|
||||
artifacts:
|
||||
name: "${CI_PROJECT_PATH}_${CI_JOB_STAGE}_${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}"
|
||||
paths:
|
||||
- kernel.log
|
||||
- logcat.txt
|
||||
- app/core*
|
||||
- app/*.log
|
||||
- app/build/reports
|
||||
- app/build/outputs/*ml
|
||||
- app/build/outputs/apk
|
||||
expire_in: 1 week
|
||||
when: on_failure
|
||||
after_script:
|
||||
- echo "Download debug artifacts from https://gitlab.com/${CI_PROJECT_PATH}/-/jobs"
|
||||
|
||||
# Run the most important first. Then we can decide whether to ignore
|
||||
# the style tests if the rest of the more meaningful tests pass.
|
||||
test_lint_pmd_checkstyle:
|
||||
<<: *test-template
|
||||
test:
|
||||
script:
|
||||
- export EXITVALUE=0
|
||||
- function set_error() { export EXITVALUE=1; printf "\x1b[31mERROR `history|tail -2|head -1|cut -b 6-500`\x1b[0m\n"; }
|
||||
- ./gradlew assemble
|
||||
# always report on lint errors to the build log
|
||||
- sed -i -e 's,textReport .*,textReport true,' app/build.gradle
|
||||
- ./gradlew testFullDebugUnitTest || set_error
|
||||
- ./gradlew lint || set_error
|
||||
- ./gradlew pmd || set_error
|
||||
- ./gradlew checkstyle || set_error
|
||||
- ./tools/check-format-strings.py || set_error
|
||||
- ./tools/check-fastlane-whitespace.py || set_error
|
||||
- ./tools/remove-unused-and-blank-translations.py || set_error
|
||||
- echo "These are unused or blank translations that should be removed:"
|
||||
- git --no-pager diff --ignore-all-space --name-only --exit-code app/src/*/res/values*/strings.xml || set_error
|
||||
- exit $EXITVALUE
|
||||
|
||||
errorprone:
|
||||
extends: .base
|
||||
stage: test
|
||||
script:
|
||||
- apt-get update
|
||||
- apt-get install -t stretch-backports openjdk-11-jdk-headless
|
||||
- update-java-alternatives --set java-1.11.0-openjdk-amd64
|
||||
- export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
|
||||
- cat config/errorprone.gradle >> app/build.gradle
|
||||
- ./gradlew -Dorg.gradle.dependency.verification=lenient assembleDebug
|
||||
|
||||
# Run the tests in the emulator. Each step is broken out to run on
|
||||
# its own since the CI runner can have limited RAM, and the emulator
|
||||
# can take a while to start.
|
||||
#
|
||||
# once these prove stable, the task should be switched to
|
||||
# connectedCheck to test all the build flavors
|
||||
.connected-template: &connected-template
|
||||
extends: .base
|
||||
script:
|
||||
- ./gradlew assembleFullDebug
|
||||
- export AVD_SDK=`echo $CI_JOB_NAME | awk '{print $2}'`
|
||||
- export AVD_TAG=`echo $CI_JOB_NAME | awk '{print $3}'`
|
||||
- export AVD_ARCH=`echo $CI_JOB_NAME | awk '{print $4}'`
|
||||
- export AVD_PACKAGE="system-images;android-${AVD_SDK};${AVD_TAG};${AVD_ARCH}"
|
||||
- echo $AVD_PACKAGE
|
||||
|
||||
- alias sdkmanager
|
||||
- ls -l ~/.android
|
||||
|
||||
- adb start-server
|
||||
- start-emulator
|
||||
- wait-for-emulator
|
||||
- adb devices
|
||||
- adb shell input keyevent 82 &
|
||||
- ./gradlew installFullDebug
|
||||
- adb shell am start -n org.fdroid.fdroid.debug/org.fdroid.fdroid.views.main.MainActivity
|
||||
- if [ $AVD_SDK -lt 25 ] || ! emulator -accel-check; then
|
||||
export FLAG=-Pandroid.testInstrumentationRunnerArguments.notAnnotation=androidx.test.filters.LargeTest;
|
||||
fi
|
||||
- ./gradlew connectedFullDebugAndroidTest $FLAG
|
||||
|
||||
no-accel 22 default x86:
|
||||
<<: *test-template
|
||||
<<: *connected-template
|
||||
|
||||
.kvm-template: &kvm-template
|
||||
tags:
|
||||
- fdroid
|
||||
- kvm
|
||||
only:
|
||||
variables:
|
||||
- $RUN_KVM_JOBS
|
||||
<<: *test-template
|
||||
<<: *connected-template
|
||||
|
||||
kvm 29 microg x86_64:
|
||||
<<: *kvm-template
|
||||
|
||||
deploy_nightly:
|
||||
extends: .base
|
||||
stage: deploy
|
||||
only:
|
||||
- master
|
||||
script:
|
||||
- test -z "$DEBUG_KEYSTORE" && exit 0
|
||||
- sed -i
|
||||
's,<string name="app_name">.*</string>,<string name="app_name">F-Nightly</string>,'
|
||||
app/src/main/res/values*/strings.xml
|
||||
# add this nightly repo as a enabled repo
|
||||
- sed -i -e '/<\/string-array>/d' -e '/<\/resources>/d' app/src/main/res/values/default_repos.xml
|
||||
- echo "<item>${CI_PROJECT_PATH}-nightly</item>" >> app/src/main/res/values/default_repos.xml
|
||||
- echo "<item>${CI_PROJECT_URL}-nightly/raw/master/fdroid/repo</item>" >> app/src/main/res/values/default_repos.xml
|
||||
- cat config/nightly-repo/repo.xml >> app/src/main/res/values/default_repos.xml
|
||||
- export DB=`sed -n 's,.*DB_VERSION *= *\([0-9][0-9]*\).*,\1,p' app/src/main/java/org/fdroid/fdroid/data/DBHelper.java`
|
||||
- export versionCode=`printf '%d%05d' $DB $(date '+%s'| cut -b4-8)`
|
||||
- sed -i "s,^\(\s*versionCode\) *[0-9].*,\1 $versionCode," app/build.gradle
|
||||
# build the APKs!
|
||||
- ./gradlew assembleDebug
|
||||
- fdroid nightly -v
|
||||
- echo " == Running build"
|
||||
- gradle build
|
||||
- echo " == Running checkstyle"
|
||||
- gradle checkstyle
|
||||
- echo " == Creating Android 2.3.7 emulator"
|
||||
- echo no | android create avd --force -n fcl-test -t android-10 -b armeabi
|
||||
- echo " == Starting Android 2.3.7 emulator"
|
||||
- emulator -force-32bit -avd fcl-test -no-skin -no-audio -no-window &
|
||||
- ./tools/wait-for-emulator
|
||||
- adb shell input keyevent 82
|
||||
- echo " == Running Android tests on the 2.3.7 emulator"
|
||||
- ADB_INSTALL_TIMEOUT=8 gradle connectedCheck || { adb logcat -d '*:W'; exit 1; }
|
||||
- echo " == Stopping Android 2.3.7 emulator"
|
||||
- kill $!
|
||||
|
3
.weblate
@ -1,3 +0,0 @@
|
||||
[weblate]
|
||||
url = https://hosted.weblate.org/api/
|
||||
translation = f-droid/f-droid
|
10
Android.mk
@ -7,15 +7,15 @@ LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_PACKAGE_NAME := F-Droid
|
||||
|
||||
fdroid_root := $(LOCAL_PATH)
|
||||
fdroid_dir := app
|
||||
fdroid_out := $(PWD)/$(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
|
||||
fdroid_dir := F-Droid
|
||||
fdroid_out := $(OUT_DIR)/target/common/obj/APPS/$(LOCAL_MODULE)_intermediates
|
||||
fdroid_build := $(fdroid_root)/$(fdroid_dir)/build
|
||||
fdroid_apk := build/outputs/apk/full/release/$(fdroid_dir)-full-release-unsigned.apk
|
||||
fdroid_apk := build/outputs/apk/F-Droid-release-unsigned.apk
|
||||
|
||||
$(fdroid_root)/$(fdroid_dir)/$(fdroid_apk):
|
||||
rm -Rf $(fdroid_build)
|
||||
mkdir -p $(fdroid_out)
|
||||
ln -sf $(fdroid_out) $(fdroid_build)
|
||||
ln -s $(fdroid_out) $(fdroid_build)
|
||||
cd $(fdroid_root)/$(fdroid_dir) && gradle assembleRelease
|
||||
|
||||
LOCAL_CERTIFICATE := platform
|
||||
@ -23,4 +23,4 @@ LOCAL_SRC_FILES := $(fdroid_dir)/$(fdroid_apk)
|
||||
LOCAL_MODULE_CLASS := APPS
|
||||
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
|
||||
|
||||
include $(BUILD_PREBUILT)
|
||||
include $(BUILD_PREBUILT)
|
762
CHANGELOG.md
@ -1,691 +1,3 @@
|
||||
### 1.13-alpha1 (2021-06-02)
|
||||
|
||||
* Stop repeated updates of Trichrome Library
|
||||
|
||||
* More changes to follow Material Design (@proletarius101)
|
||||
|
||||
* Improve OpenCollective badge (@ConnyDuck)
|
||||
|
||||
### 1.13-alpha0 (2021-04-22)
|
||||
|
||||
* Theme support tied to built-in Android themes (@proletarius101)
|
||||
|
||||
* New top banner notifications: "No Internet" and "No Data or WiFi enabled"
|
||||
|
||||
* Improved handling of USB-OTG and SD Card repos and mirrors
|
||||
|
||||
### 1.12.1 (2021-04-12)
|
||||
|
||||
* Fix trove4j verification error
|
||||
|
||||
### 1.12 (2021-04-06)
|
||||
|
||||
* Sync translations
|
||||
|
||||
### 1.12-alpha3 (2021-03-10)
|
||||
|
||||
* Opt-in F-Droid Metrics
|
||||
|
||||
### 1.12-alpha2 (2021-03-03)
|
||||
|
||||
* Overhaul clean up of cached files
|
||||
|
||||
* Support updating "shared library packages" like Trichrome (@uldiniad)
|
||||
|
||||
### 1.12-alpha1 (2021-02-25)
|
||||
|
||||
* Add extra sanitation to search terms to prevent vulnerabilities.
|
||||
|
||||
* Fix Nearby Swap's close button (@proletarius101)
|
||||
|
||||
* Bump to compileSdkVersion 29 to support Java8
|
||||
|
||||
* Set up WorkManager on demand to avoid slowing down starts
|
||||
|
||||
* Prefer system keys when APKs are signed by them (@glennmen)
|
||||
|
||||
### 1.12-alpha0 (2021-02-08)
|
||||
|
||||
* App description localization now fully respects lists of languages in Android
|
||||
Language Settings
|
||||
|
||||
* Latest Tab lists results based on the Language Settings
|
||||
|
||||
* Latest Tab now shows results ordered newest first (@TheLastProject @IzzySoft)
|
||||
|
||||
* Theme support modernized and tied to the built-in Android themes (@proletarius101)
|
||||
|
||||
* Search results greatly improved (@Tvax @gcbrown76)
|
||||
|
||||
* Let Android efficiently schedule background cache cleanup operations (@Isira-Seneviratne)
|
||||
|
||||
* Overhaul repo URL parsing for reliable repo adding (@projectgus)
|
||||
|
||||
### 1.11 (2020-12-29)
|
||||
|
||||
* Improved linkifying of URLs in app descriptions
|
||||
|
||||
* Improved handling of SDCards and USG-OTG in Nearby
|
||||
|
||||
* Modernized code and switched PNGs to vectors (thanks @isira-seneviratne!)
|
||||
|
||||
* Recognize longer repo URLs to support GitCDN/RawGit/etc mirrors
|
||||
|
||||
### 1.10 (2020-10-20)
|
||||
|
||||
* Improved language selection with multiple locales
|
||||
(thanks @spacecowboy and @bubu!)
|
||||
|
||||
### 1.10-alpha1 (2020-09-29)
|
||||
|
||||
* use notification channels for fine-grained control (@Isira-Seneviratne)
|
||||
|
||||
### 1.10-alpha0 (2020-07-20)
|
||||
|
||||
* Latest Tab will show better results on non-English devices
|
||||
|
||||
* updates to core libraries (Jackson, androidx, gradle, etc)
|
||||
|
||||
* use Gradle's new dependency verification
|
||||
|
||||
* polish whitelabeling support
|
||||
|
||||
### 1.9 (2020-06-25)
|
||||
|
||||
* Removed "Android App Link" support since it cannot work with
|
||||
F-Droid, and it was triggering DNS leaks.
|
||||
|
||||
* Archive Repos are now lower priority than the Repo (higher on the
|
||||
Manage Repos screen), fixing issues where it looked for icons,
|
||||
screenshots and other information in the Archive rather than the
|
||||
Repo itself.
|
||||
|
||||
* Fixed hopefully all occurrences where F-Droid client couldn't show an icon.
|
||||
The remaining cases of missing icons are now caused either by
|
||||
icons not included in upstream repo or by temporary network failures.
|
||||
(After updating this requires one additional repo update to take effect.)
|
||||
|
||||
* Fixed a problem where repository updates would never trigger
|
||||
when either "Over Data" or "Over Wifi" were disabled.
|
||||
|
||||
* Support OpenCollective donation option and highlight
|
||||
free software donation platforms
|
||||
|
||||
* Fix for when the app update button wasn't showing up or working
|
||||
in some cases (thanks @di72nn)
|
||||
|
||||
* Stop cropping feature header image (thanks @ByteHamster!)
|
||||
|
||||
* Make navigation bar match dark mode (thanks @MatthieuB!)
|
||||
|
||||
* Cleaned out obsolete code (thanks @Isira-Seneviratne!)
|
||||
|
||||
### 1.8-alpha2 (2020-02-04)
|
||||
|
||||
* stop showing Unknown Sources with Privileged Extension on Android 10 #1833
|
||||
|
||||
* add standard ripple effect to links on app details activity
|
||||
|
||||
* fix displaying default icon for apps without icons
|
||||
|
||||
### 1.8-alpha1 (2020-01-10)
|
||||
|
||||
* handle Android 10 permission config to stop Unknown Sources prompts
|
||||
|
||||
* keyboard opens when search is cleared
|
||||
|
||||
* translation sync with Android strings
|
||||
|
||||
* force common repo domains to HTTPS (GitLab, GitHub, Amazon)
|
||||
|
||||
### 1.8-alpha0 (2019-11-20)
|
||||
|
||||
* fix seekbar preference on recent Android versions (thanks @dkanada)
|
||||
|
||||
* handle API 29 split-permissions: fine location now implies coarse location
|
||||
|
||||
* define backup rules to avoid saving the swap repo
|
||||
|
||||
### 1.7.1 (2019-07-31)
|
||||
|
||||
* fix crashes from ACRA report emails
|
||||
|
||||
### 1.7 (2019-07-06)
|
||||
|
||||
* fix crash in Panic Settings
|
||||
|
||||
* catch random crashes related to WifiApControl
|
||||
|
||||
### 1.7-alpha2 (2019-06-18)
|
||||
|
||||
* USB OTG flash drives can be used as nearby repos and mirrors
|
||||
|
||||
### 1.7-alpha1 (2019-06-14)
|
||||
|
||||
* overhauled nearby swap using the device's hotspot AP
|
||||
|
||||
* add new panic responses: app uninstalls and reset repos to default
|
||||
|
||||
* fix proxy support on first start
|
||||
|
||||
### 1.7-alpha0 (2019-05-20)
|
||||
|
||||
* major refactor of "Nearby" UI code, to prepare for rewriting guts
|
||||
|
||||
* show "undo" after swiping away items from the Updates tab (thanks @Hocuri!)
|
||||
|
||||
* fix ETag handling when connecting to nginx mirrors #1737
|
||||
|
||||
* fix issues with "Latest" display caused by mishandling time zones #1757
|
||||
|
||||
* ignore all unimportant crashes in background services
|
||||
|
||||
* do not use Privileged Extension if it was disabled in Settings
|
||||
|
||||
### 1.6.2 (2019-05-20)
|
||||
|
||||
* fixed issue where cached indexes were wrongly redownloaded (#1737),
|
||||
thanks to @amiraliakbari for tracking it down!
|
||||
|
||||
* fixed wrong string for the translated title of the Updates Tab (#1785)
|
||||
|
||||
* fixed crashes on very low memory when starting
|
||||
|
||||
### 1.6.1 (2019-05-10)
|
||||
|
||||
* Updated translations
|
||||
|
||||
* fixed button size issues #1678
|
||||
|
||||
* stopped random background crashes
|
||||
|
||||
### 1.6 (2019-04-10)
|
||||
|
||||
* update F-Droid after all other updates (#1556)
|
||||
|
||||
* Improve adding repos from the clipboard (e.g. Firefox Klar)
|
||||
|
||||
* swap usability improvements
|
||||
|
||||
* many crash fixes in swap and background services
|
||||
|
||||
### 1.6-alpha2 (2019-03-28)
|
||||
|
||||
* Latest Tab now highlights apps that provide descriptions,
|
||||
translations, screenshots
|
||||
|
||||
* Auto-download from mirrors, to speed up downloads and reduce load on
|
||||
f-droid.org
|
||||
|
||||
* More efficient download caching (per-repo; across different
|
||||
webservers #1708)
|
||||
|
||||
* Fix problems canceling downloads (#1727, #1736, #1742)
|
||||
|
||||
* Fix downloading OBB files from repos (#1403)
|
||||
|
||||
### 1.6-alpha1 (2019-02-20)
|
||||
|
||||
* add switches in RepoDetails to disable any or all mirrors (#1696)
|
||||
|
||||
* choose random mirror for each package/APK download
|
||||
|
||||
* make all APK downloads be cached per-repo, not per-mirror
|
||||
|
||||
* handle Apache and Nginx ETags when checking if index is current (#1708)
|
||||
|
||||
### 1.6-alpha0 (2019-02-15)
|
||||
|
||||
* handle implied READ_EXTERNAL_STORAGE permissions, which trigger a
|
||||
permissions prompt on installs with Privileged Extension (#1702)
|
||||
|
||||
* sanitize index data to reduce the threats from the server
|
||||
|
||||
* set Read Timeout to trigger mirror use when reads are slow
|
||||
|
||||
* fix missing icons for those who do not use WiFi (#1592)
|
||||
|
||||
* use separate titles for Updates pref and Updates tab, so that they
|
||||
can be better translated
|
||||
|
||||
* UI fixes from @ConnyDuck (#1636, #1618)
|
||||
|
||||
### 1.5.1 (2019-01-07)
|
||||
|
||||
* Removed incomplete translations that were accidentally added in 1.5
|
||||
|
||||
* Fix screenshot background on dark themes (#1618)
|
||||
|
||||
### 1.5 (2018-12-26)
|
||||
|
||||
* Nearby swap bug fixes and improvements
|
||||
|
||||
* update language and translations about Nearby and swap
|
||||
|
||||
* Fix displaying of icons for self-built apps (#1108)
|
||||
|
||||
### 1.5-alpha2 (2018-12-21)
|
||||
|
||||
* support swapping via SD Cards
|
||||
|
||||
* display versionCode in expanded Versions list entries in Expert Mode
|
||||
|
||||
### 1.5-alpha1 (2018-12-12)
|
||||
|
||||
* UX and language cleanup of App Details
|
||||
|
||||
### 1.5-alpha0 (2018-10-19)
|
||||
|
||||
* add repos via additional_repos.xml from ROM, OEM, Vendor.
|
||||
|
||||
### 1.4 (2018-09-12)
|
||||
|
||||
* polish up new "Versions" list and other UI fixes
|
||||
|
||||
### 1.4-alpha1 (2018-08-30)
|
||||
|
||||
* huge overhaul of the "Versions" list in the App Details screen, and
|
||||
many other UI improvements, thanks to new contributor @wsdfhjxc
|
||||
|
||||
* fixes to allow keyboard/d-pad navigation in more places, thanks to
|
||||
new contributor @doeffinger
|
||||
|
||||
### 1.4-alpha0 (2018-08-17)
|
||||
|
||||
* show "Open" button when media is installed and viewable
|
||||
|
||||
* retry index downloads from mirrors
|
||||
|
||||
* add Share button to "Installed Apps" to export CSV list
|
||||
|
||||
* add clickable list of APKs to the swap HTML index page
|
||||
|
||||
### 1.3.1 (2018-08-07)
|
||||
|
||||
* big overhaul of core nearby/swap plumbing
|
||||
|
||||
* TLSv1.3 support, when the device supports it
|
||||
|
||||
### 1.3 (2018-07-31)
|
||||
|
||||
* large overhaul to make status updates more reliable
|
||||
|
||||
* fixed many bugs around the wrong button showing
|
||||
|
||||
### 1.3-alpha5 (2018-07-21)
|
||||
|
||||
* overhaul install button logic to avoid false presses
|
||||
|
||||
* improved first time run experience
|
||||
|
||||
* export install/uninstall history
|
||||
|
||||
* more whitelabeling improvements
|
||||
|
||||
### 1.3-alpha4 (2018-07-13)
|
||||
|
||||
* fix Data/WiFi preferences to properly schedule Updats
|
||||
|
||||
* fix Install/Uninstall events for clearer feedback
|
||||
|
||||
* track pending installs properly, stop fake repeating updates
|
||||
|
||||
* add support for Repo Push Requests when using Index V1
|
||||
|
||||
* support NoSourceSince anti-feature
|
||||
|
||||
* share menu item for repos
|
||||
|
||||
* fix a few crasher bugs
|
||||
|
||||
### 1.3-alpha3 (2018-06-27)
|
||||
|
||||
* fix bug that disabled Privileged Extension
|
||||
|
||||
* prevent crash loop after rapid install/uninstall cycling
|
||||
|
||||
* add expert option to send debug version/UUID on each HTTP download
|
||||
|
||||
* allow user to disable ACRA entirely with a preference
|
||||
|
||||
* basic Install History viewer, available only when logging is enabled
|
||||
|
||||
### 1.3-alpha2 (2018-06-25)
|
||||
|
||||
* Settings improvements
|
||||
|
||||
* new Expert Setting for disabling all notifications
|
||||
|
||||
* huge improvements for custom "whitelabel" F-Droid versions
|
||||
|
||||
### 1.3-alpha1 (2018-06-15)
|
||||
|
||||
* improved Settings for controlling data usage
|
||||
|
||||
* support push install/uninstall requests in index-v1
|
||||
|
||||
### 1.3-alpha0 (2018-04-25)
|
||||
|
||||
* more battery conscious background operation on Android 5.0 and newer
|
||||
|
||||
* make Anti-Features list in App Details clickable
|
||||
|
||||
* new Settings for controlling data usage
|
||||
|
||||
* switch Settings to Material style
|
||||
|
||||
* bumped minimum supported version to Android 4.0 (14)
|
||||
|
||||
### 1.2.2 (2018-04-23)
|
||||
|
||||
* fix crasher bug on devices running on Android 4.2 or older #1424
|
||||
|
||||
### 1.2.1 (2018-04-18)
|
||||
|
||||
* improved automatic mirror selection
|
||||
|
||||
* more swap/nearby bug fixes and improvements
|
||||
|
||||
### 1.2 (2018-04-13)
|
||||
|
||||
* lots of swap/nearby bug fixes and improvements
|
||||
|
||||
* fix one cause of reoccuring update notifications (#1271)
|
||||
|
||||
* make F-Droid recognize fdroid nightly URLs from GitLab
|
||||
|
||||
### 1.2-alpha1 (2018-04-06)
|
||||
|
||||
* fix Privileged Extension install with apps with uses-permision-sdk-23
|
||||
|
||||
* automatically trim or delete cache when storage space is low
|
||||
|
||||
* improved performance on low memory devices
|
||||
|
||||
* make all downloads respect "Only on Wi-Fi" preference
|
||||
|
||||
### 1.2-alpha0 (2018-03-30)
|
||||
|
||||
* add custom mirrors to any repo by clicking links, scanning QR codes, etc.
|
||||
|
||||
* reduce memory usage when device is running low
|
||||
|
||||
### 1.1 (2018-03-21)
|
||||
|
||||
* fix some problems with items Updates reappearing
|
||||
|
||||
* fix failback install method when permissions aren't in sync #1310
|
||||
|
||||
### 1.1-alpha4 (2018-03-09)
|
||||
|
||||
* fix the most popular ACRA crash reports
|
||||
|
||||
* UI layout improvements
|
||||
|
||||
* warn users when scanning QR with camera without autofocus
|
||||
|
||||
### 1.1-alpha3 (2018-02-13)
|
||||
|
||||
* add sort button to Search view: alpha or most recent
|
||||
|
||||
* fix bugs: #1305 #1306 #1325
|
||||
|
||||
* add more detail to ACRA crash reports
|
||||
|
||||
### 1.1-alpha2 (2018-02-06)
|
||||
|
||||
* reload index after system locale change or OS upgrade
|
||||
|
||||
* add "panic responder" support
|
||||
|
||||
### 1.1-alpha1 (2018-01-26)
|
||||
|
||||
* provision new repos via a provisioning file
|
||||
|
||||
* "Android App Links" handling aka "Digital Asset Links"
|
||||
|
||||
* new privacy prefs: disable screenshots; exit on panic
|
||||
|
||||
### 1.1-alpha0 (2017-11-09)
|
||||
|
||||
* automatically choose between official repo mirrors
|
||||
|
||||
* fullscreen, swipeable app screenshot navigation
|
||||
|
||||
* new preference to prevent screenshots/recents
|
||||
|
||||
* fix crasher bug #1203
|
||||
|
||||
### 1.0.1 (2017-10-23)
|
||||
|
||||
* fixed index update failure on Android 5.0 (#1014)
|
||||
|
||||
### 1.0 (2017-10-10)
|
||||
|
||||
* Completely overhauled workflow for updating apps
|
||||
|
||||
* Fully translatable app summaries and descriptions
|
||||
|
||||
* "What's New" section to show changes in current release
|
||||
|
||||
* Screenshots and feature graphics
|
||||
|
||||
* Support installing media, OTA, ZIP, etc. files
|
||||
|
||||
* Improved protection against tracking (HTTP ETag, TLS, etc.)
|
||||
|
||||
* Fully background updates with Privileged Extension
|
||||
|
||||
* Highlight donations to app developers
|
||||
|
||||
* Much faster index updates
|
||||
|
||||
### 1.0-alpha5 (2017-10-04)
|
||||
|
||||
* Fix bug that prevented translations from showing up on Android >= 7.0 (#987)
|
||||
|
||||
* Fix DB upgrade crash from 1.0-alpha3 --> 1.0-alpha4 (#1181)
|
||||
|
||||
### 1.0-alpha4 (2017-09-27)
|
||||
|
||||
* Added swipe gestures to the Updates tab
|
||||
|
||||
* Display warnings with actions in Updates tab for KnownVulns
|
||||
|
||||
* Translation updates
|
||||
|
||||
* Dark UI fixes
|
||||
|
||||
### 1.0-alpha3 (2017-09-12)
|
||||
|
||||
* Big UI performance improvements, especially with archive enabled
|
||||
|
||||
* Fixed crasher bugs
|
||||
|
||||
### 1.0-alpha2 (2017-09-04)
|
||||
|
||||
* Prevent HTTP ETag from being used as a tracking cookie
|
||||
|
||||
* Improved screenshots layout
|
||||
|
||||
* Properly clean up temp and cached files
|
||||
|
||||
* Dark mode fixes
|
||||
|
||||
### 1.0-alpha1 (2017-07-18)
|
||||
|
||||
* Fix bug removing apps from repos (#568)
|
||||
|
||||
* Much faster index updates
|
||||
|
||||
### 1.0-alpha0 (2017-07-08)
|
||||
|
||||
* Support installing media, OTA, ZIP, etc. files
|
||||
|
||||
* Fully support APKs signed by multiple signing keys
|
||||
|
||||
* Tibetan translation
|
||||
|
||||
* Remove related apps and categories after disabling repo
|
||||
|
||||
### 0.104 (2017-06-16)
|
||||
|
||||
* Support apps with APKs signed by more than one key
|
||||
|
||||
* Fix F-Droid update notifications that never go away
|
||||
|
||||
### 0.103.2 (2017-05-31)
|
||||
|
||||
* Fix problematic updates and notifications (#1013)
|
||||
|
||||
* Language and stability updates
|
||||
|
||||
### 0.103.1 (2017-05-12)
|
||||
|
||||
* Various stability fixes
|
||||
|
||||
* Bits of text no longer randomly switch to English
|
||||
|
||||
* Fix send F-Droid via Bluetooth on Android 7.x
|
||||
|
||||
### 0.103 (2017-05-02)
|
||||
|
||||
* Complete overhaul of the user experience
|
||||
|
||||
* Complete support for localization, including app descriptions
|
||||
|
||||
* Support for screenshots, graphics, and "What's New" texts
|
||||
|
||||
* Stable support for F-Droid Privileged Extension
|
||||
|
||||
### 0.102.3 (2017-04-01)
|
||||
|
||||
* Fix issue with installing from the wrong repo (#909)
|
||||
|
||||
* Allow F-Droid to update Privileged Extension (#911)
|
||||
|
||||
* Ignore errors that are likely due to filesystem corruption (#855)
|
||||
|
||||
* Improve installs/uninstalls with Privileged Extension on 7.x
|
||||
|
||||
### 0.102.2 (2017-03-14)
|
||||
|
||||
* Fix installing with Privileged Extension on 7.x
|
||||
|
||||
* Detect app updates via sytem OTA updates (#819)
|
||||
|
||||
### 0.102.1 (2017-02-24)
|
||||
|
||||
* Detect installed/uninstalled state more reliably (#854)
|
||||
|
||||
* Ensure dark theme gets applied everywhere (#750)
|
||||
|
||||
### 0.102 (2016-11-28)
|
||||
|
||||
* Optionally keep install history
|
||||
|
||||
* Optionally let repositories request installs and uninstalls of apps
|
||||
|
||||
* Support for APK extension files (OBB)
|
||||
|
||||
* Enable TLS v1.2 for HTTPS on all devices that support it (again)
|
||||
|
||||
* Better support for multiple repositories providing the same app
|
||||
|
||||
### 0.101 (2016-09-28)
|
||||
|
||||
* Support for Android 2.2 is dropped, 2.3.3 or later is now required
|
||||
|
||||
* Fixed APK Cache bugs, requiring the cache time be reset to one day
|
||||
|
||||
* Use Privileged Extension by default if installed
|
||||
|
||||
* Optionally grey out apps that require Anti-Features
|
||||
|
||||
* Translation updates
|
||||
|
||||
### 0.100.1 (2016-06-21)
|
||||
|
||||
* Fix background crash after installing or updating apps
|
||||
|
||||
* Fix crash if an app has a short description
|
||||
|
||||
* Fix background crash in the Wi-Fi state change swap service
|
||||
|
||||
* Fix crash if there is a problem listing the cached files to delete
|
||||
|
||||
### 0.100 (2016-06-07)
|
||||
|
||||
* Ability to download apps in the background
|
||||
|
||||
* Significant performance improvements when updating repositories
|
||||
|
||||
* Add setting to enable automatic downloading of updates
|
||||
|
||||
* Apks can now be kept on disk for various amounts of time
|
||||
|
||||
* Show what repository each apk comes from
|
||||
|
||||
* Better support for Android 6.0
|
||||
|
||||
* Translation updates
|
||||
|
||||
### 0.99.2 (2016-04-01)
|
||||
|
||||
* Stability fixes for app swap
|
||||
|
||||
### 0.99.1 (2016-03-22)
|
||||
|
||||
* Re-enable SNI support on Guardian Project repo
|
||||
|
||||
### 0.99 (2016-02-29)
|
||||
|
||||
* Add simple "Use Tor" setting
|
||||
|
||||
* Enable TLS v1.2 for HTTPS on all devices that support it
|
||||
|
||||
* Fix a series of Swap crashes, including a background crash
|
||||
|
||||
* Fix most Android lint errors and some warnings
|
||||
|
||||
* Translation updates
|
||||
|
||||
### 0.98.1 (2016-02-14)
|
||||
|
||||
* Fix crash when entering only a space into the search dialog
|
||||
|
||||
* Fix crash when entering slashes into the search dialog
|
||||
|
||||
* Fix potential fragment crash when installing/removing a package
|
||||
|
||||
* Fix crash when adding malformed URIs as repos
|
||||
|
||||
* Fix Android.mk build when the output dir. is a relative path
|
||||
|
||||
### 0.98 (2016-02-01)
|
||||
|
||||
* Add opt-in crash reporting via ACRA
|
||||
|
||||
* Add support for HTTP basic authentication of repos
|
||||
|
||||
* Fix repo updating on older devices with little memory
|
||||
|
||||
* Rework search to be incremental and without a separate activity
|
||||
|
||||
* Add English to the list of languages to use in the settings
|
||||
|
||||
* Fix "database is locked" seemingly random crash
|
||||
|
||||
* Cache installed app information in the database
|
||||
|
||||
* Add counter to the installed tab
|
||||
|
||||
* Improve repo update test coverage
|
||||
|
||||
* Translation updates
|
||||
|
||||
* Display license and author information in app details where appropriate
|
||||
|
||||
### 0.97 (2015-11-07)
|
||||
|
||||
* Add option to prompt for unstable updates globally
|
||||
@ -724,7 +36,7 @@
|
||||
|
||||
* Move the repo index update to a notification
|
||||
|
||||
* Handle APK downloads without a dialog
|
||||
* Handle apk downloads without a dialog
|
||||
|
||||
* Don't let users try to uninstall system apps that haven't been updated
|
||||
|
||||
@ -767,14 +79,14 @@
|
||||
and now easy to set up with root privileges
|
||||
|
||||
* Speed up and simplify repo update process by streaming the data out of the
|
||||
JAR file directly
|
||||
jar file directly
|
||||
|
||||
* Can now manually add swap repo via "Repositories" screen
|
||||
|
||||
* Using NFC during swap now initiates a proper swap, rather than redirecting to
|
||||
the "Repositories" screen
|
||||
|
||||
* Drop Ant support to greatly simplify the build process and its maintenance
|
||||
* Drop ant support to greatly simplify the build process and its maintenance
|
||||
|
||||
### 0.92 (2015-06-08)
|
||||
|
||||
@ -782,7 +94,7 @@
|
||||
|
||||
* Update Universal-Image-Loader to 1.9.4
|
||||
|
||||
* Make APK downloads progress be measured in kilobytes instead of bytes
|
||||
* Make Apk downloads progress be measured in kilobytes instead of bytes
|
||||
|
||||
* Add missing Sardinian language to the preferences
|
||||
|
||||
@ -795,9 +107,9 @@
|
||||
since it's not needed to use our own external app directory
|
||||
|
||||
* Fix a crash occuring if the user triggered a repo update that got rid of
|
||||
more than 450 APKs at once
|
||||
more than 450 apks at once
|
||||
|
||||
* Properly cache APK files on the SD card if configured this way
|
||||
* Properly cache apk files on the SD card if configured this way
|
||||
|
||||
* Drop support for unsigned repos in favour of signed ones and TOFU support
|
||||
|
||||
@ -811,7 +123,7 @@
|
||||
|
||||
* Don't crash if links on descriptions cannot be handled by any application
|
||||
|
||||
* Support building as part of a ROM via an Android.mk using Gradle
|
||||
* Support building as part of a ROM via an Android.mk using gradle
|
||||
|
||||
### 0.88 (2015-04-28)
|
||||
|
||||
@ -821,7 +133,7 @@
|
||||
* User interface language can now be changed from inside the F-Droid
|
||||
preferences without changing the system language (locale)
|
||||
|
||||
* Fix an issue where XML files could pile up in the data directory
|
||||
* Fix an issue where xml files could pile up in the data directory
|
||||
|
||||
* Improve app and search link handling while also adding supporting for Amazon
|
||||
and Google Play links
|
||||
@ -831,12 +143,12 @@
|
||||
|
||||
* Show a message to the user when there are no apps to display.
|
||||
|
||||
* Swapping is now two-way. Connecting to a swap on one device will
|
||||
initiate a swap on the other device
|
||||
* Swapping is now two way. Connecting to a swap on one device will
|
||||
initiate a swap on the other device.
|
||||
|
||||
* Small UI fixes to avoid overlapping text and improve app version ellipsizing
|
||||
|
||||
* Split up search terms when querying the app database—"fire fox" now
|
||||
* Split up search terms when querying the app database - "fire fox" now
|
||||
matches FireFox
|
||||
|
||||
* Ignore trailing paces in search terms introduced by some input methods
|
||||
@ -853,7 +165,7 @@
|
||||
|
||||
* Fix issue that caused the installed state label to sometimes not be updated
|
||||
|
||||
* Support for future devices with more than two CPU architectures
|
||||
* Support for future devices with more than two cpu architectures
|
||||
|
||||
* Show when packages are installed but not via F-Droid (mismatching signature)
|
||||
|
||||
@ -882,7 +194,7 @@
|
||||
|
||||
* Update Universal-Image-Loader and the Support libraries
|
||||
|
||||
* Switch the directory structure to better suit building with Gradle
|
||||
* Switch the directory structure to better suit building with gradle
|
||||
|
||||
* Translation updates
|
||||
|
||||
@ -904,14 +216,14 @@
|
||||
* HTTP Proxy support in Preferences
|
||||
|
||||
* Directly send installed apps to other devices via Bluetooth and Android Beam
|
||||
(NFC+Bluetooth), also compatible with Samsung/HTC S Beam
|
||||
(NFC+Bluetooth), also compatible with Samsung/HTC S-Beam
|
||||
|
||||
* Initial support for root and system installers, allowing the client to
|
||||
install APKs directly on its own
|
||||
install apks directly on its own
|
||||
|
||||
* Increased performance when updating from repository with many apps
|
||||
|
||||
* Switch to AppCompat from the Support library
|
||||
* Switch to Appcompat from the Support library
|
||||
|
||||
* Fix some crashes
|
||||
|
||||
@ -950,7 +262,7 @@
|
||||
* Send F-Droid via Bluetooth to any device that supports receiving APKs via
|
||||
Bluetooth (stock Android blocks APKs, most ROMs allow them)
|
||||
|
||||
* NFC support: Beam repo configs from the repo detail view (Android 4.0+),
|
||||
* NFC support: beam repo configs from the repo detail view (Android 4.0+),
|
||||
beam the F-Droid.apk from F-Droid's main screen (Android 4.1+)
|
||||
|
||||
* Support for repositories using self-signed HTTPS certificates through
|
||||
@ -964,7 +276,7 @@
|
||||
|
||||
* Major internal changes to enable F-Droid to handle repos with thousands
|
||||
of apps without slowing down too much. These internal changes will also make
|
||||
new features easier to implement
|
||||
new features easier to implement.
|
||||
|
||||
* Various fixes to layout issues introduced in 0.58
|
||||
|
||||
@ -978,7 +290,7 @@
|
||||
|
||||
* Tweaked some layouts, especially the app lists and their compact layout
|
||||
|
||||
* App lists now show more useful version information: Current version names,
|
||||
* App lists now show more useful version information: current version names,
|
||||
rather than number of versions available
|
||||
|
||||
* Reduce scroll lag in app lists by caching views in a ViewHolder
|
||||
@ -994,21 +306,21 @@
|
||||
can see what the checkbox preferences actually mean and what the edit and
|
||||
list preferences are set at
|
||||
|
||||
* Support for Dogecoin donation method added (wow)
|
||||
* Support for dogecoin donation method added (wow)
|
||||
|
||||
* Don't keep app icons older than 30 days in disc cache
|
||||
* Don't keep app icons older than 30 days on disc cache
|
||||
|
||||
* Always include incompatible APKs in memory to avoid issues with apps
|
||||
seemingly not having any APKs available
|
||||
* Always include incompatible apks in memory to avoid issues with apps
|
||||
seemingly not having any apks available
|
||||
|
||||
* Fixed a crash when trying to access a non-existing app
|
||||
|
||||
* F-Droid registers with Android to receive F-Droid URIs https://\*/fdroid/repo
|
||||
and fdroidrepos://
|
||||
|
||||
* Support including signing key fingerprint in repo URIs
|
||||
* support including signing key fingerprint in repo URIs
|
||||
|
||||
* When adding new repos that include the fingerprint, check to see whether
|
||||
* when adding new repos that include the fingerprint, check to see whether
|
||||
that repo exists in F-Droid already, and if the fingerprints match
|
||||
|
||||
* Other minor bug fixes
|
||||
@ -1019,12 +331,12 @@
|
||||
|
||||
* Fixed problems with category selection and permission lists on Android 2.X devices.
|
||||
|
||||
* Lots of translation updates, including new Norwegian translation
|
||||
* Lots of translation updates, including new Norwegian translation.
|
||||
|
||||
### 0.54 (2013-11-05)
|
||||
|
||||
* New options on the App Details screen to ignore all future updates for that
|
||||
particular app, or ignore just the current update
|
||||
particular app, or ignore just the current update.
|
||||
|
||||
* Apps with Anti-features are no longer hidden, and the corresponding
|
||||
preferences to unhide them are removed. Instead they are clearly marked on the
|
||||
@ -1033,7 +345,7 @@
|
||||
* Apps with incompatible native code architecture requirements are now correctly
|
||||
filtered.
|
||||
|
||||
* A bug that prevented update notifications from appearing has been fixed
|
||||
* A bug that prevented update notifications from appearing has been fixed.
|
||||
|
||||
* Theming support, with Light and Dark themes.
|
||||
|
||||
@ -1042,29 +354,29 @@
|
||||
installation.
|
||||
|
||||
* All app donation options have been grouped into a submenu, and Litecoin
|
||||
donation support has been added
|
||||
donation support has been added.
|
||||
|
||||
* App filter settings now take effect immediately
|
||||
* App filter settings now take effect immediately.
|
||||
|
||||
* APK native code ABIs are now shown in expert mode
|
||||
* Apk native code ABIs are now shown in expert mode.
|
||||
|
||||
* Search URIs for market://search and fdroid.search: are now handled
|
||||
* Search uris for market://search and fdroid.search: are now handled.
|
||||
|
||||
* A problem with ActionBar Up navigation on some devices has been fixed
|
||||
* A problem with ActionBar Up navigation on some devices has been fixed.
|
||||
|
||||
* Other minor bug fixes, and adjustments to spacings and layouts
|
||||
* Other minor bug fixes, and adjustments to spacings and layouts.
|
||||
|
||||
* Lots of translation updates
|
||||
* Lots of translation updates.
|
||||
|
||||
### 0.50 (2013-08-20)
|
||||
|
||||
* New basic app sharing functionality
|
||||
|
||||
* Handle f-droid.org web repo as well as market:// app URIs
|
||||
* Handle f-droid.org web repo as well as market:// app uris
|
||||
|
||||
* Search by just typing on main screen and search results screen
|
||||
|
||||
* Flattr and bitcoin donation methods added
|
||||
* Flattr and Bitcoin donation methods added
|
||||
|
||||
* Noticeable speedups when returning from installs and uninstalls
|
||||
|
||||
|
@ -26,16 +26,14 @@ track of modifications and fuzzy translations. Applying translations manually
|
||||
skips all of the fixes and checks, and overrides the fuzzy state of strings.
|
||||
|
||||
Note that you cannot change the English strings on Weblate. If you have any
|
||||
suggestions on how to improve them, open an issue or merge request like you
|
||||
would if you were making code changes. This way the changes can be reviewed
|
||||
before the source strings on Weblate are changed.
|
||||
|
||||
suggestions on how to improve them, open a merge request like you would if you
|
||||
were making code changes. This way the changes can be reviewed before the
|
||||
source strings on Weblate are changed.
|
||||
|
||||
## Code Style
|
||||
|
||||
We follow the default Android Studio code formatter (e.g. `Ctrl-Alt-L`). This
|
||||
should be more or less the same as [Android Java
|
||||
style](https://source.android.com/source/code-style.html). Some key points:
|
||||
We follow the [Android Java style](https://source.android.com/source/code-style.html).
|
||||
Some key points:
|
||||
|
||||
* Four space indentation
|
||||
* UTF-8 source files
|
||||
@ -47,35 +45,63 @@ style](https://source.android.com/source/code-style.html). Some key points:
|
||||
* Braces are always used after if, for and while
|
||||
|
||||
The current code base doesn't follow it entirely, but new code should follow
|
||||
it. We enforce some of these, but not all, via `./gradlew checkstyle`.
|
||||
it. We enforce some of these, but not all, via checkstyle.
|
||||
|
||||
## Debugging
|
||||
|
||||
To get all the logcat messages by F-Droid, you can run:
|
||||
|
||||
adb logcat | grep `adb shell ps | grep org.fdroid.fdroid | cut -c10-15`
|
||||
|
||||
## Building tips
|
||||
|
||||
* Use `gradle --daemon` if you are going to build F-Droid multiple times.
|
||||
* If you get a message like `Could not find com.android.support:support-...`,
|
||||
make sure that you have the latest Android support maven repository.
|
||||
|
||||
## Running the test suite
|
||||
|
||||
Before pushing commits to a merge request, make sure this passes:
|
||||
|
||||
./gradlew checkstyle pmd lint
|
||||
|
||||
In order to run the F-Droid test suite, you will need to have either a real device
|
||||
connected via `adb`, or an emulator running. Then, execute the following from the
|
||||
command line:
|
||||
|
||||
./gradlew check
|
||||
gradle connectedCheck
|
||||
|
||||
Many important tests require a device or emulator, but do not work in GitLab CI.
|
||||
That mean they need to be run locally, and that is usually easiest in Android
|
||||
Studio rather than the command line.
|
||||
Note that the CI already runs the tests on an emulator, so you don't
|
||||
necessarily have to do this yourself if you open a merge request as the tests
|
||||
will get run.
|
||||
|
||||
For a quick way to run a specific JUnit/Robolectric test:
|
||||
## Versioning
|
||||
|
||||
./gradlew testFullDebugUnitTest --tests *LocaleSelectionTest*
|
||||
Each stable version follows the `X.Y` pattern. Hotfix releases - i.e. when a
|
||||
stable has an important bug that needs immediate fixing - will follow the
|
||||
`X.Y.Z` pattern.
|
||||
|
||||
For a quick way to run a specific emulator test:
|
||||
Before each stable release, a number of alpha releases will be released. They
|
||||
will follow the pattern `X.Y-alphaN`, where `N` is the current alpha number.
|
||||
These will usually include changes and new features that have not been tested
|
||||
enough for a stable release, so use at your own risk. Testers and reporters
|
||||
are very welcome.
|
||||
|
||||
./gradlew connectedFullDebugAndroidTest \
|
||||
-Pandroid.testInstrumentationRunnerArguments.class=org.fdroid.fdroid.MainActivityExpressoTest
|
||||
The version codes use a number of digits per each of these keys: `XYYZNN`.
|
||||
So for example, 1.3.1 would be `103150` and 0.95-alpha13 would be `95013`
|
||||
(leading zeros are omitted).
|
||||
|
||||
Note that we use a trailing `50` for actual stable releases, so alphas are
|
||||
limited to `-alpha49`.
|
||||
|
||||
## Making releases
|
||||
This is an example of a release process for **0.95**:
|
||||
|
||||
See https://gitlab.com/fdroid/wiki/-/wikis/Internal/Release-Process#fdroidclient
|
||||
* We are currently at stable **0.94**
|
||||
* **0.95-alpha1** is released
|
||||
* **0.95-alpha2** is released
|
||||
* **0.95-alpha3** is released
|
||||
* `stable-v0.95` is branched and frozen
|
||||
* **0.95** is released
|
||||
* A bug is reported on the stable release and fixed
|
||||
* **0.95.1** is released with only that fix
|
||||
|
||||
As soon as a stable is tagged, master will move on to `-alpha0` on the next
|
||||
version. This is a temporary measure - until `-alpha1` is released - so that
|
||||
moving from stable to master doesn't require a downgrade. `-alpha0` versions
|
||||
will not be tagged nor released.
|
||||
|
@ -1,31 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
* Copyright (C) 2010-2012 Ciaran Gultnieks
|
||||
* Copyright (C) 2013-2017 Peter Serwylo
|
||||
* Copyright (C) 2014-2015 Daniel Martí
|
||||
* Copyright (C) 2014-2018 Hans-Christoph Steiner
|
||||
* Copyright (C) 2016 Dominik Schürmann
|
||||
* Copyright (C) 2018 Torsten Grote
|
||||
*
|
||||
* 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.fdroid.fdroid"
|
||||
android:installLocation="auto">
|
||||
android:installLocation="auto"
|
||||
android:versionCode="98001"
|
||||
android:versionName="0.98-alpha1"
|
||||
>
|
||||
|
||||
<uses-sdk
|
||||
tools:overrideLibrary="org.thoughtcrime.ssl.pinning"
|
||||
android:minSdkVersion="8"
|
||||
android:targetSdkVersion="22"
|
||||
/>
|
||||
|
||||
<supports-screens
|
||||
android:anyDensity="true"
|
||||
@ -33,7 +19,8 @@
|
||||
android:normalScreens="true"
|
||||
android:resizeable="true"
|
||||
android:smallScreens="true"
|
||||
android:xlargeScreens="true" />
|
||||
android:xlargeScreens="true"
|
||||
/>
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
@ -41,116 +28,82 @@
|
||||
<uses-feature
|
||||
android:name="android.hardware.wifi"
|
||||
android:required="false" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.touchscreen"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.nfc"
|
||||
android:required="false" />
|
||||
<uses-feature
|
||||
android:name="android.hardware.bluetooth"
|
||||
android:required="false" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="18" />
|
||||
<uses-permission android:name="android.permission.NFC" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
|
||||
<uses-permission android:name="org.fdroid.fdroid.privileged.USE_SERVICE" />
|
||||
|
||||
<!-- Indicate that F-Droid may request root access (introduced by Koush's Superuser app)
|
||||
This permission is deprecated, but necessary for some old superuser
|
||||
apps to actually grant superuser access to F-Droid. -->
|
||||
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
|
||||
|
||||
<application
|
||||
android:name=".FDroidApp"
|
||||
android:allowBackup="true"
|
||||
android:description="@string/app_description"
|
||||
android:fullBackupContent="@xml/backup_rules"
|
||||
android:name="FDroidApp"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="BobStore"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:label="@string/app_name"
|
||||
android:description="@string/app_description"
|
||||
android:allowBackup="true"
|
||||
android:theme="@style/AppThemeLight"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.App">
|
||||
>
|
||||
|
||||
<provider
|
||||
android:authorities="org.fdroid.fdroid.data.AppProvider"
|
||||
android:name="org.fdroid.fdroid.data.AppProvider"
|
||||
android:exported="false"/>
|
||||
|
||||
<provider
|
||||
android:authorities="org.fdroid.fdroid.data.RepoProvider"
|
||||
android:name="org.fdroid.fdroid.data.RepoProvider"
|
||||
android:exported="false"/>
|
||||
|
||||
<provider
|
||||
android:authorities="org.fdroid.fdroid.data.ApkProvider"
|
||||
android:name="org.fdroid.fdroid.data.ApkProvider"
|
||||
android:exported="false"/>
|
||||
|
||||
<provider
|
||||
android:authorities="org.fdroid.fdroid.data.InstalledAppProvider"
|
||||
android:name="org.fdroid.fdroid.data.InstalledAppProvider"
|
||||
android:exported="false"/>
|
||||
|
||||
<meta-data
|
||||
android:name="android.app.default_searchable"
|
||||
android:value=".SearchResults" />
|
||||
|
||||
<activity
|
||||
android:name=".privileged.views.InstallConfirmActivity"
|
||||
android:configChanges="layoutDirection|locale"
|
||||
android:excludeFromRecents="true"
|
||||
android:label="@string/menu_install"
|
||||
android:parentActivityName=".views.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.main.MainActivity" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".privileged.views.UninstallDialogActivity"
|
||||
android:excludeFromRecents="true" />
|
||||
|
||||
<activity
|
||||
android:name=".views.ManageReposActivity"
|
||||
android:configChanges="layoutDirection|locale"
|
||||
android:label="@string/menu_manage"
|
||||
android:launchMode="singleTask"
|
||||
android:parentActivityName=".views.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.main.MainActivity" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".NfcNotEnabledActivity"
|
||||
android:configChanges="layoutDirection|locale"
|
||||
android:noHistory="true" />
|
||||
|
||||
<activity
|
||||
android:name=".views.RepoDetailsActivity"
|
||||
android:configChanges="layoutDirection|locale"
|
||||
android:label="@string/repo_details"
|
||||
android:parentActivityName=".views.ManageReposActivity"
|
||||
android:windowSoftInputMode="stateHidden">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.ManageReposActivity" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".views.AppDetailsActivity"
|
||||
android:configChanges="layoutDirection|locale"
|
||||
android:exported="true"
|
||||
android:label="@string/app_details"
|
||||
android:parentActivityName=".views.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.main.MainActivity" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".acra.CrashReportActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:finishOnTaskLaunch="true"
|
||||
android:launchMode="singleInstance"
|
||||
android:process=":error_report" />
|
||||
|
||||
<activity android:name=".views.ScreenShotsActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".data.ObbUrlActivity"
|
||||
android:theme="@android:style/Theme.NoDisplay" />
|
||||
|
||||
<activity
|
||||
android:name=".installer.DefaultInstallerActivity"
|
||||
android:theme="@style/AppThemeTransparent" />
|
||||
<activity
|
||||
android:name=".installer.ErrorDialogActivity"
|
||||
android:theme="@style/AppThemeTransparent" />
|
||||
|
||||
<activity
|
||||
android:name=".views.main.MainActivity"
|
||||
android:name=".FDroid"
|
||||
android:launchMode="singleTop"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
android:configChanges="layoutDirection|locale|keyboardHidden|orientation|screenSize" >
|
||||
|
||||
<!-- App URLs -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
|
||||
<!-- App URLs -->
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
@ -160,40 +113,17 @@
|
||||
<data android:scheme="fdroid.app" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="false">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="https" />
|
||||
<data android:host="f-droid.org" />
|
||||
<data android:host="www.f-droid.org" />
|
||||
<data android:host="staging.f-droid.org" />
|
||||
<data android:pathPrefix="/app/" />
|
||||
<data android:pathPrefix="/packages/" />
|
||||
<data android:pathPrefix="/repository/browse" />
|
||||
<!-- support localized URLs -->
|
||||
<data android:pathPattern="/.*/packages/.*" />
|
||||
<data android:pathPattern="/.*/packages/.*/" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="http" />
|
||||
<data android:scheme="https" />
|
||||
<data android:host="f-droid.org" />
|
||||
<data android:host="www.f-droid.org" />
|
||||
<data android:host="staging.f-droid.org" />
|
||||
<data android:pathPrefix="/app/" />
|
||||
<data android:pathPrefix="/packages/" />
|
||||
<data android:pathPrefix="/repository/browse" />
|
||||
<!-- support localized URLs -->
|
||||
<data android:pathPattern="/.*/packages/.*" />
|
||||
<data android:pathPattern="/.*/packages/.*/" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
@ -202,12 +132,23 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="details"
|
||||
android:scheme="market" />
|
||||
<data android:scheme="http" />
|
||||
<data android:scheme="https" />
|
||||
<data android:host="f-droid.org" />
|
||||
<data android:host="www.f-droid.org" />
|
||||
<data android:pathPrefix="/repository/browse" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="market" android:host="details" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
@ -225,13 +166,10 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="apps"
|
||||
android:path="/android"
|
||||
android:scheme="amzn" />
|
||||
<data android:scheme="amzn" android:host="apps" android:path="/android" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
@ -244,7 +182,6 @@
|
||||
<data android:path="/gp/mas/dl/android" />
|
||||
</intent-filter>
|
||||
|
||||
|
||||
<!-- Search URLs -->
|
||||
|
||||
<intent-filter>
|
||||
@ -262,12 +199,10 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data
|
||||
android:host="search"
|
||||
android:scheme="market" />
|
||||
<data android:scheme="market" android:host="search" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
@ -279,11 +214,35 @@
|
||||
<data android:path="/store/search" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Handle NFC tags detected from outside our application -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEARCH" />
|
||||
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
<!--
|
||||
URIs that come in via NFC have scheme/host normalized to all lower case
|
||||
https://developer.android.com/reference/android/nfc/NfcAdapter.html#ACTION_NDEF_DISCOVERED
|
||||
-->
|
||||
<data android:scheme="fdroidrepo" />
|
||||
<data android:scheme="fdroidrepos" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter android:autoVerify="false">
|
||||
<!-- Repo URLs -->
|
||||
|
||||
<!--
|
||||
This intent serves two purposes: Swapping apps between devices and adding a
|
||||
repo from a website (e.g. https://guardianproject.info/fdroid/repo).
|
||||
We intercept both of these situations in the FDroid activity, and then redirect
|
||||
to the appropriate handler (swap handling, manage repos respectively) from there.
|
||||
|
||||
The reason for this is that the only differentiating factor is the presence
|
||||
of a "swap=1" in the query string, and intent-filter is unable to deal with
|
||||
query parameters. An alternative would be to do something like fdroidswap:// as
|
||||
a scheme, but then we. Need to copy/paste all of this intent-filter stuff and
|
||||
keep it up to date when it changes or a bug is found.
|
||||
-->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
@ -296,13 +255,13 @@
|
||||
character set, making for more compact QR Codes.
|
||||
-->
|
||||
<data android:scheme="http" />
|
||||
<data
|
||||
android:scheme="HTTP"
|
||||
tools:ignore="AppLinkUrlError" />
|
||||
<data android:scheme="HTTP" />
|
||||
<data android:scheme="https" />
|
||||
<data
|
||||
android:scheme="HTTPS"
|
||||
tools:ignore="AppLinkUrlError" />
|
||||
<data android:scheme="HTTPS" />
|
||||
<data android:scheme="fdroidrepo" />
|
||||
<data android:scheme="FDROIDREPO" />
|
||||
<data android:scheme="fdroidrepos" />
|
||||
<data android:scheme="FDROIDREPOS" />
|
||||
|
||||
<data android:host="*" />
|
||||
|
||||
@ -319,12 +278,6 @@
|
||||
<data android:pathPattern="/.*/.*/fdroid/repo/*" />
|
||||
<data android:pathPattern="/.*/.*/.*/fdroid/repo" />
|
||||
<data android:pathPattern="/.*/.*/.*/fdroid/repo/*" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/fdroid/repo" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/fdroid/repo/*" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/.*/fdroid/repo" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/.*/fdroid/repo/*" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/.*/.*/fdroid/repo" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/.*/.*/fdroid/repo/*" />
|
||||
<data android:path="/fdroid/archive" />
|
||||
<data android:pathPattern="/fdroid/archive/*" />
|
||||
<data android:pathPattern="/.*/fdroid/archive" />
|
||||
@ -333,8 +286,6 @@
|
||||
<data android:pathPattern="/.*/.*/fdroid/archive/*" />
|
||||
<data android:pathPattern="/.*/.*/.*/fdroid/archive" />
|
||||
<data android:pathPattern="/.*/.*/.*/fdroid/archive/*" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/fdroid/archive" />
|
||||
<data android:pathPattern="/.*/.*/.*/.*/fdroid/archive/*" />
|
||||
<!--
|
||||
Some QR Code scanners don't respect custom schemes like fdroidrepo://,
|
||||
so this is a workaround, since the local repo URL is all uppercase in
|
||||
@ -345,233 +296,153 @@
|
||||
<data android:pathPattern="/.*/.*/FDROID/REPO" />
|
||||
<data android:pathPattern="/.*/.*/.*/FDROID/REPO" />
|
||||
</intent-filter>
|
||||
|
||||
|
||||
<!-- Repo URLs -->
|
||||
|
||||
<!--
|
||||
This intent serves two purposes: Swapping apps between devices and adding a
|
||||
repo from a website (e.g. https://guardianproject.info/fdroid/repo).
|
||||
We intercept both of these situations in the FDroid activity, and then redirect
|
||||
to the appropriate handler (swap handling, manage repos respectively) from there.
|
||||
|
||||
The reason for this is that the only differentiating factor is the presence
|
||||
of a "swap=1" in the query string, and intent-filter is unable to deal with
|
||||
query parameters. An alternative would be to do something like fdroidswap:// as
|
||||
a scheme, but then we need to copy/paste all of this intent-filter stuff and
|
||||
keep it up to date when it changes or a bug is found.
|
||||
|
||||
This filter supports HTTP and HTTPS schemes. There is an additional filter for
|
||||
fdroidrepo:// and fdroidrepos://
|
||||
-->
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".privileged.views.InstallConfirmActivity"
|
||||
android:label="@string/menu_install"
|
||||
android:parentActivityName=".FDroid"
|
||||
android:configChanges="layoutDirection|locale" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".FDroid" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".views.ManageReposActivity"
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTask"
|
||||
android:parentActivityName=".FDroid"
|
||||
android:configChanges="layoutDirection|locale" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".FDroid" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
<!--
|
||||
Android's scheme matcher is case-sensitive, so include
|
||||
ALL CAPS versions to support ALL CAPS URLs in QR Codes.
|
||||
QR Codes have a special ALL CAPS mode that uses a reduced
|
||||
character set, making for more compact QR Codes.
|
||||
-->
|
||||
<data android:scheme="fdroidrepo" />
|
||||
<data
|
||||
android:scheme="FDROIDREPO"
|
||||
tools:ignore="AppLinkUrlError" />
|
||||
<data android:scheme="fdroidrepos" />
|
||||
<data
|
||||
android:scheme="FDROIDREPOS"
|
||||
tools:ignore="AppLinkUrlError" />
|
||||
<data android:mimeType="application/vnd.org.fdroid.fdroid.repo" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".NfcNotEnabledActivity"
|
||||
android:noHistory="true"
|
||||
android:configChanges="layoutDirection|locale" />
|
||||
<activity
|
||||
android:name=".views.RepoDetailsActivity"
|
||||
android:label="@string/repo_details"
|
||||
android:parentActivityName=".views.ManageReposActivity"
|
||||
android:windowSoftInputMode="stateHidden"
|
||||
android:configChanges="layoutDirection|locale" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.ManageReposActivity" />
|
||||
</activity>
|
||||
|
||||
<!--
|
||||
Same as the intent filter listening for repositories via https://*/fdroid/repo, except this
|
||||
looks for fdroidrepos://* and doesn't care what the path is.
|
||||
-->
|
||||
<activity
|
||||
android:name=".AppDetails"
|
||||
android:label="@string/app_details"
|
||||
android:exported="true"
|
||||
android:parentActivityName=".FDroid"
|
||||
android:configChanges="layoutDirection|locale" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".FDroid" />
|
||||
|
||||
</activity>
|
||||
<activity
|
||||
android:label="@string/menu_settings"
|
||||
android:name=".PreferencesActivity"
|
||||
android:parentActivityName=".FDroid" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".FDroid" />
|
||||
</activity>
|
||||
<activity
|
||||
android:label="@string/menu_swap"
|
||||
android:name=".views.swap.SwapWorkflowActivity"
|
||||
android:parentActivityName=".FDroid"
|
||||
android:theme="@style/SwapTheme.Wizard"
|
||||
android:screenOrientation="portrait"
|
||||
android:configChanges="orientation|keyboardHidden">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".FDroid" />
|
||||
</activity>
|
||||
<!-- Note: Theme.NoDisplay, this activity shows dialogs only -->
|
||||
<activity
|
||||
android:name=".privileged.install.InstallExtensionDialogActivity"
|
||||
android:theme="@android:style/Theme.NoDisplay" />
|
||||
<receiver
|
||||
android:name=".privileged.install.InstallExtensionBootReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
<!--
|
||||
URIs that come in via NFC have scheme/host normalized to all lower case
|
||||
https://developer.android.com/reference/android/nfc/NfcAdapter.html#ACTION_NDEF_DISCOVERED
|
||||
-->
|
||||
<data android:scheme="fdroidrepo" />
|
||||
<data android:scheme="fdroidrepos" />
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<activity
|
||||
android:name=".SearchResults"
|
||||
android:label="@string/search_results"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:parentActivityName=".FDroid"
|
||||
android:configChanges="layoutDirection|locale" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".FDroid" />
|
||||
|
||||
|
||||
<!-- Handle NFC tags detected from outside our application -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEARCH" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.app.searchable"
|
||||
android:resource="@xml/searchable" />
|
||||
|
||||
</activity>
|
||||
<activity android:name=".views.apps.AppListActivity" />
|
||||
<activity
|
||||
android:name=".views.installed.InstalledAppsActivity"
|
||||
android:parentActivityName=".views.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.main.MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".views.InstallHistoryActivity"
|
||||
android:parentActivityName=".views.main.MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".views.main.MainActivity" />
|
||||
</activity>
|
||||
<activity android:name=".AboutActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".installer.FileInstallerActivity"
|
||||
android:theme="@style/AppThemeTransparent" />
|
||||
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.AppProvider"
|
||||
android:authorities="${applicationId}.data.AppProvider"
|
||||
android:exported="false" />
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.RepoProvider"
|
||||
android:authorities="${applicationId}.data.RepoProvider"
|
||||
android:exported="false" />
|
||||
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.ApkProvider"
|
||||
android:authorities="${applicationId}.data.ApkProvider"
|
||||
android:exported="false" />
|
||||
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.TempApkProvider"
|
||||
android:authorities="${applicationId}.data.TempApkProvider"
|
||||
android:exported="false" />
|
||||
<!-- Note: AppThemeTransparent, this activity shows dialogs only -->
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.TempAppProvider"
|
||||
android:authorities="${applicationId}.data.TempAppProvider"
|
||||
android:exported="false" />
|
||||
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.InstalledAppProvider"
|
||||
android:authorities="${applicationId}.data.InstalledAppProvider"
|
||||
android:exported="false" />
|
||||
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.AppPrefsProvider"
|
||||
android:authorities="${applicationId}.data.AppPrefsProvider"
|
||||
android:exported="false" />
|
||||
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.PackageIdProvider"
|
||||
android:authorities="${applicationId}.data.PackageIdProvider"
|
||||
android:exported="false" />
|
||||
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.data.CategoryProvider"
|
||||
android:authorities="${applicationId}.data.CategoryProvider"
|
||||
android:exported="false" />
|
||||
|
||||
<provider
|
||||
android:name="org.fdroid.fdroid.installer.ApkFileProvider"
|
||||
android:authorities="${applicationId}.installer.ApkFileProvider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/apk_file_provider" />
|
||||
</provider>
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.installer"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/installer_file_provider" />
|
||||
</provider>
|
||||
<provider
|
||||
android:name="androidx.work.impl.WorkManagerInitializer"
|
||||
android:authorities="${applicationId}.workmanager-init"
|
||||
android:exported="false"
|
||||
tools:node="remove" />
|
||||
|
||||
<receiver android:name=".receiver.StartupReceiver">
|
||||
<receiver android:name=".receiver.StartupReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
|
||||
<category android:name="android.intent.category.HOME" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name=".receiver.PackageManagerReceiver">
|
||||
<receiver android:name=".receiver.PackageAddedReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||
<action android:name="android.intent.action.PACKAGE_CHANGED" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name=".receiver.PackageUpgradedReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name=".receiver.PackageRemovedReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver
|
||||
android:name=".NotificationBroadcastReceiver"
|
||||
android:exported="false">
|
||||
<!-- Doesn't require an intent-filter because it is explicitly invoked via Intent.setClass() -->
|
||||
</receiver>
|
||||
<receiver android:name=".receiver.DeviceStorageReceiver">
|
||||
<receiver android:name=".receiver.WifiStateChangeReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
|
||||
<action android:name="android.net.wifi.STATE_CHANGE" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name=".receiver.DownloadManagerReceiver" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service
|
||||
android:name=".UpdateService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
<service
|
||||
android:name=".UpdateJobService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
<service
|
||||
android:name=".net.DownloaderService"
|
||||
android:exported="false" />
|
||||
<service
|
||||
android:name=".installer.InstallerService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
|
||||
<service
|
||||
android:name=".DeleteCacheService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
|
||||
<service
|
||||
android:name=".net.ConnectivityMonitorService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
|
||||
<service
|
||||
android:name=".installer.InstallManagerService"
|
||||
android:exported="false" />
|
||||
|
||||
<service
|
||||
android:name=".installer.InstallHistoryService"
|
||||
android:exported="false" />
|
||||
<service
|
||||
android:name=".installer.ObfInstallerService"
|
||||
android:exported="false" />
|
||||
|
||||
<service
|
||||
android:name=".data.InstalledAppProviderService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
<service
|
||||
android:name=".AddRepoIntentService"
|
||||
android:exported="false" />
|
||||
|
||||
<service android:name=".UpdateService" />
|
||||
<service android:name=".net.WifiStateChangeService" />
|
||||
<service android:name=".localrepo.SwapService" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -71,28 +71,6 @@
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
details {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
ul > li {
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
ul > li a {
|
||||
font-size: xx-large;
|
||||
text-decoration: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
ul > li a img {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
#download-from-web {
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
@ -127,12 +105,5 @@
|
||||
<img src="swap-tick-not-done.png" class="tick not-done" alt="Not done" />
|
||||
</li>
|
||||
</ol>
|
||||
<br/><br/><br/><br/>
|
||||
<details>
|
||||
<summary>Available Apps</summary>
|
||||
<ul>
|
||||
{{APP_LIST}}
|
||||
</ul>
|
||||
</details>
|
||||
</body>
|
||||
</html>
|
BIN
F-Droid/assets/swap-icon.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
BIN
F-Droid/assets/swap-tick-done.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
F-Droid/assets/swap-tick-not-done.png
Normal file
After Width: | Height: | Size: 887 B |
224
F-Droid/build.gradle
Normal file
@ -0,0 +1,224 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'witness'
|
||||
apply plugin: 'checkstyle'
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile project(':privileged-api-lib')
|
||||
|
||||
compile 'com.android.support:support-v4:22.2.1'
|
||||
compile 'com.android.support:appcompat-v7:22.2.1'
|
||||
compile 'com.android.support:support-annotations:22.2.1'
|
||||
|
||||
compile 'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0'
|
||||
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'
|
||||
compile 'com.google.zxing:core:3.2.1'
|
||||
compile 'eu.chainfire:libsuperuser:1.0.0.201510071325'
|
||||
compile 'cc.mvdan.accesspoint:library:0.1.3'
|
||||
compile 'commons-net:commons-net:3.3'
|
||||
compile 'org.openhab.jmdns:jmdns:3.4.2'
|
||||
|
||||
androidTestCompile 'commons-io:commons-io:2.2'
|
||||
}
|
||||
|
||||
if (!hasProperty('sourceDeps')) {
|
||||
|
||||
repositories {
|
||||
// This is here until we sort out all dependencies from mavenCentral/jcenter. Once all of
|
||||
// the dependencies below have been sorted out, this can be removed.
|
||||
flatDir {
|
||||
dirs 'libs/binaryDeps'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'com.madgag.spongycastle:pkix:1.53.0.0'
|
||||
compile 'com.madgag.spongycastle:prov:1.53.0.0'
|
||||
compile 'com.madgag.spongycastle:core:1.53.0.0'
|
||||
|
||||
// Upstream doesn't have a binary on mavenCentral/jcenter yet:
|
||||
// https://github.com/kolavar/android-support-v4-preferencefragment/issues/13
|
||||
compile(name: 'support-v4-preferencefragment-release', ext: 'aar')
|
||||
|
||||
// Fork for F-Droid, including support for https. Not merged into upstream
|
||||
// yet (seems to be a little unsupported as of late), so not using mavenCentral/jcenter.
|
||||
compile(name: 'nanohttpd-2.1.0')
|
||||
|
||||
// Upstream doesn't have a binary on mavenCentral, and it is an SVN repo on
|
||||
// Google Code. We include this code directly in this repo, and have made
|
||||
// modifications that should be pushed to anyone who wants to maintain it.
|
||||
compile(name: 'zipsigner')
|
||||
}
|
||||
|
||||
// Only do the libraries imported from maven repositories. Our own libraries
|
||||
// (like privileged-api-lib) and the prebuilt jars already checked into the
|
||||
// source code don't need to be here.
|
||||
dependencyVerification {
|
||||
verify = [
|
||||
'com.android.support:support-v4:c62f0d025dafa86f423f48df9185b0d89496adbc5f6a9be5a7c394d84cf91423',
|
||||
'com.android.support:appcompat-v7:4b5ccba8c4557ef04f99aa0a80f8aa7d50f05f926a709010a54afd5c878d3618',
|
||||
'com.android.support:support-annotations:104f353b53d5dd8d64b2f77eece4b37f6b961de9732eb6b706395e91033ec70a',
|
||||
'org.thoughtcrime.ssl.pinning:AndroidPinning:afa1d74e699257fa75cb109ff29bac50726ef269c6e306bdeffe8223cee06ef4',
|
||||
'com.nostra13.universalimageloader:universal-image-loader:b99382c5536c7325ef8dc0a0fe9a6cad803cf3488942bea7e1cca4db3e5dec43',
|
||||
'com.google.zxing:core:b4d82452e7a6bf6ec2698904b332431717ed8f9a850224f295aec89de80f2259',
|
||||
'eu.chainfire:libsuperuser:a3ed4589e14f7d5ab255b3f31f7b79aaa1173a579035788f8db7c74215453a12',
|
||||
'cc.mvdan.accesspoint:library:dc89a085d6bc40381078b8dd7776b12bde0dbaf8ffbcddb17ec4ebc3edecc7ba',
|
||||
'com.madgag.spongycastle:pkix:6aba9b2210907a3d46dd3dcac782bb3424185290468d102d5207ebdc9796a905',
|
||||
'com.madgag.spongycastle:prov:029f26cd6b67c06ffa05702d426d472c141789001bcb15b7262ed86c868e5643',
|
||||
'com.madgag.spongycastle:core:9b6b7ac856b91bcda2ede694eccd26cefb0bf0b09b89f13cda05b5da5ff68c6b',
|
||||
'commons-net:commons-net:b35ad597f17a6f221575df2f729a9de8f70390509e047680771e713bad713fb9',
|
||||
'org.openhab.jmdns:jmdns:7a4b34b5606bbd2aff7fdfe629edcb0416fccd367fb59a099f210b9aba4f0bce',
|
||||
]
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
logger.info "Setting up *source* dependencies for F-Droid (because you passed in the -PsourceDeps argument to gradle while building)."
|
||||
|
||||
dependencies {
|
||||
compile(project(':extern:support-v4-preferencefragment')) {
|
||||
exclude module: 'support-v4'
|
||||
}
|
||||
compile project(':extern:nanohttpd:core')
|
||||
compile project(':extern:zipsigner')
|
||||
}
|
||||
|
||||
task binaryDeps(type: Copy, dependsOn: ':F-Droid:prepareReleaseDependencies') {
|
||||
|
||||
enabled = project.hasProperty('sourceDeps')
|
||||
description = "Copies .jar and .aar files from subproject dependencies in extern/ to F-Droid/libs. Requires the sourceDeps property to be set (\"gradle -PsourceDeps binaryDeps\")"
|
||||
|
||||
from('../extern/') {
|
||||
include 'support-v4-preferencefragment/build/outputs/aar/support-v4-preferencefragment-release.aar'
|
||||
include 'nanohttpd/core/build/libs/nanohttpd-2.1.0.jar'
|
||||
include 'zipsigner/build/libs/zipsigner.jar'
|
||||
}
|
||||
|
||||
into 'libs/binaryDeps'
|
||||
includeEmptyDirs false
|
||||
|
||||
eachFile { FileCopyDetails details ->
|
||||
// Don't copy to a sub folder such as libs/binaryDeps/Project/build/outputs/aar/project.aar, but
|
||||
// rather libs/binaryDeps/project.aar.
|
||||
details.path = details.name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 22
|
||||
buildToolsVersion '23.0.2'
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = ['src']
|
||||
resources.srcDirs = ['src']
|
||||
aidl.srcDirs = ['src']
|
||||
renderscript.srcDirs = ['src']
|
||||
res.srcDirs = ['res']
|
||||
assets.srcDirs = ['assets']
|
||||
}
|
||||
|
||||
androidTest.setRoot('test')
|
||||
androidTest {
|
||||
manifest.srcFile 'test/AndroidManifest.xml'
|
||||
java.srcDirs = ['test/src']
|
||||
resources.srcDirs = ['test/src']
|
||||
aidl.srcDirs = ['test/src']
|
||||
renderscript.srcDirs = ['test/src']
|
||||
res.srcDirs = ['test/res']
|
||||
assets.srcDirs = ['test/assets']
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
// use proguard on debug too since we have unknowingly broken
|
||||
// release builds before.
|
||||
all {
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
compileOptions.encoding = "UTF-8"
|
||||
|
||||
// Use Java 1.7, requires minSdk 8
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
abortOnError false
|
||||
|
||||
htmlReport true
|
||||
xmlReport false
|
||||
textReport false
|
||||
|
||||
// Our translations are crowd-sourced
|
||||
disable 'MissingTranslation'
|
||||
|
||||
// We have locale folders like "values-he" and "values-id" as symlinks
|
||||
// since some devices ship deprecated locale codes
|
||||
disable 'LocaleFolder'
|
||||
|
||||
// Like supportsRtl or parentActivityName. They are on purpose.
|
||||
disable 'UnusedAttribute'
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'META-INF/LICENSE'
|
||||
exclude 'META-INF/LICENSE.txt'
|
||||
exclude 'META-INF/NOTICE'
|
||||
exclude 'META-INF/NOTICE.txt'
|
||||
exclude 'META-INF/INDEX.LIST'
|
||||
exclude '.readme'
|
||||
}
|
||||
}
|
||||
|
||||
task checkstyle(type: Checkstyle) {
|
||||
configFile file("${project.rootDir}/config/checkstyle/checkstyle.xml")
|
||||
source 'src', 'test/src'
|
||||
include '**/*.java'
|
||||
exclude '**/gen/**'
|
||||
|
||||
classpath = files()
|
||||
}
|
||||
|
||||
// This person took the example code below from another blogpost online, however
|
||||
// I lost the reference to it:
|
||||
// http://stackoverflow.com/questions/23297562/gradle-javadoc-and-android-documentation
|
||||
android.applicationVariants.all { variant ->
|
||||
|
||||
task("generate${variant.name}Javadoc", type: Javadoc) {
|
||||
title = "$name $version API"
|
||||
description "Generates Javadoc for F-Droid."
|
||||
source = variant.javaCompile.source
|
||||
|
||||
def sdkDir
|
||||
Properties properties = new Properties()
|
||||
File localProps = project.rootProject.file('local.properties')
|
||||
if (localProps.exists()) {
|
||||
properties.load(localProps.newDataInputStream())
|
||||
sdkDir = properties.getProperty('sdk.dir')
|
||||
} else {
|
||||
sdkDir = System.getenv('ANDROID_HOME')
|
||||
}
|
||||
if (!sdkDir) {
|
||||
throw new ProjectConfigurationException("Cannot find android sdk. Make sure sdk.dir is defined in local.properties or the environment variable ANDROID_HOME is set.", null)
|
||||
}
|
||||
|
||||
ext.androidJar = "${sdkDir}/platforms/${android.compileSdkVersion}/android.jar"
|
||||
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
|
||||
options.links("http://docs.oracle.com/javase/7/docs/api/");
|
||||
options.links("http://d.android.com/reference/");
|
||||
exclude '**/BuildConfig.java'
|
||||
exclude '**/R.java'
|
||||
}
|
||||
}
|
BIN
F-Droid/libs/binaryDeps/nanohttpd-2.1.0.jar
Normal file
BIN
F-Droid/libs/binaryDeps/zipsigner.jar
Normal file
35
F-Droid/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
-dontobfuscate
|
||||
-dontoptimize
|
||||
-keepattributes SourceFile,LineNumberTable,Exceptions
|
||||
-keep class org.fdroid.fdroid.** {*;}
|
||||
-dontskipnonpubliclibraryclassmembers
|
||||
-dontwarn android.test.**
|
||||
-dontwarn com.android.support.test.**
|
||||
|
||||
-dontwarn javax.naming.**
|
||||
-dontnote android.support.**
|
||||
-dontnote **ILicensingService
|
||||
|
||||
# These libraries are known to break if minification is enabled on them. They
|
||||
# use reflection to instantiate classes, for example. If the keep flags are
|
||||
# removed, proguard will strip classes which are required, which may result in
|
||||
# crashes.
|
||||
-keep class kellinwood.security.zipsigner.** {*;}
|
||||
-keep class org.spongycastle.** {*;}
|
||||
|
||||
# This keeps class members used for SystemInstaller IPC.
|
||||
# Reference: https://gitlab.com/fdroid/fdroidclient/issues/79
|
||||
-keepclassmembers class * implements android.os.IInterface {
|
||||
public *;
|
||||
}
|
||||
|
||||
# Samsung Android 4.2 bug
|
||||
# https://code.google.com/p/android/issues/detail?id=78377
|
||||
-keepnames class !android.support.v7.internal.view.menu.**, ** {*;}
|
||||
|
||||
-keep public class android.support.v7.widget.** {*;}
|
||||
-keep public class android.support.v7.internal.widget.** {*;}
|
||||
|
||||
-keep public class * extends android.support.v4.view.ActionProvider {
|
||||
public <init>(android.content.Context);
|
||||
}
|
BIN
F-Droid/res/drawable-hdpi/circle.png
Normal file
After Width: | Height: | Size: 498 B |
BIN
F-Droid/res/drawable-hdpi/hotspot.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_add_circle_outline_white.png
Normal file
After Width: | Height: | Size: 947 B |
BIN
F-Droid/res/drawable-hdpi/ic_add_white.png
Normal file
After Width: | Height: | Size: 127 B |
BIN
F-Droid/res/drawable-hdpi/ic_arrow_forward_white.png
Normal file
After Width: | Height: | Size: 195 B |
BIN
F-Droid/res/drawable-hdpi/ic_bitcoin.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_bluetooth_white.png
Normal file
After Width: | Height: | Size: 307 B |
BIN
F-Droid/res/drawable-hdpi/ic_changelog.png
Normal file
After Width: | Height: | Size: 788 B |
BIN
F-Droid/res/drawable-hdpi/ic_check_circle_white.png
Normal file
After Width: | Height: | Size: 738 B |
BIN
F-Droid/res/drawable-hdpi/ic_clear.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
F-Droid/res/drawable-hdpi/ic_close_white.png
Normal file
After Width: | Height: | Size: 634 B |
BIN
F-Droid/res/drawable-hdpi/ic_coins_s.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_delete_white.png
Normal file
After Width: | Height: | Size: 161 B |
BIN
F-Droid/res/drawable-hdpi/ic_do_not_disturb_white.png
Normal file
After Width: | Height: | Size: 476 B |
BIN
F-Droid/res/drawable-hdpi/ic_donate.png
Normal file
After Width: | Height: | Size: 974 B |
BIN
F-Droid/res/drawable-hdpi/ic_expand_less_grey600.png
Normal file
After Width: | Height: | Size: 280 B |
BIN
F-Droid/res/drawable-hdpi/ic_expand_more_grey600.png
Normal file
After Width: | Height: | Size: 291 B |
BIN
F-Droid/res/drawable-hdpi/ic_fdroid_grey.png
Normal file
After Width: | Height: | Size: 494 B |
BIN
F-Droid/res/drawable-hdpi/ic_flattr.png
Normal file
After Width: | Height: | Size: 919 B |
BIN
F-Droid/res/drawable-hdpi/ic_help_white.png
Normal file
After Width: | Height: | Size: 476 B |
BIN
F-Droid/res/drawable-hdpi/ic_issues.png
Normal file
After Width: | Height: | Size: 760 B |
BIN
F-Droid/res/drawable-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_litecoin.png
Normal file
After Width: | Height: | Size: 958 B |
BIN
F-Droid/res/drawable-hdpi/ic_lock_24dp_grey600.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
F-Droid/res/drawable-hdpi/ic_network_wifi_white.png
Normal file
After Width: | Height: | Size: 786 B |
BIN
F-Droid/res/drawable-hdpi/ic_nfc_white.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
F-Droid/res/drawable-hdpi/ic_play_arrow_white.png
Normal file
After Width: | Height: | Size: 195 B |
BIN
F-Droid/res/drawable-hdpi/ic_qr_grey.png
Normal file
After Width: | Height: | Size: 746 B |
BIN
F-Droid/res/drawable-hdpi/ic_refresh_white.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
F-Droid/res/drawable-hdpi/ic_repo_app_default.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_search_white.png
Normal file
After Width: | Height: | Size: 396 B |
BIN
F-Droid/res/drawable-hdpi/ic_settings_white.png
Normal file
After Width: | Height: | Size: 460 B |
BIN
F-Droid/res/drawable-hdpi/ic_share_white.png
Normal file
After Width: | Height: | Size: 397 B |
BIN
F-Droid/res/drawable-hdpi/ic_source_code.png
Normal file
After Width: | Height: | Size: 416 B |
BIN
F-Droid/res/drawable-hdpi/ic_stat_notify.png
Normal file
After Width: | Height: | Size: 681 B |
BIN
F-Droid/res/drawable-hdpi/ic_stat_notify_updates.png
Normal file
After Width: | Height: | Size: 1003 B |
BIN
F-Droid/res/drawable-hdpi/ic_swap.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_toc_white.png
Normal file
After Width: | Height: | Size: 113 B |
BIN
F-Droid/res/drawable-hdpi/ic_website.png
Normal file
After Width: | Height: | Size: 928 B |
BIN
F-Droid/res/drawable-hdpi/nfc_touch.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
F-Droid/res/drawable-hdpi/swap_start_header.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 153 B After Width: | Height: | Size: 153 B |
BIN
F-Droid/res/drawable-hdpi/wifi.png
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
F-Droid/res/drawable-ldpi/circle.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
F-Droid/res/drawable-ldpi/hotspot.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
F-Droid/res/drawable-ldpi/ic_fdroid_grey.png
Normal file
After Width: | Height: | Size: 356 B |
BIN
F-Droid/res/drawable-ldpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
F-Droid/res/drawable-ldpi/ic_qr_grey.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
F-Droid/res/drawable-ldpi/ic_repo_app_default.png
Normal file
After Width: | Height: | Size: 890 B |
BIN
F-Droid/res/drawable-ldpi/ic_stat_notify.png
Normal file
After Width: | Height: | Size: 462 B |
BIN
F-Droid/res/drawable-ldpi/ic_stat_notify_updates.png
Normal file
After Width: | Height: | Size: 602 B |
BIN
F-Droid/res/drawable-ldpi/ic_swap.png
Normal file
After Width: | Height: | Size: 460 B |
BIN
F-Droid/res/drawable-ldpi/nfc_touch.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
F-Droid/res/drawable-ldpi/swap_start_header.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
F-Droid/res/drawable-ldpi/wifi.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
F-Droid/res/drawable-mdpi/circle.png
Normal file
After Width: | Height: | Size: 370 B |
BIN
F-Droid/res/drawable-mdpi/hotspot.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
F-Droid/res/drawable-mdpi/ic_add_circle_outline_white.png
Normal file
After Width: | Height: | Size: 650 B |
BIN
F-Droid/res/drawable-mdpi/ic_add_white.png
Normal file
After Width: | Height: | Size: 88 B |
BIN
F-Droid/res/drawable-mdpi/ic_arrow_forward_white.png
Normal file
After Width: | Height: | Size: 160 B |
BIN
F-Droid/res/drawable-mdpi/ic_bitcoin.png
Normal file
After Width: | Height: | Size: 825 B |
BIN
F-Droid/res/drawable-mdpi/ic_bluetooth_white.png
Normal file
After Width: | Height: | Size: 213 B |
BIN
F-Droid/res/drawable-mdpi/ic_changelog.png
Normal file
After Width: | Height: | Size: 623 B |
BIN
F-Droid/res/drawable-mdpi/ic_check_circle_white.png
Normal file
After Width: | Height: | Size: 510 B |
BIN
F-Droid/res/drawable-mdpi/ic_clear.png
Normal file
After Width: | Height: | Size: 164 B |
BIN
F-Droid/res/drawable-mdpi/ic_close_white.png
Normal file
After Width: | Height: | Size: 495 B |
BIN
F-Droid/res/drawable-mdpi/ic_coins_s.png
Normal file
After Width: | Height: | Size: 741 B |
BIN
F-Droid/res/drawable-mdpi/ic_delete_white.png
Normal file
After Width: | Height: | Size: 115 B |
BIN
F-Droid/res/drawable-mdpi/ic_do_not_disturb_white.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
F-Droid/res/drawable-mdpi/ic_donate.png
Normal file
After Width: | Height: | Size: 801 B |
BIN
F-Droid/res/drawable-mdpi/ic_expand_less_grey600.png
Normal file
After Width: | Height: | Size: 240 B |
BIN
F-Droid/res/drawable-mdpi/ic_expand_more_grey600.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
F-Droid/res/drawable-mdpi/ic_fdroid_grey.png
Normal file
After Width: | Height: | Size: 384 B |
BIN
F-Droid/res/drawable-mdpi/ic_flattr.png
Normal file
After Width: | Height: | Size: 760 B |
BIN
F-Droid/res/drawable-mdpi/ic_help_white.png
Normal file
After Width: | Height: | Size: 304 B |
BIN
F-Droid/res/drawable-mdpi/ic_issues.png
Normal file
After Width: | Height: | Size: 621 B |
BIN
F-Droid/res/drawable-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
F-Droid/res/drawable-mdpi/ic_litecoin.png
Normal file
After Width: | Height: | Size: 727 B |
BIN
F-Droid/res/drawable-mdpi/ic_lock_24dp_grey600.png
Normal file
After Width: | Height: | Size: 225 B |
BIN
F-Droid/res/drawable-mdpi/ic_network_wifi_white.png
Normal file
After Width: | Height: | Size: 538 B |
BIN
F-Droid/res/drawable-mdpi/ic_nfc_white.png
Normal file
After Width: | Height: | Size: 160 B |
BIN
F-Droid/res/drawable-mdpi/ic_play_arrow_white.png
Normal file
After Width: | Height: | Size: 157 B |