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/
|
||||
build/
|
||||
|
||||
# Gradle wrapper
|
||||
gradlew
|
||||
gradlew.bat
|
||||
gradle-wrapper.jar
|
||||
gradle-wrapper.properties
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
@ -35,15 +41,3 @@ proguard/
|
||||
*.iml
|
||||
out
|
||||
.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;
|
||||
}
|
||||
|
||||
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>
|
||||
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>
|
||||