Compare commits

..

5 Commits

Author SHA1 Message Date
Daniel Martí
32c6a94fbb Bump to 0.96.1 2015-09-24 16:42:14 -07:00
Daniel Martí
2caef8b4b1 Update changelog 2015-09-24 16:42:11 -07:00
Daniel Martí
d0af343dfd Backport repo update notification 2.X crash fix
Fixed by @pserwylo in master, backporting for 0.96.1. Fixes #421.
2015-09-24 16:38:15 -07:00
Daniel Martí
1ebe9df9a2 Bump to 0.96 2015-09-02 17:43:39 -07:00
Daniel Martí
b70ec6b7aa Update changelog for 0.96 2015-09-02 17:43:31 -07:00
4796 changed files with 477330 additions and 120916 deletions

1
.gitattributes vendored
View File

@ -1 +0,0 @@
*.gpg binary

14
.gitignore vendored
View File

@ -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
@ -39,11 +45,3 @@ out
# Imported libs
extern/*/libs/
extern/*/*/libs/
# Tests
junit-report.xml
# Screen dumps from Android Studio/DDMS
captures/
/fdroid/

View File

@ -1,142 +1,26 @@
stages:
- test
- deploy
before_script:
- apt-get -q update -y
- echo " == Installing required packages"
- apt-get -q install -y wget tar unzip lib32stdc++6 lib32z1
- echo " == Installing OpenJDK 7"
- apt-get -q install -y openjdk-7-jdk
- echo " == Installing the Android SDK"
- wget -q -O android-sdk.tgz https://dl.google.com/android/android-sdk_r24.3.4-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
- echo y | android -s update sdk --no-ui -a -t tools
- echo y | android -s update sdk --no-ui -a -t build-tools-23.0.0
- echo y | android -s update sdk --no-ui -a -t android-22
- echo y | android -s update sdk --no-ui -a -t extra-android-m2repository
- echo " == Installing Gradle"
- wget -q -O gradle.zip https://services.gradle.org/distributions/gradle-2.4-bin.zip
- unzip -q gradle.zip
- export PATH="$PWD/gradle-2.4/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
build:
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
- gradle build

View File

@ -1,3 +0,0 @@
[weblate]
url = https://hosted.weblate.org/api/
translation = f-droid/f-droid

View File

@ -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)

View File

@ -1,721 +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
* Add support for free Certificate Authorities: cert.startcom.org and
letsencrypt.org
* Rework the privileged installer to use an extension as a privileged app
instead of F-Droid itself
* Add a new night theme
* Fix crash when trying to install incompatible apps with the privileged
installer
* Fix downloading from HTTP servers that did not send a Content-Length
* Material design tweaks and fixes, including repo and app screens makeovers
* Add StrictMode to debug builds
* Make the GitLab CI run the tests in an emulator
* Use gradle-witness to ensure the reproducibility of the build with libraries
pulled from maven repositories
* Switched to Weblate for translations
* Translation updates
### 0.96.1 (2015-09-24)
* Fix crash when updating repos on Android 2.3.7 or older
@ -724,7 +6,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 +49,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 +64,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 +77,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 +93,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 +103,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 +113,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 +135,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 +164,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 +186,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 +232,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 +246,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 +260,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 +276,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 +301,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 +315,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 +324,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

View File

@ -1,12 +1,10 @@
# Contributing
Contributing
============
## Reporting issues
Reporting issues
----------------
If you find an issue in the client, you can use our [Issue
Tracker](https://gitlab.com/fdroid/fdroidclient/issues). Make sure that it
hasn't yet been reported by searching first.
Remember to include the following information:
Remember to include:
* Android version
* Device model
@ -14,28 +12,11 @@ Remember to include the following information:
* Steps to reproduce the issue
* Logcat - see [instructions](https://f-droid.org/wiki/page/Getting_logcat_messages_after_crash)
## Translating
Style
-----
The strings are translated using [Weblate](https://weblate.org/en/). Follow
[these instructions](https://hosted.weblate.org/engage/f-droid/) if you would
like to contribute.
Please *do not* send merge requests or patches modifying the translations. Use
Weblate instead - it applies a series of fixes and suggestions, plus it keeps
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.
## 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 [Google Java style](https://google-styleguide.googlecode.com/svn/trunk/javaguide.html).
To summarize it:
* Four space indentation
* UTF-8 source files
@ -47,35 +28,11 @@ 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.
Debugging
---------
## Running the test suite
To get all the logcat messages by F-Droid, you can run:
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
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.
For a quick way to run a specific JUnit/Robolectric test:
./gradlew testFullDebugUnitTest --tests *LocaleSelectionTest*
For a quick way to run a specific emulator test:
./gradlew connectedFullDebugAndroidTest \
-Pandroid.testInstrumentationRunnerArguments.class=org.fdroid.fdroid.MainActivityExpressoTest
## Making releases
See https://gitlab.com/fdroid/wiki/-/wikis/Internal/Release-Process#fdroidclient
adb logcat | grep `adb shell ps | grep org.fdroid.fdroid | cut -c10-15`

488
F-Droid/AndroidManifest.xml Normal file
View File

@ -0,0 +1,488 @@
<?xml version="1.0" encoding="utf-8"?>
<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:versionCode="96150"
android:versionName="0.96.1"
>
<uses-sdk
tools:overrideLibrary="org.thoughtcrime.ssl.pinning"
android:minSdkVersion="8"
android:targetSdkVersion="22"
/>
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true"
/>
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<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_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.NFC" />
<!-- These permissions are only granted when F-Droid is installed as a system-app! -->
<uses-permission android:name="android.permission.INSTALL_PACKAGES"
tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.DELETE_PACKAGES"
tools:ignore="ProtectedPermissions"/>
<!-- 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:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:description="@string/app_description"
android:allowBackup="true"
android:theme="@style/AppThemeLight"
android:supportsRtl="true"
>
<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"/>
<activity
android:name=".FDroid"
android:launchMode="singleTop"
android:configChanges="keyboardHidden|orientation|screenSize" >
<!-- App URLs -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="fdroid.app" />
</intent-filter>
<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:pathPrefix="/app/" />
</intent-filter>
<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:pathPrefix="/repository/browse" />
</intent-filter>
<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" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="play.google.com" /> <!-- they don't do www. -->
<data android:path="/store/apps/details" />
</intent-filter>
<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="amzn" android:host="apps" android:path="/android" />
</intent-filter>
<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="amazon.com" />
<data android:host="www.amazon.com" />
<data android:path="/gp/mas/dl/android" />
</intent-filter>
<!-- Search URLs -->
<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="fdroid.search" />
</intent-filter>
<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="search" />
</intent-filter>
<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="play.google.com" /> <!-- they don't do www. -->
<data android:path="/store/search" />
</intent-filter>
<!-- Handle NFC tags detected from outside our application -->
<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" />
</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.
-->
<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="http" />
<data android:scheme="HTTP" />
<data android:scheme="https" />
<data android:scheme="HTTPS" />
<data android:scheme="fdroidrepo" />
<data android:scheme="FDROIDREPO" />
<data android:scheme="fdroidrepos" />
<data android:scheme="FDROIDREPOS" />
<data android:host="*" />
<!--
The pattern matcher here is poorly implemented, in particular the * is
non-greedy, so you have to do stupid tricks to match patterns that have
repeat characters in them. http://stackoverflow.com/a/8599921/306864
-->
<data android:path="/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" />
<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
the QR Code for sending the local repo to another device.
-->
<data android:path="/FDROID/REPO" />
<data android:pathPattern="/.*/FDROID/REPO" />
<data android:pathPattern="/.*/.*/FDROID/REPO" />
<data android:pathPattern="/.*/.*/.*/FDROID/REPO" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchResults" />
</activity>
<activity
android:name=".views.swap.ConnectSwapActivity"
android:theme="@style/SwapTheme.Wizard.ReceiveSwap"
android:label=""
android:noHistory="true"
android:parentActivityName=".FDroid"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".FDroid" />
</activity>
<activity
android:name=".installer.InstallConfirmActivity"
android:label="@string/menu_install"
android:parentActivityName=".FDroid">
<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" >
<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.DEFAULT" />
<data android:mimeType="application/vnd.org.fdroid.fdroid.repo" />
</intent-filter>
</activity>
<activity
android:name=".NfcNotEnabledActivity"
android:noHistory="true" />
<!--<activity android:name=".views.QrWizardDownloadActivity" />
<activity android:name=".views.QrWizardWifiNetworkActivity" />
<activity
android:name=".views.LocalRepoActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/local_repo"
android:launchMode="singleTop"
android:parentActivityName=".FDroid"
android:screenOrientation="portrait" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".FDroid" />
</activity>
<activity
android:name=".views.SelectLocalAppsActivity"
android:label="@string/setup_repo"
android:parentActivityName=".views.LocalRepoActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.LocalRepoActivity" />
</activity>-->
<activity
android:name=".views.RepoDetailsActivity"
android:label="@string/menu_manage"
android:parentActivityName=".views.ManageReposActivity"
android:windowSoftInputMode="stateHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.ManageReposActivity" />
</activity>
<activity
android:name=".AppDetails"
android:label="@string/app_details"
android:exported="true"
android:parentActivityName=".FDroid" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".FDroid" />
</activity>
<activity
android:name=".views.swap.SwapAppListActivity$SwapAppDetails"
android:label="@string/app_details"
android:parentActivityName=".views.swap.SwapAppListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".views.swap.SwapAppListActivity" />
</activity>
<activity
android:label="@string/menu_preferences"
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.SwapActivity"
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>
<activity
android:label="@string/swap"
android:name=".views.swap.SwapAppListActivity"
android:parentActivityName=".FDroid"
android:theme="@style/SwapTheme.AppList"
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=".installer.InstallIntoSystemDialogActivity"
android:theme="@android:style/Theme.NoDisplay" />
<receiver
android:name=".installer.InstallIntoSystemBootReceiver" >
<intent-filter>
<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" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".FDroid" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<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.PackageAddedReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<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=".receiver.WifiStateChangeReceiver" >
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
<service android:name=".UpdateService" />
<service android:name=".net.WifiStateChangeService" />
<service android:name=".localrepo.LocalRepoService" />
</application>
</manifest>

View File

@ -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,10 @@
<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>
<div id="download-from-web">
<!--<a href="https://f-droid.org/repository/browse/">-->
Or, download apps from the web
<!--</a>-->
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

207
F-Droid/build.gradle Normal file
View File

@ -0,0 +1,207 @@
apply plugin: 'com.android.application'
if ( !hasProperty( 'sourceDeps' ) ) {
logger.info "Setting up *binary* dependencies for F-Droid (if you'd prefer to build from source, pass the -PsourceDeps argument to gradle while building)."
repositories {
jcenter()
// 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.android.support:support-v4:22.2.1'
compile 'com.android.support:appcompat-v7:22.1.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.0'
compile 'eu.chainfire:libsuperuser:1.0.0.201504231659'
// We use a slightly modified spongycastle, see
// openkeychain/spongycastle with some changes on top of 1.51.0.0
compile 'com.madgag.spongycastle:pkix:1.51.0.0'
compile 'com.madgag.spongycastle:prov:1.51.0.0'
compile 'com.madgag.spongycastle:core:1.51.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. Looks discontinued.
compile(name: 'zipsigner')
// Project semi-abandoned, 3.4.1 is from 2011 and we use trunk from 2013
// TODO: active again and 3.4.2 now released, switch when available in jcenter:
// https://github.com/openhab/jmdns/issues/6
compile(name: 'jmdns')
androidTestCompile 'commons-io:commons-io:2.2'
}
} else {
logger.info "Setting up *source* dependencies for F-Droid (because you passed in the -PsourceDeps argument to gradle while building)."
repositories {
jcenter()
}
dependencies {
compile project(':extern:AndroidPinning')
compile project(':extern:UniversalImageLoader:library')
compile project(':extern:libsuperuser:libsuperuser')
compile project(':extern:nanohttpd:core')
compile project(':extern:jmdns')
compile project(':extern:zipsigner')
compile project(':extern:zxing-core')
compile( project(':extern:support-v4-preferencefragment') ) {
exclude module: 'support-v4'
}
compile 'com.android.support:support-v4:22.2.1',
'com.android.support:appcompat-v7:22.1.1',
'com.android.support:support-annotations:22.2.1'
androidTestCompile 'commons-io:commons-io:2.2'
}
}
task cleanBinaryDeps(type: Delete) {
enabled = project.hasProperty('sourceDeps')
description = "Removes all .jar and .aar files from F-Droid/libs/. Requires the sourceDeps property to be set (\"gradle -PsourceDeps cleanBinaryDeps\")"
delete fileTree('libs/binaryDeps') {
include '*.aar'
include '*.jar'
}
}
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',
'nanohttpd/core/build/libs/nanohttpd-2.1.0.jar',
'zipsigner/build/libs/zipsigner.jar',
'jmdns/build/libs/jmdns.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.0'
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 {
all {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
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'
}
}
// 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'
}
}

52
F-Droid/libs/README.md Normal file
View File

@ -0,0 +1,52 @@
# Licenses
To see which license any one of these libraries is under, consult the extern/
directory. If you have checked out the source for all dependencies (`git
submodule update --init` from the root directory if there are any submodules),
then you should be able to find the relevant LICENSE file for each, or else
you can consult upstream.
# Building libraries from source
As a matter of principle, and also to comply with the GPLv3+, F-Droid should always be able to be built
from source, _including all of its dependencies_.
For practical reasons, developers often don't want the overhead of having to fetch the source of each
dependency though. Also, they may not want their build script to have to take the time to configure and
check that each subproject is up-to-date. Building from binary dependencies is _much_ faster, requires
less downloading of external source, and should import into Android Studio and other IDE's more easily.
To deal with these two goals (building dependencies from source, and relying on prebuilt binaries), the
build script can be run in two modes.
## Gradle commands
`gradle build` will build _F-Droid_ from source, but _not the depenencies_ from source. It will instead depend
on binaries from jcenter where possible, and .jar and .aar files in F-Droid/libs/binaryDeps elsewhere.
`gradle -PsourceDeps build` will include all dependencies and build the entire F-Droid binary
and all of its dependencies from source.
`gradle -PsourceDeps binaryDeps` will build all dependencies from source, and then copy the ones which
are not found in jcenter to F-Droid/libs/binaryDeps, making sure that the latest versions of the libraries are available
for developers wishing to build F-Droid from binary dependencies.
`gradle -PsourceDeps cleanBinaryDeps` will remove all binary dependencies. It shouldn't be neccesary,
because the `binaryDeps` will copy fresh .jar and .aar files to the F-Droid/libs/binaryDeps directory when they change.
It may be handy if you are updating the build script though, as a nice way to empty the F-Droid/libs/binaryDeps directory.
# Adding new dependencies
When adding a new dependency, *DON'T* copy the .jar or .aar file into F-Droid/libs/binaryDeps. This will get deleted
when somebody runs `gradle -PsourceDeps cleanBinaryDeps`. Also, the version of F-Droid built for distribution
on https://f-droid.org will be build from source depednencies, so adding a binary is not enough.
Instead, you should add the source repo as a submodule in the extern/ diretory. You will also need to modify
the F-Droid/build.gradle file, adding both the source dependency on the project in the extern/ directory, and
a dependency on its jcenter/mavenCentral artifact. If that artifact is not available, then you should add
the library to those to be copied using `gradler -PsourceDeps binaryDeps`. Then, you can commit that binary so that
anyone who clones the F-Droid repo will have all of the dependencies ready in either jcetner or the
F-Droid/libs/binaryDeps directory.

Binary file not shown.

Binary file not shown.

Binary file not shown.

37
F-Droid/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,37 @@
-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.** {*;}
-keep class javax.jmdns.** {*;}
-keep class org.spongycastle.** {*;}
-keep class eu.chainfire.** {*;}
# 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);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 153 B

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 887 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

Some files were not shown because too many files have changed in this diff Show More