Compare commits
No commits in common. "master" and "0.78" have entirely different histories.
1
.gitattributes
vendored
@ -1 +0,0 @@
|
|||||||
*.gpg binary
|
|
||||||
18
.gitignore
vendored
@ -17,6 +17,12 @@ build.xml
|
|||||||
.gradle/
|
.gradle/
|
||||||
build/
|
build/
|
||||||
|
|
||||||
|
# Gradle wrapper
|
||||||
|
gradlew
|
||||||
|
gradlew.bat
|
||||||
|
gradle-wrapper.jar
|
||||||
|
gradle-wrapper.properties
|
||||||
|
|
||||||
# Local configuration file (sdk path, etc)
|
# Local configuration file (sdk path, etc)
|
||||||
local.properties
|
local.properties
|
||||||
|
|
||||||
@ -35,15 +41,3 @@ proguard/
|
|||||||
*.iml
|
*.iml
|
||||||
out
|
out
|
||||||
.settings/
|
.settings/
|
||||||
|
|
||||||
# Imported libs
|
|
||||||
extern/*/libs/
|
|
||||||
extern/*/*/libs/
|
|
||||||
|
|
||||||
# Tests
|
|
||||||
junit-report.xml
|
|
||||||
|
|
||||||
# Screen dumps from Android Studio/DDMS
|
|
||||||
captures/
|
|
||||||
|
|
||||||
/fdroid/
|
|
||||||
|
|||||||
142
.gitlab-ci.yml
@ -1,142 +0,0 @@
|
|||||||
stages:
|
|
||||||
- test
|
|
||||||
- deploy
|
|
||||||
|
|
||||||
.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
|
|
||||||
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
|
|
||||||
44
.gitmodules
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
[submodule "extern/Universal-Image-Loader"]
|
||||||
|
path = extern/UniversalImageLoader
|
||||||
|
url = https://github.com/nostra13/Android-Universal-Image-Loader
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/MemorizingTrustManager"]
|
||||||
|
path = extern/MemorizingTrustManager
|
||||||
|
url = https://github.com/ge0rg/MemorizingTrustManager.git
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/AndroidPinning"]
|
||||||
|
path = extern/AndroidPinning
|
||||||
|
url = https://gitlab.com/fdroid/androidpinning.git
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/libsuperuser"]
|
||||||
|
path = extern/libsuperuser
|
||||||
|
url = https://github.com/dschuermann/libsuperuser.git
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/jmdns"]
|
||||||
|
path = extern/jmdns
|
||||||
|
url = https://gitlab.com/fdroid/jmdns.git
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/Support"]
|
||||||
|
path = extern/Support
|
||||||
|
url = https://android.googlesource.com/platform/frameworks/support
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/zipsigner"]
|
||||||
|
path = extern/zipsigner
|
||||||
|
url = https://gitlab.com/fdroid/zipsigner.git
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/spongycastle"]
|
||||||
|
path = extern/spongycastle
|
||||||
|
url = https://github.com/open-keychain/spongycastle
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/nanohttpd"]
|
||||||
|
path = extern/nanohttpd
|
||||||
|
url = https://github.com/eighthave/nanohttpd
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/android-support-v4-preferencefragment"]
|
||||||
|
path = extern/android-support-v4-preferencefragment
|
||||||
|
url = https://github.com/CyberEagle/android-support-v4-preferencefragment.git
|
||||||
|
ignore = dirty
|
||||||
|
[submodule "extern/zxing-core"]
|
||||||
|
path = extern/zxing-core
|
||||||
|
url = https://gitlab.com/fdroid/zxing-core.git
|
||||||
|
ignore = dirty
|
||||||
3
.weblate
@ -1,3 +0,0 @@
|
|||||||
[weblate]
|
|
||||||
url = https://hosted.weblate.org/api/
|
|
||||||
translation = f-droid/f-droid
|
|
||||||
26
Android.mk
@ -1,26 +0,0 @@
|
|||||||
LOCAL_PATH:= $(call my-dir)
|
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
|
||||||
|
|
||||||
LOCAL_MODULE := F-Droid
|
|
||||||
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_build := $(fdroid_root)/$(fdroid_dir)/build
|
|
||||||
fdroid_apk := build/outputs/apk/full/release/$(fdroid_dir)-full-release-unsigned.apk
|
|
||||||
|
|
||||||
$(fdroid_root)/$(fdroid_dir)/$(fdroid_apk):
|
|
||||||
rm -Rf $(fdroid_build)
|
|
||||||
mkdir -p $(fdroid_out)
|
|
||||||
ln -sf $(fdroid_out) $(fdroid_build)
|
|
||||||
cd $(fdroid_root)/$(fdroid_dir) && gradle assembleRelease
|
|
||||||
|
|
||||||
LOCAL_CERTIFICATE := platform
|
|
||||||
LOCAL_SRC_FILES := $(fdroid_dir)/$(fdroid_apk)
|
|
||||||
LOCAL_MODULE_CLASS := APPS
|
|
||||||
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
|
|
||||||
|
|
||||||
include $(BUILD_PREBUILT)
|
|
||||||
921
CHANGELOG.md
@ -1,81 +0,0 @@
|
|||||||
# Contributing
|
|
||||||
|
|
||||||
## 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:
|
|
||||||
|
|
||||||
* Android version
|
|
||||||
* Device model
|
|
||||||
* F-Droid version
|
|
||||||
* Steps to reproduce the issue
|
|
||||||
* Logcat - see [instructions](https://f-droid.org/wiki/page/Getting_logcat_messages_after_crash)
|
|
||||||
|
|
||||||
## Translating
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
* Four space indentation
|
|
||||||
* UTF-8 source files
|
|
||||||
* Exactly one top-level class per file
|
|
||||||
* No wildcard imports
|
|
||||||
* One statement per line
|
|
||||||
* K&R spacings with braces and parenthesis
|
|
||||||
* Commented fallthroughs
|
|
||||||
* 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`.
|
|
||||||
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
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
|
|
||||||
17
F-Droid/.classpath
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="../extern/symlinks-for-ant-and-eclipse">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry combineaccessrules="false" kind="src" path="/AndroidPinning"/>
|
||||||
|
<classpathentry combineaccessrules="false" kind="src" path="/MemorizingActivity"/>
|
||||||
|
<classpathentry combineaccessrules="false" kind="src" path="/library"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
||||||
33
F-Droid/.project
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>fdroid</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
398
F-Droid/AndroidManifest.xml
Normal file
@ -0,0 +1,398 @@
|
|||||||
|
<?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="780"
|
||||||
|
android:versionName="0.78" >
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="7"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<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.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" />
|
||||||
|
<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) -->
|
||||||
|
<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/AppThemeDark"
|
||||||
|
android:supportsRtl="true"
|
||||||
|
tools:replace="theme, icon, label"
|
||||||
|
>
|
||||||
|
|
||||||
|
<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" >
|
||||||
|
|
||||||
|
<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="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>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
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:path="/.*/FDROID/REPO" />
|
||||||
|
<data android:path="/.*/.*/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">
|
||||||
|
<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" />
|
||||||
|
<!-- 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>
|
||||||
|
<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" />
|
||||||
|
|
||||||
|
<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="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="f-droid.org" />
|
||||||
|
<data android:host="www.f-droid.org" />
|
||||||
|
<data android:pathPrefix="/app/" />
|
||||||
|
</intent-filter>
|
||||||
|
</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">
|
||||||
|
<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">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.support.PARENT_ACTIVITY"
|
||||||
|
android:value=".FDroid" />
|
||||||
|
</activity>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="android.app.searchable"
|
||||||
|
android:resource="@xml/searchable" />
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
<!--Used for SSL TOFU, supported by extern/MemorizingTrustManager lib -->
|
||||||
|
<activity
|
||||||
|
android:name="de.duenndns.ssl.MemorizingActivity"
|
||||||
|
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||||
|
|
||||||
|
<receiver android:name=".StartupReceiver" >
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
|
|
||||||
|
<category android:name="android.intent.category.HOME" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
<receiver android:name=".PackageAddedReceiver" >
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||||
|
|
||||||
|
<data android:scheme="package" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
<receiver android:name=".PackageUpgradedReceiver" >
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
||||||
|
|
||||||
|
<data android:scheme="package" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
<receiver android:name=".PackageRemovedReceiver" >
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||||
|
|
||||||
|
<data android:scheme="package" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
<receiver android:name=".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>
|
||||||
34
F-Droid/ant-prepare.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
EXTERN=../extern
|
||||||
|
|
||||||
|
place_support_v4() {
|
||||||
|
mkdir -p $1/libs
|
||||||
|
cp libs/android-support-v4.jar $1/libs/
|
||||||
|
}
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/UniversalImageLoader/library
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/AndroidPinning
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/MemorizingTrustManager
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/libsuperuser/libsuperuser
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/zxing-core
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/android-support-v4-preferencefragment
|
||||||
|
place_support_v4 $EXTERN/android-support-v4-preferencefragment
|
||||||
|
|
||||||
|
android update lib-project --path $EXTERN/Support/v7/appcompat --target android-19
|
||||||
|
place_support_v4 $EXTERN/Support/v7/appcompat
|
||||||
|
|
||||||
|
android update project --path . --name F-Droid
|
||||||
|
|
||||||
|
{ echo -e "\nSuccessfully updated the main project.\n"; } 2>/dev/null
|
||||||
|
|
||||||
|
# technically optional, needed for the tests
|
||||||
|
cd test
|
||||||
|
android update test-project --path . --main ..
|
||||||
|
|
||||||
|
{ echo -e "\nSuccessfully updated the test project.\n"; } 2>/dev/null
|
||||||
@ -71,28 +71,6 @@
|
|||||||
color: #fff;
|
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 {
|
#download-from-web {
|
||||||
padding-left: 2em;
|
padding-left: 2em;
|
||||||
padding-right: 2em;
|
padding-right: 2em;
|
||||||
@ -127,12 +105,10 @@
|
|||||||
<img src="swap-tick-not-done.png" class="tick not-done" alt="Not done" />
|
<img src="swap-tick-not-done.png" class="tick not-done" alt="Not done" />
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<br/><br/><br/><br/>
|
<div id="download-from-web">
|
||||||
<details>
|
<!--<a href="https://f-droid.org/repository/browse/">-->
|
||||||
<summary>Available Apps</summary>
|
Or, download apps from the web
|
||||||
<ul>
|
<!--</a>-->
|
||||||
{{APP_LIST}}
|
</div>
|
||||||
</ul>
|
|
||||||
</details>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
BIN
F-Droid/assets/swap-icon.png
Normal file
|
After Width: | Height: | Size: 4.8 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: 1.1 KiB |
81
F-Droid/build.gradle
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile project(':support-v4')
|
||||||
|
compile project(':support-appcompat-v7')
|
||||||
|
compile project(':extern:AndroidPinning')
|
||||||
|
compile project(':extern:UniversalImageLoader:library')
|
||||||
|
compile project(':extern:MemorizingTrustManager')
|
||||||
|
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:android-support-v4-preferencefragment') ) {
|
||||||
|
exclude module: 'support-v4'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
compileSdkVersion 21
|
||||||
|
buildToolsVersion '21.1.2'
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_7
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_7
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main {
|
||||||
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
|
java.srcDirs = ['src']
|
||||||
|
resources.srcDirs = ['src']
|
||||||
|
aidl.srcDirs = ['src']
|
||||||
|
renderscript.srcDirs = ['src']
|
||||||
|
res.srcDirs = ['res']
|
||||||
|
assets.srcDirs = ['assets']
|
||||||
|
}
|
||||||
|
|
||||||
|
instrumentTest.setRoot('test')
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
minifyEnabled false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions.encoding = "UTF-8"
|
||||||
|
|
||||||
|
// Enable all Android lint warnings
|
||||||
|
gradle.projectsEvaluated {
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
options.compilerArgs << "-Xlint:all"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lintOptions {
|
||||||
|
abortOnError false
|
||||||
|
textReport true
|
||||||
|
textOutput file("build/outputs/lint-results.txt")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: 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
|
||||||
|
ext.androidJar = "${android.plugin.sdkFolder}/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/android-support-v4.jar
Normal file
190
F-Droid/libs/android-support-v4.jar.LICENSE
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
Copyright (c) 2005-2013, The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
|
||||||
5
F-Droid/libs/android-support-v4.jar.README
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
The Android support library v4 is currently at *revision 21.0.1* from the Android SDK.
|
||||||
|
This reversion was released on October 2014.
|
||||||
|
|
||||||
|
See NOTICE.android-support-v4.txt for license.
|
||||||
|
See http://developer.android.com/tools/extras/support-library.html for further info.
|
||||||
8
F-Droid/libs/android-support-v4.jar.properties
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
src=android-support-v4.jar
|
||||||
|
doc=/opt/android-sdk/docs/reference
|
||||||
|
# The String value of 'doc' is handed straight to `new java.io.File()` so it
|
||||||
|
# is not possible to use variables. Therefore, change "/opt/android-sdk" to
|
||||||
|
# the path to your Android SDK, i.e. the value of $ANDROID_HOME or ${sdk.dir}
|
||||||
|
#
|
||||||
|
# Here's the relevant source:
|
||||||
|
# https://android-review.googlesource.com/#/c/35702/3/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/LibraryClasspathContainerInitializer.java
|
||||||
12
F-Droid/lint.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<lint>
|
||||||
|
<!-- Remove severity="ignore" to see the missing translations -->
|
||||||
|
<issue id="MissingTranslation" severity="ignore">
|
||||||
|
<ignore path="res/values/no_trans.xml" />
|
||||||
|
<ignore path="res/values/default_repo.xml" />
|
||||||
|
</issue>
|
||||||
|
<issue id="TrulyRandom" severity="ignore" />
|
||||||
|
<issue id="UnusedResources" severity="ignore">
|
||||||
|
<ignore path="res/values/default_repo.xml" />
|
||||||
|
</issue>
|
||||||
|
</lint>
|
||||||
20
F-Droid/proguard-project.txt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# To enable ProGuard in your project, edit project.properties
|
||||||
|
# to define the proguard.config property as described in that file.
|
||||||
|
#
|
||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# By default, the flags in this file are appended to flags specified
|
||||||
|
# in ${sdk.dir}/tools/proguard/proguard-android.txt
|
||||||
|
# You can edit the include path and order by changing the ProGuard
|
||||||
|
# include property in project.properties.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# Add any project specific keep options here:
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
19
F-Droid/project.properties
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
target=android-21
|
||||||
|
|
||||||
|
android.library.reference.1=../extern/UniversalImageLoader/library
|
||||||
|
android.library.reference.2=../extern/MemorizingTrustManager
|
||||||
|
android.library.reference.3=../extern/AndroidPinning
|
||||||
|
android.library.reference.4=../extern/libsuperuser/libsuperuser
|
||||||
|
android.library.reference.5=../extern/zxing-core
|
||||||
|
android.library.reference.6=../extern/android-support-v4-preferencefragment
|
||||||
|
android.library.reference.7=../extern/Support/v7/appcompat
|
||||||
|
|
||||||
|
# For java libraries, place symlinks in ../extern/symlinks-for-ant-and-eclipse/
|
||||||
|
source.dir=src;../extern/symlinks-for-ant-and-eclipse
|
||||||
|
|
||||||
|
# With a target SDK of android-19 (4.4.2/KitKat) and a Java 1.7 compiler, you
|
||||||
|
# can use Java 1.7 features like the <> diamond operator, multi-catch, strings
|
||||||
|
# in switches, etc. zxing uses the <> operator, so Java 1.7 is required.
|
||||||
|
java.encoding=UTF-8
|
||||||
|
java.source=1.7
|
||||||
|
java.target=1.7
|
||||||
BIN
F-Droid/res/drawable-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_menu_refresh.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_repo_app_default.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
F-Droid/res/drawable-hdpi/ic_stat_notify_updates.png
Normal file
|
After Width: | Height: | Size: 893 B |
BIN
F-Droid/res/drawable-hdpi/ic_swap.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
F-Droid/res/drawable-hdpi/nfc_touch.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
F-Droid/res/drawable-hdpi/swap_success.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
F-Droid/res/drawable-hdpi/wifi.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
F-Droid/res/drawable-hdpi/wifi_ap_personal.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
F-Droid/res/drawable-hdpi/wifi_ap_private.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
F-Droid/res/drawable-hdpi/wifi_ap_public.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
F-Droid/res/drawable-ldpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
F-Droid/res/drawable-ldpi/ic_menu_refresh.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
F-Droid/res/drawable-ldpi/ic_repo_app_default.png
Normal file
|
After Width: | Height: | Size: 665 B |
BIN
F-Droid/res/drawable-ldpi/ic_stat_notify_updates.png
Normal file
|
After Width: | Height: | Size: 489 B |
BIN
F-Droid/res/drawable-ldpi/ic_swap.png
Normal file
|
After Width: | Height: | Size: 475 B |
BIN
F-Droid/res/drawable-ldpi/nfc_touch.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
F-Droid/res/drawable-ldpi/swap_success.png
Normal file
|
After Width: | Height: | Size: 918 B |
BIN
F-Droid/res/drawable-ldpi/wifi.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
F-Droid/res/drawable-ldpi/wifi_ap_personal.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
F-Droid/res/drawable-ldpi/wifi_ap_private.png
Normal file
|
After Width: | Height: | Size: 475 B |
BIN
F-Droid/res/drawable-ldpi/wifi_ap_public.png
Normal file
|
After Width: | Height: | Size: 550 B |
BIN
F-Droid/res/drawable-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
F-Droid/res/drawable-mdpi/ic_menu_refresh.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
F-Droid/res/drawable-mdpi/ic_repo_app_default.png
Normal file
|
After Width: | Height: | Size: 872 B |
BIN
F-Droid/res/drawable-mdpi/ic_stat_notify_updates.png
Normal file
|
After Width: | Height: | Size: 606 B |
BIN
F-Droid/res/drawable-mdpi/ic_swap.png
Normal file
|
After Width: | Height: | Size: 718 B |
BIN
F-Droid/res/drawable-mdpi/nfc_touch.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
F-Droid/res/drawable-mdpi/swap_success.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
F-Droid/res/drawable-mdpi/wifi.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
F-Droid/res/drawable-mdpi/wifi_ap_personal.png
Normal file
|
After Width: | Height: | Size: 915 B |
BIN
F-Droid/res/drawable-mdpi/wifi_ap_private.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
F-Droid/res/drawable-mdpi/wifi_ap_public.png
Normal file
|
After Width: | Height: | Size: 776 B |
BIN
F-Droid/res/drawable-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
F-Droid/res/drawable-xhdpi/ic_menu_refresh.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
F-Droid/res/drawable-xhdpi/ic_repo_app_default.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
F-Droid/res/drawable-xhdpi/ic_stat_notify_updates.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
F-Droid/res/drawable-xhdpi/ic_swap.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
F-Droid/res/drawable-xhdpi/nfc_touch.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
F-Droid/res/drawable-xhdpi/swap_success.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
F-Droid/res/drawable-xhdpi/wifi.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
F-Droid/res/drawable-xhdpi/wifi_ap_personal.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
F-Droid/res/drawable-xhdpi/wifi_ap_private.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
F-Droid/res/drawable-xhdpi/wifi_ap_public.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
F-Droid/res/drawable-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
F-Droid/res/drawable-xxhdpi/ic_repo_app_default.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
F-Droid/res/drawable-xxhdpi/ic_stat_notify_updates.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
F-Droid/res/drawable/ic_swap.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
F-Droid/res/drawable/nfc_touch.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
28
F-Droid/res/drawable/swap_action_button_skin.xml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_light_blue_pressed" />
|
||||||
|
<padding
|
||||||
|
android:left="26.9dp"
|
||||||
|
android:top="17.9dp"
|
||||||
|
android:right="26.9dp"
|
||||||
|
android:bottom="17.9dp" />
|
||||||
|
<!--
|
||||||
|
Padding left/right = 48px * 90dpi / 160dpi = ~26.9dp
|
||||||
|
Padding top/bottom = 32px * 90dpi / 160dpi = ~17.9dp
|
||||||
|
-->
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_light_blue" />
|
||||||
|
<padding
|
||||||
|
android:left="26.9dp"
|
||||||
|
android:top="17.9dp"
|
||||||
|
android:right="26.9dp"
|
||||||
|
android:bottom="17.9dp" />
|
||||||
|
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
20
F-Droid/res/drawable/swap_button_normal.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
<padding
|
||||||
|
android:top="1dp"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_blue" />
|
||||||
|
<padding
|
||||||
|
android:left="10dp"
|
||||||
|
android:top="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:bottom="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
20
F-Droid/res/drawable/swap_button_pressed.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
<padding
|
||||||
|
android:top="1dp"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_blue_pressed" />
|
||||||
|
<padding
|
||||||
|
android:left="10dp"
|
||||||
|
android:top="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:bottom="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
5
F-Droid/res/drawable/swap_button_skin.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_pressed="true" android:drawable="@drawable/swap_button_pressed" />
|
||||||
|
<item android:drawable="@drawable/swap_button_normal" />
|
||||||
|
</selector>
|
||||||
23
F-Droid/res/drawable/swap_confirm_button_skin.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_confirm_pressed" />
|
||||||
|
<padding
|
||||||
|
android:left="10dp"
|
||||||
|
android:top="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:bottom="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_confirm" />
|
||||||
|
<padding
|
||||||
|
android:left="10dp"
|
||||||
|
android:top="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:bottom="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
23
F-Droid/res/drawable/swap_deny_button_skin.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_deny_pressed" />
|
||||||
|
<padding
|
||||||
|
android:left="10dp"
|
||||||
|
android:top="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:bottom="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_deny" />
|
||||||
|
<padding
|
||||||
|
android:left="10dp"
|
||||||
|
android:top="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:bottom="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
BIN
F-Droid/res/drawable/swap_nfc_icon.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
F-Droid/res/drawable/swap_qr_example.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
8
F-Droid/res/drawable/swap_start_button_skin.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/swap_light_blue" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
BIN
F-Droid/res/drawable/swap_success.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
5
F-Droid/res/drawable/swap_wifi_likely_to_work.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="@color/swap_wifi_likely_to_work" />
|
||||||
|
<size android:width="88dp" android:height="7dp" />
|
||||||
|
</shape>
|
||||||
5
F-Droid/res/drawable/swap_wifi_may_work.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="@color/swap_wifi_may_work"/>
|
||||||
|
<size android:width="88dp" android:height="7dp" />
|
||||||
|
</shape>
|
||||||
4
F-Droid/res/drawable/swap_window_background.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="@color/swap_blue" />
|
||||||
|
</shape>
|
||||||
BIN
F-Droid/res/drawable/wifi.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
F-Droid/res/drawable/wifi_ap_personal.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
F-Droid/res/drawable/wifi_ap_private.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
F-Droid/res/drawable/wifi_ap_public.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
48
F-Droid/res/layout-land/app_details.xml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:id="@+id/app_summary_container"
|
||||||
|
android:layout_width="0px"
|
||||||
|
android:layout_weight="0.5"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="5dp">
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/landscape_header"
|
||||||
|
android:name="org.fdroid.fdroid.AppDetails$AppDetailsHeaderFragment"
|
||||||
|
tools:layout="@layout/app_details_header"/>
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/fragment_app_summary"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:name="org.fdroid.fdroid.AppDetails$AppDetailsSummaryFragment"
|
||||||
|
tools:layout="@layout/app_details_summary"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/fragment_app_list"
|
||||||
|
android:layout_width="0px"
|
||||||
|
android:layout_weight="0.5"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:name="org.fdroid.fdroid.AppDetails$AppDetailsListFragment"
|
||||||
|
tools:layout="@android:layout/list_content"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
56
F-Droid/res/layout-v11/select_local_apps_list_item.xml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2010 The Android Open Source Project
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?android:attr/activatedBackgroundIndicator"
|
||||||
|
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||||
|
android:paddingBottom="2dip"
|
||||||
|
android:paddingTop="2dip" >
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dip"
|
||||||
|
android:layout_height="48dip"
|
||||||
|
android:layout_marginLeft="?attr/listPreferredItemPaddingLeft"
|
||||||
|
android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
|
||||||
|
android:layout_marginTop="6dip"
|
||||||
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
|
<TwoLineListItem
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:mode="twoLine" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/application_label"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="?attr/listPreferredItemPaddingLeft"
|
||||||
|
android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
|
||||||
|
android:layout_marginTop="6dip"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/package_name"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignStart="@+id/application_label"
|
||||||
|
android:layout_alignLeft="@+id/application_label"
|
||||||
|
android:layout_below="@+id/application_label"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||||
|
</TwoLineListItem>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
77
F-Droid/res/layout/about.xml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:paddingStart="8dp"
|
||||||
|
android:paddingRight="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:paddingTop="6dp"
|
||||||
|
android:paddingBottom="6dp"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView android:text="@string/about_version"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/version"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:paddingStart="5dp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView android:id="@+id/site"
|
||||||
|
android:text="@string/about_site"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/sitec"
|
||||||
|
android:text="@string/about_sitec"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:paddingStart="5dp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView android:id="@+id/mail"
|
||||||
|
android:text="@string/about_mail"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/mailc"
|
||||||
|
android:text="@string/about_mailc"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:paddingStart="5dp"
|
||||||
|
android:autoLink="email"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView android:text="@string/about_desc"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
64
F-Droid/res/layout/addrepo.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="6dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/repo_add_url" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/edit_uri"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:inputType="textUri"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:text="@string/https" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/repo_add_fingerprint" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/edit_fingerprint"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:digits="0123456789ABCDEFabcedf: "
|
||||||
|
android:inputType="textNoSuggestions"
|
||||||
|
android:maxLines="3"
|
||||||
|
android:typeface="monospace" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overwrite_message"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableLeft="@android:drawable/ic_dialog_alert"
|
||||||
|
android:drawableStart="@android:drawable/ic_dialog_alert"
|
||||||
|
android:drawablePadding="20dp"
|
||||||
|
android:padding="20dp"
|
||||||
|
android:text="@string/repo_delete_to_overwrite"
|
||||||
|
android:textAppearance="@android:style/TextAppearance.Medium"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
</LinearLayout><!--
|
||||||
|
* Copyright (C) 2009 Roberto Jacinto
|
||||||
|
* roberto.jacinto@caixamagica.pt
|
||||||
|
*
|
||||||
|
* 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 2
|
||||||
|
* 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.
|
||||||
|
-->
|
||||||
90
F-Droid/res/layout/apklistitem.xml
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:paddingBottom="5dp"
|
||||||
|
android:paddingLeft="10dp"
|
||||||
|
android:paddingRight="10dp"
|
||||||
|
>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/version"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:text="Version 1.0 (as if!)"/>
|
||||||
|
|
||||||
|
<TextView android:id="@+id/status"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_below="@id/version"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
tools:text="Installed" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/added"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_below="@id/status"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
tools:text="Added on 1/1/2050" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/buildtype"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_marginBottom="4sp"
|
||||||
|
tools:text="source" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/size"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_below="@id/buildtype"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_marginBottom="4sp"
|
||||||
|
tools:text="12mb" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/api"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_below="@id/buildtype"
|
||||||
|
android:layout_toLeftOf="@id/size"
|
||||||
|
android:layout_toStartOf="@id/size"
|
||||||
|
android:layout_marginRight="16sp"
|
||||||
|
android:layout_marginEnd="16sp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
tools:text=""
|
||||||
|
tools:visible="gone" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/nativecode"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_below="@id/size"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
tools:text=""
|
||||||
|
tools:visible="gone" />
|
||||||
|
|
||||||
|
<TextView android:id="@+id/incompatible_reasons"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:layout_below="@id/added"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
tools:text=""
|
||||||
|
tools:visible="gone" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
32
F-Droid/res/layout/app_details.xml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="4dp"
|
||||||
|
android:paddingLeft="6dp"
|
||||||
|
android:paddingRight="6dp">
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/header"
|
||||||
|
android:name="org.fdroid.fdroid.AppDetails$AppDetailsHeaderFragment"
|
||||||
|
tools:layout="@layout/app_details_header" />
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/fragment_app_list"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:name="org.fdroid.fdroid.AppDetails$AppDetailsListFragment"
|
||||||
|
tools:layout="@android:layout/list_content"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
97
F-Droid/res/layout/app_details_header.xml
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/icon_and_title"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:paddingTop="2dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/icon"
|
||||||
|
android:contentDescription="@string/app_icon"
|
||||||
|
android:layout_width="56dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:padding="4dp"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
tools:src="@drawable/ic_launcher"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toRightOf="@id/icon"
|
||||||
|
android:layout_toEndOf="@id/icon"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:paddingRight="5dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/license"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentTop="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_marginLeft="6sp"
|
||||||
|
android:layout_marginStart="6sp"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="GPLv3+"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/title"
|
||||||
|
android:textSize="17sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:gravity="start"
|
||||||
|
android:textAlignment="viewStart"
|
||||||
|
android:layout_toLeftOf="@id/license"
|
||||||
|
android:layout_toStartOf="@id/license"
|
||||||
|
tools:text="F-Droid"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/categories"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginLeft="6sp"
|
||||||
|
android:layout_marginStart="6sp"
|
||||||
|
android:layout_below="@id/title"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="System"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/status"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:gravity="start"
|
||||||
|
android:textAlignment="viewStart"
|
||||||
|
android:layout_toLeftOf="@id/categories"
|
||||||
|
android:layout_toStartOf="@id/categories"
|
||||||
|
android:layout_below="@id/title"
|
||||||
|
tools:text="Installed"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
90
F-Droid/res/layout/app_details_summary.xml
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingTop="4dp"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
android:paddingLeft="5dp"
|
||||||
|
android:paddingRight="5dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/summary"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="Application manager"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/appid"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="org.fdroid.fdroid" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/signature"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/antifeatures"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textColor="#ff0000"
|
||||||
|
tools:text="Feeds you too much chocolate" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/description"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8sp"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:singleLine="false"
|
||||||
|
tools:text="Connects to F-Droid compatible repositories. The default repo is hosted at f-droid.org, which contains only bona fide FOSS.
|
||||||
|
|
||||||
|
Android is open in the sense that you are free to install apks from anywhere you wish, but there are many good reasons for using a client/repository setup:
|
||||||
|
|
||||||
|
* Be notified when updates are available
|
||||||
|
* Keep track of older and beta versions
|
||||||
|
* Filter apps that aren't compatible with the device
|
||||||
|
* Find apps via categories and searchable descriptions
|
||||||
|
* Access associated urls for donations, source code etc.
|
||||||
|
* Stay safe by checking repo index signatures and apk hashes
|
||||||
|
|
||||||
|
Changelog" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/permissions"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8sp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="Permissions for version 1.0" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/permissions_list"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="13sp"
|
||||||
|
android:singleLine="false"
|
||||||
|
tools:text=" * Full network access
|
||||||
|
* View network connections
|
||||||
|
* View Wi-Fi connections
|
||||||
|
* Connect and disconnect from Wi-Fi
|
||||||
|
* Pair with Bluetooth devices
|
||||||
|
* Run at startup
|
||||||
|
* Modify or delete the contents of your USB storage
|
||||||
|
* Control Near Field Communication
|
||||||
|
* Directly install apps
|
||||||
|
* Delete apps
|
||||||
|
* Full permission to all device features and storage
|
||||||
|
* Test access to protected storage" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||