Merge branch 'streamline-whitelabeling' into 'master'
Streamline whitelabeling See merge request fdroid/fdroidclient!686
This commit is contained in:
commit
6f7fdec4eb
@ -12,51 +12,6 @@ def getVersionName = { ->
|
|||||||
return stdout.toString().trim()
|
return stdout.toString().trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation 'com.android.support:support-v4:27.1.1'
|
|
||||||
implementation 'com.android.support:appcompat-v7:27.1.1'
|
|
||||||
implementation 'com.android.support:gridlayout-v7:27.1.1'
|
|
||||||
implementation 'com.android.support:support-annotations:27.1.1'
|
|
||||||
implementation 'com.android.support:recyclerview-v7:27.1.1'
|
|
||||||
implementation 'com.android.support:cardview-v7:27.1.1'
|
|
||||||
implementation 'com.android.support:design:27.1.1'
|
|
||||||
implementation 'com.android.support:support-vector-drawable:27.1.1'
|
|
||||||
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
|
|
||||||
implementation 'com.android.support:palette-v7:27.1.1'
|
|
||||||
implementation 'com.android.support:preference-v14:27.1.1'
|
|
||||||
|
|
||||||
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
|
|
||||||
implementation 'com.google.zxing:core:3.3.2'
|
|
||||||
implementation 'eu.chainfire:libsuperuser:1.0.0.201602271131'
|
|
||||||
implementation 'cc.mvdan.accesspoint:library:0.2.0'
|
|
||||||
implementation 'info.guardianproject.netcipher:netcipher:2.0.0-alpha1'
|
|
||||||
implementation 'info.guardianproject.panic:panic:0.5'
|
|
||||||
implementation 'commons-io:commons-io:2.5'
|
|
||||||
implementation 'commons-net:commons-net:3.5'
|
|
||||||
implementation 'org.jmdns:jmdns:3.5.3'
|
|
||||||
implementation 'org.nanohttpd:nanohttpd:2.3.1'
|
|
||||||
implementation 'ch.acra:acra:4.9.1'
|
|
||||||
implementation 'io.reactivex:rxjava:1.1.0'
|
|
||||||
implementation 'io.reactivex:rxandroid:0.23.0'
|
|
||||||
implementation 'com.hannesdorfmann:adapterdelegates3:3.0.1'
|
|
||||||
implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'
|
|
||||||
|
|
||||||
implementation 'com.fasterxml.jackson.core:jackson-core:2.8.7'
|
|
||||||
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.8.7'
|
|
||||||
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.7'
|
|
||||||
|
|
||||||
implementation 'org.bouncycastle:bcpkix-jdk15on:1.59'
|
|
||||||
implementation 'org.bouncycastle:bcprov-jdk15on:1.59'
|
|
||||||
|
|
||||||
testImplementation 'org.robolectric:robolectric:3.8'
|
|
||||||
testImplementation 'junit:junit:4.12'
|
|
||||||
testImplementation 'org.mockito:mockito-core:2.7.22'
|
|
||||||
|
|
||||||
androidTestImplementation 'com.android.support:support-annotations:25.3.1'
|
|
||||||
androidTestImplementation 'com.android.support.test:runner:0.5'
|
|
||||||
androidTestImplementation 'com.android.support.test:rules:0.5'
|
|
||||||
}
|
|
||||||
|
|
||||||
def isCi = "true".equals(System.getenv("CI"))
|
def isCi = "true".equals(System.getenv("CI"))
|
||||||
def preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
|
def preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
|
||||||
|
|
||||||
@ -179,6 +134,51 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation 'com.android.support:support-v4:27.1.1'
|
||||||
|
implementation 'com.android.support:appcompat-v7:27.1.1'
|
||||||
|
implementation 'com.android.support:gridlayout-v7:27.1.1'
|
||||||
|
implementation 'com.android.support:support-annotations:27.1.1'
|
||||||
|
implementation 'com.android.support:recyclerview-v7:27.1.1'
|
||||||
|
implementation 'com.android.support:cardview-v7:27.1.1'
|
||||||
|
implementation 'com.android.support:design:27.1.1'
|
||||||
|
implementation 'com.android.support:support-vector-drawable:27.1.1'
|
||||||
|
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
|
||||||
|
implementation 'com.android.support:palette-v7:27.1.1'
|
||||||
|
implementation 'com.android.support:preference-v14:27.1.1'
|
||||||
|
|
||||||
|
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
|
||||||
|
implementation 'com.google.zxing:core:3.3.2'
|
||||||
|
implementation 'eu.chainfire:libsuperuser:1.0.0.201602271131'
|
||||||
|
implementation 'cc.mvdan.accesspoint:library:0.2.0'
|
||||||
|
implementation 'info.guardianproject.netcipher:netcipher:2.0.0-alpha1'
|
||||||
|
implementation 'info.guardianproject.panic:panic:0.5'
|
||||||
|
implementation 'commons-io:commons-io:2.5'
|
||||||
|
implementation 'commons-net:commons-net:3.5'
|
||||||
|
implementation 'org.jmdns:jmdns:3.5.3'
|
||||||
|
implementation 'org.nanohttpd:nanohttpd:2.3.1'
|
||||||
|
implementation 'ch.acra:acra:4.9.1'
|
||||||
|
implementation 'io.reactivex:rxjava:1.1.0'
|
||||||
|
implementation 'io.reactivex:rxandroid:0.23.0'
|
||||||
|
implementation 'com.hannesdorfmann:adapterdelegates3:3.0.1'
|
||||||
|
implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'
|
||||||
|
|
||||||
|
implementation 'com.fasterxml.jackson.core:jackson-core:2.8.7'
|
||||||
|
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.8.7'
|
||||||
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.7'
|
||||||
|
|
||||||
|
implementation 'org.bouncycastle:bcpkix-jdk15on:1.59'
|
||||||
|
implementation 'org.bouncycastle:bcprov-jdk15on:1.59'
|
||||||
|
|
||||||
|
testImplementation 'org.robolectric:robolectric:3.8'
|
||||||
|
testImplementation 'junit:junit:4.12'
|
||||||
|
testImplementation 'org.mockito:mockito-core:2.7.22'
|
||||||
|
|
||||||
|
androidTestImplementation 'com.android.support:support-annotations:25.3.1'
|
||||||
|
androidTestImplementation 'com.android.support.test:runner:0.5'
|
||||||
|
androidTestImplementation 'com.android.support.test:rules:0.5'
|
||||||
|
}
|
||||||
|
|
||||||
checkstyle {
|
checkstyle {
|
||||||
toolVersion = '7.2'
|
toolVersion = '7.2'
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,6 @@ import java.io.FileOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.math.BigInteger;
|
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
@ -528,12 +527,20 @@ public final class Utils {
|
|||||||
*
|
*
|
||||||
* @param bytes an array of bytes.
|
* @param bytes an array of bytes.
|
||||||
* @return the bytes represented as a string of hexadecimal digits.
|
* @return the bytes represented as a string of hexadecimal digits.
|
||||||
|
* @see <a href="https://stackoverflow.com/a/9855338">source</a>
|
||||||
*/
|
*/
|
||||||
private static String toHexString(byte[] bytes) {
|
public static String toHexString(byte[] bytes) {
|
||||||
BigInteger bi = new BigInteger(1, bytes);
|
char[] hexChars = new char[bytes.length * 2];
|
||||||
return String.format("%0" + (bytes.length << 1) + "X", bi);
|
for (int j = 0; j < bytes.length; j++) {
|
||||||
|
int v = bytes[j] & 0xFF;
|
||||||
|
hexChars[j * 2] = HEX_LOOKUP_ARRAY[v >>> 4];
|
||||||
|
hexChars[j * 2 + 1] = HEX_LOOKUP_ARRAY[v & 0x0F];
|
||||||
|
}
|
||||||
|
return new String(hexChars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final char[] HEX_LOOKUP_ARRAY = "0123456789ABCDEF".toCharArray();
|
||||||
|
|
||||||
public static int parseInt(String str, int fallback) {
|
public static int parseInt(String str, int fallback) {
|
||||||
if (str == null || str.length() == 0) {
|
if (str == null || str.length() == 0) {
|
||||||
return fallback;
|
return fallback;
|
||||||
|
@ -26,7 +26,6 @@ import android.content.pm.PackageManager;
|
|||||||
import android.content.pm.Signature;
|
import android.content.pm.Signature;
|
||||||
import org.acra.ACRA;
|
import org.acra.ACRA;
|
||||||
import org.fdroid.fdroid.Utils;
|
import org.fdroid.fdroid.Utils;
|
||||||
import org.bouncycastle.util.encoders.Hex;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -69,8 +68,8 @@ class ApkSignatureVerifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Utils.debugLog(TAG, "Signature mismatch!");
|
Utils.debugLog(TAG, "Signature mismatch!");
|
||||||
Utils.debugLog(TAG, "APK sig: " + Hex.toHexString(getApkSignature(apkFile)));
|
Utils.debugLog(TAG, "APK sig: " + Utils.toHexString(getApkSignature(apkFile)));
|
||||||
Utils.debugLog(TAG, "F-Droid sig: " + Hex.toHexString(getFDroidSignature()));
|
Utils.debugLog(TAG, "F-Droid sig: " + Utils.toHexString(getFDroidSignature()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,12 +4,12 @@ import android.annotation.TargetApi;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.util.Base64;
|
||||||
import info.guardianproject.netcipher.NetCipher;
|
import info.guardianproject.netcipher.NetCipher;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.fdroid.fdroid.BuildConfig;
|
import org.fdroid.fdroid.BuildConfig;
|
||||||
import org.fdroid.fdroid.FDroidApp;
|
import org.fdroid.fdroid.FDroidApp;
|
||||||
import org.fdroid.fdroid.Utils;
|
import org.fdroid.fdroid.Utils;
|
||||||
import org.bouncycastle.util.encoders.Base64;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -151,7 +151,8 @@ public class HttpDownloader extends Downloader {
|
|||||||
if (username != null && password != null) {
|
if (username != null && password != null) {
|
||||||
// add authorization header from username / password if set
|
// add authorization header from username / password if set
|
||||||
String authString = username + ":" + password;
|
String authString = username + ":" + password;
|
||||||
connection.setRequestProperty("Authorization", "Basic " + Base64.toBase64String(authString.getBytes()));
|
connection.setRequestProperty("Authorization", "Basic "
|
||||||
|
+ Base64.encodeToString(authString.getBytes(), Base64.NO_WRAP));
|
||||||
}
|
}
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014-2018 Hans-Christoph Steiner
|
||||||
|
* Copyright (C) 2014-2017 Peter Serwylo
|
||||||
|
* Copyright (C) 2015-2016 Daniel Martí
|
||||||
|
* Copyright (C) 2015 Dominik Schürmann
|
||||||
|
* Copyright (C) 2018 Torsten Grote
|
||||||
|
* Copyright (C) 2018 dkanada
|
||||||
|
* Copyright (C) 2018 Senecto Limited
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 3
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
package org.fdroid.fdroid.views.fragments;
|
package org.fdroid.fdroid.views.fragments;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@ -24,6 +49,7 @@ import org.fdroid.fdroid.Languages;
|
|||||||
import org.fdroid.fdroid.Preferences;
|
import org.fdroid.fdroid.Preferences;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
import org.fdroid.fdroid.UpdateService;
|
import org.fdroid.fdroid.UpdateService;
|
||||||
|
import org.fdroid.fdroid.Utils;
|
||||||
import org.fdroid.fdroid.data.RepoProvider;
|
import org.fdroid.fdroid.data.RepoProvider;
|
||||||
import org.fdroid.fdroid.installer.InstallHistoryService;
|
import org.fdroid.fdroid.installer.InstallHistoryService;
|
||||||
import org.fdroid.fdroid.installer.PrivilegedInstaller;
|
import org.fdroid.fdroid.installer.PrivilegedInstaller;
|
||||||
@ -120,7 +146,11 @@ public class PreferencesFragment extends PreferenceFragment
|
|||||||
|
|
||||||
private void textSummary(String key, int resId) {
|
private void textSummary(String key, int resId) {
|
||||||
EditTextPreference pref = (EditTextPreference) findPreference(key);
|
EditTextPreference pref = (EditTextPreference) findPreference(key);
|
||||||
pref.setSummary(getString(resId, pref.getText()));
|
if (pref == null) {
|
||||||
|
Utils.debugLog(TAG, "null preference found for " + key);
|
||||||
|
} else {
|
||||||
|
pref.setSummary(getString(resId, pref.getText()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) {
|
private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) {
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2016-2017 Peter Serwylo
|
||||||
|
* Copyright (C) 2017 Christine Emrich
|
||||||
|
* Copyright (C) 2017 Hans-Christoph Steiner
|
||||||
|
* Copyright (C) 2018 Senecto Limited
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 3
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
package org.fdroid.fdroid.views.main;
|
package org.fdroid.fdroid.views.main;
|
||||||
|
|
||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
@ -65,7 +87,7 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
|
|||||||
private RecyclerView pager;
|
private RecyclerView pager;
|
||||||
private MainViewAdapter adapter;
|
private MainViewAdapter adapter;
|
||||||
private BottomNavigationBar bottomNavigation;
|
private BottomNavigationBar bottomNavigation;
|
||||||
private int selectedMenuId = R.id.whats_new;
|
private int selectedMenuId;
|
||||||
private TextBadgeItem updatesBadge;
|
private TextBadgeItem updatesBadge;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -110,7 +132,9 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
|
|||||||
LocalBroadcastManager.getInstance(this).registerReceiver(onUpdateableAppsChanged, updateableAppsFilter);
|
LocalBroadcastManager.getInstance(this).registerReceiver(onUpdateableAppsChanged, updateableAppsFilter);
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
selectedMenuId = savedInstanceState.getInt(STATE_SELECTED_MENU_ID, R.id.whats_new);
|
selectedMenuId = savedInstanceState.getInt(STATE_SELECTED_MENU_ID, (int) adapter.getItemId(0));
|
||||||
|
} else {
|
||||||
|
selectedMenuId = (int) adapter.getItemId(0);
|
||||||
}
|
}
|
||||||
setSelectedMenuInNav();
|
setSelectedMenuInNav();
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<style name="BodyTextV16" parent="BodyTextBase">
|
<style name="BodyTextV16" parent="BodyTextBase">
|
||||||
<item name="android:lineSpacingMultiplier">1.25</item>
|
<item name="android:lineSpacingMultiplier">1.25</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="BodyText" parent="BodyTextV16" />
|
<style name="BodyText" parent="BodyTextV16"/>
|
||||||
|
|
||||||
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase">
|
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase">
|
||||||
<item name="android:fontFamily">sans-serif-light</item>
|
<item name="android:fontFamily">sans-serif-light</item>
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
<item name="android:textDirection">locale</item>
|
<item name="android:textDirection">locale</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="CaptionText" parent="CaptionTextV17" />
|
<style name="CaptionText" parent="CaptionTextV17"/>
|
||||||
|
|
||||||
<style name="BodyTextV17" parent="BodyTextV16">
|
<style name="BodyTextV17" parent="BodyTextV16">
|
||||||
<item name="android:textDirection">locale</item>
|
<item name="android:textDirection">locale</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="BodyText" parent="BodyTextV17" />
|
<style name="BodyText" parent="BodyTextV17"/>
|
||||||
|
|
||||||
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase">
|
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase">
|
||||||
<item name="android:textAlignment">center</item>
|
<item name="android:textAlignment">center</item>
|
||||||
|
@ -8,6 +8,6 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- see http://stackoverflow.com/questions/32169303/activity-did-not-call-finish-api-23 -->
|
<!-- see http://stackoverflow.com/questions/32169303/activity-did-not-call-finish-api-23 -->
|
||||||
<style name="AppThemeTransparent" parent="@android:style/Theme.Translucent.NoTitleBar" />
|
<style name="AppThemeTransparent" parent="@android:style/Theme.Translucent.NoTitleBar"/>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<resources>
|
<resources>
|
||||||
<declare-styleable name="Theme">
|
<declare-styleable name="Theme">
|
||||||
<attr name="appDetailsBackground" format="color" />
|
<attr name="appDetailsBackground" format="color"/>
|
||||||
<attr name="appDetailsCardBackground" format="color" />
|
<attr name="appDetailsCardBackground" format="color"/>
|
||||||
<attr name="categoryPreviewAppCardBackground" format="reference" />
|
<attr name="categoryPreviewAppCardBackground" format="reference"/>
|
||||||
<attr name="mainTabSwapBackground" format="color" />
|
<attr name="mainTabSwapBackground" format="color"/>
|
||||||
<attr name="mainTabSwapSplashTint" format="color" />
|
<attr name="mainTabSwapSplashTint" format="color"/>
|
||||||
<attr name="categoryName" format="color" />
|
<attr name="categoryName" format="color"/>
|
||||||
<attr name="installedApps" format="color" />
|
<attr name="installedApps" format="color"/>
|
||||||
<attr name="detailPanel" format="reference" />
|
<attr name="detailPanel" format="reference"/>
|
||||||
<attr name="appListItem" format="color" />
|
<attr name="appListItem" format="color"/>
|
||||||
<attr name="lightGrayTextColor" format="color" />
|
<attr name="lightGrayTextColor" format="color"/>
|
||||||
<attr name="antiFeaturesWarning" format="reference" />
|
<attr name="antiFeaturesWarning" format="reference"/>
|
||||||
<attr name="backButtonDrawable" format="reference" />
|
<attr name="backButtonDrawable" format="reference"/>
|
||||||
<attr name="clearButtonDrawable" format="reference" />
|
<attr name="clearButtonDrawable" format="reference"/>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
<integer name="unhidePin">1337</integer>
|
<integer name="unhidePin">1337</integer>
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<string name="app_description">F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device.</string>
|
<string name="app_description">F-Droid is an installable catalogue of FOSS (Free and Open Source Software)
|
||||||
|
applications for the Android platform. The client makes it easy to browse, install, and keep track of updates
|
||||||
|
on your device.
|
||||||
|
</string>
|
||||||
|
|
||||||
<string name="site_link">https://f-droid.org</string>
|
<string name="site_link">https://f-droid.org</string>
|
||||||
<string name="source_link">https://gitlab.com/fdroid/fdroidclient</string>
|
<string name="source_link">https://gitlab.com/fdroid/fdroidclient</string>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<item type="id" name="preference_fragment_parent" />
|
<item type="id" name="preference_fragment_parent"/>
|
||||||
|
|
||||||
<item type="id" name="whats_new_feature" />
|
<item type="id" name="whats_new_feature"/>
|
||||||
<item type="id" name="whats_new_large_tile" />
|
<item type="id" name="whats_new_large_tile"/>
|
||||||
<item type="id" name="whats_new_small_tile" />
|
<item type="id" name="whats_new_small_tile"/>
|
||||||
<item type="id" name="whats_new_regular_list" />
|
<item type="id" name="whats_new_regular_list"/>
|
||||||
</resources>
|
</resources>
|
@ -17,7 +17,7 @@
|
|||||||
<string name="unstable_updates">Unstable updates</string>
|
<string name="unstable_updates">Unstable updates</string>
|
||||||
<string name="unstable_updates_summary">Suggest updates to unstable versions</string>
|
<string name="unstable_updates_summary">Suggest updates to unstable versions</string>
|
||||||
<string name="keep_install_history">Keep install history</string>
|
<string name="keep_install_history">Keep install history</string>
|
||||||
<string name="keep_install_history_summary">Store a log of all installs and uninstalls inside F-Droid</string>
|
<string name="keep_install_history_summary">Store a log of all installs and uninstalls in a private store</string>
|
||||||
<string name="force_old_index">Force old index format</string>
|
<string name="force_old_index">Force old index format</string>
|
||||||
<string name="force_old_index_summary">In case there are bugs or compatibility issues, use the XML app index</string>
|
<string name="force_old_index_summary">In case there are bugs or compatibility issues, use the XML app index</string>
|
||||||
<string name="other">Other</string>
|
<string name="other">Other</string>
|
||||||
@ -37,7 +37,7 @@
|
|||||||
<string name="notify">Show available updates</string>
|
<string name="notify">Show available updates</string>
|
||||||
<string name="notify_on">Show a notification when updates are available</string>
|
<string name="notify_on">Show a notification when updates are available</string>
|
||||||
<string name="system_installer">Privileged Extension</string>
|
<string name="system_installer">Privileged Extension</string>
|
||||||
<string name="system_installer_on">Use F-Droid Privileged Extension to install, update, and remove packages</string>
|
<string name="system_installer_on">Use Privileged Extension to install, update, and remove packages</string>
|
||||||
<string name="uninstall_system">Update/Uninstall Privileged Extension</string>
|
<string name="uninstall_system">Update/Uninstall Privileged Extension</string>
|
||||||
<string name="uninstall_system_summary">Open details screen of Privileged Extension to update/uninstall it</string>
|
<string name="uninstall_system_summary">Open details screen of Privileged Extension to update/uninstall it</string>
|
||||||
<string name="local_repo_name">Name of your Local Repo</string>
|
<string name="local_repo_name">Name of your Local Repo</string>
|
||||||
@ -324,14 +324,14 @@ This often occurs with apps installed via Google Play or other sources, if they
|
|||||||
<string name="unknown">Unknown</string>
|
<string name="unknown">Unknown</string>
|
||||||
<string name="repo_confirm_delete_title">Delete Repository?</string>
|
<string name="repo_confirm_delete_title">Delete Repository?</string>
|
||||||
<string name="repo_confirm_delete_body">Deleting a repository means
|
<string name="repo_confirm_delete_body">Deleting a repository means
|
||||||
apps from it will no longer be available from F-Droid.\n\nNote: All
|
apps from it will no longer be available.\n\nNote: All
|
||||||
previously installed apps will remain on your device.
|
previously installed apps will remain on your device.
|
||||||
</string>
|
</string>
|
||||||
<string name="repo_disabled_notification">Disabled "%1$s".\n\nYou will
|
<string name="repo_disabled_notification">Disabled "%1$s".\n\nYou will
|
||||||
need to re-enable this repository to install apps from it.
|
need to re-enable this repository to install apps from it.
|
||||||
</string>
|
</string>
|
||||||
<string name="repo_added">Saved F-Droid repository %1$s.</string>
|
<string name="repo_added">Saved package repository %1$s.</string>
|
||||||
<string name="repo_searching_address">Looking for F-Droid repository at\n%1$s</string>
|
<string name="repo_searching_address">Looking for package repository at\n%1$s</string>
|
||||||
<string name="minsdk_or_later">%s or later</string>
|
<string name="minsdk_or_later">%s or later</string>
|
||||||
<string name="up_to_maxsdk">Up to %s</string>
|
<string name="up_to_maxsdk">Up to %s</string>
|
||||||
<string name="minsdk_up_to_maxsdk">%1$s up to %2$s</string>
|
<string name="minsdk_up_to_maxsdk">%1$s up to %2$s</string>
|
||||||
|
@ -79,18 +79,18 @@
|
|||||||
<!-- customizations that are not API-level specific go here. -->
|
<!-- customizations that are not API-level specific go here. -->
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AlertDialogBaseThemeDark" parent="Theme.AppCompat.Dialog.Alert" />
|
<style name="AlertDialogBaseThemeDark" parent="Theme.AppCompat.Dialog.Alert"/>
|
||||||
<style name="AlertDialogThemeDark" parent="AlertDialogBaseThemeDark">
|
<style name="AlertDialogThemeDark" parent="AlertDialogBaseThemeDark">
|
||||||
<item name="colorAccent">@color/fdroid_green</item>
|
<item name="colorAccent">@color/fdroid_green</item>
|
||||||
<item name="android:windowBackground">@color/cardview_dark_background</item>
|
<item name="android:windowBackground">@color/cardview_dark_background</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AlertDialogBaseThemeLight" parent="Theme.AppCompat.Light.Dialog.Alert" />
|
<style name="AlertDialogBaseThemeLight" parent="Theme.AppCompat.Light.Dialog.Alert"/>
|
||||||
<style name="AlertDialogThemeLight" parent="AlertDialogBaseThemeLight">
|
<style name="AlertDialogThemeLight" parent="AlertDialogBaseThemeLight">
|
||||||
<item name="colorAccent">@color/fdroid_green</item>
|
<item name="colorAccent">@color/fdroid_green</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AlertDialogBaseThemeNight" parent="AlertDialogThemeDark" />
|
<style name="AlertDialogBaseThemeNight" parent="AlertDialogThemeDark"/>
|
||||||
<style name="AlertDialogThemeNight" parent="AlertDialogBaseThemeNight">
|
<style name="AlertDialogThemeNight" parent="AlertDialogBaseThemeNight">
|
||||||
<item name="android:windowBackground">@color/fdroid_night</item>
|
<item name="android:windowBackground">@color/fdroid_night</item>
|
||||||
</style>
|
</style>
|
||||||
@ -122,7 +122,7 @@
|
|||||||
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Caption</item>
|
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Caption</item>
|
||||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="CaptionText" parent="CaptionTextBase" />
|
<style name="CaptionText" parent="CaptionTextBase"/>
|
||||||
|
|
||||||
<!-- use this style for a text views that is a paragraph of text -->
|
<!-- use this style for a text views that is a paragraph of text -->
|
||||||
<style name="BodyTextBase">
|
<style name="BodyTextBase">
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Body1</item>
|
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Body1</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="BodyText" parent="BodyTextBase" />
|
<style name="BodyText" parent="BodyTextBase"/>
|
||||||
|
|
||||||
<style name="AppListEmptyText">
|
<style name="AppListEmptyText">
|
||||||
<item name="android:id">@android:id/empty</item>
|
<item name="android:id">@android:id/empty</item>
|
||||||
@ -149,7 +149,7 @@
|
|||||||
<item name="android:maxLines">1</item>
|
<item name="android:maxLines">1</item>
|
||||||
<item name="android:ellipsize">end</item>
|
<item name="android:ellipsize">end</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase" />
|
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase"/>
|
||||||
|
|
||||||
<style name="SwapTheme.Wizard" parent="Theme.AppCompat.Light.NoActionBar">
|
<style name="SwapTheme.Wizard" parent="Theme.AppCompat.Light.NoActionBar">
|
||||||
<item name="colorButtonNormal">@color/swap_bright_blue</item>
|
<item name="colorButtonNormal">@color/swap_bright_blue</item>
|
||||||
@ -180,7 +180,7 @@
|
|||||||
<item name="android:paddingBottom">20.1dp</item> <!-- 36px * 96dpi / 160dpi -->
|
<item name="android:paddingBottom">20.1dp</item> <!-- 36px * 96dpi / 160dpi -->
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase" />
|
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase"/>
|
||||||
|
|
||||||
<style name="SwapTheme.AppList.SwapSuccessDetailsBase">
|
<style name="SwapTheme.AppList.SwapSuccessDetailsBase">
|
||||||
<item name="android:gravity">center</item>
|
<item name="android:gravity">center</item>
|
||||||
@ -190,7 +190,7 @@
|
|||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="SwapTheme.AppList.SwapSuccessDetails" parent="SwapTheme.AppList.SwapSuccessDetailsBase" />
|
<style name="SwapTheme.AppList.SwapSuccessDetails" parent="SwapTheme.AppList.SwapSuccessDetailsBase"/>
|
||||||
|
|
||||||
<style name="SwapTheme.StartSwap.MainTextBase">
|
<style name="SwapTheme.StartSwap.MainTextBase">
|
||||||
<item name="android:gravity">center</item>
|
<item name="android:gravity">center</item>
|
||||||
@ -211,7 +211,7 @@
|
|||||||
<item name="android:textColorSecondary">#fff</item>
|
<item name="android:textColorSecondary">#fff</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="SwapTheme.Wizard.Text" parent="SwapTheme.Wizard.TextBase" />
|
<style name="SwapTheme.Wizard.Text" parent="SwapTheme.Wizard.TextBase"/>
|
||||||
|
|
||||||
<style name="SwapTheme.Wizard.Text.Toolbar" parent="SwapTheme.Wizard.Text">
|
<style name="SwapTheme.Wizard.Text.Toolbar" parent="SwapTheme.Wizard.Text">
|
||||||
<item name="android:textSize">22sp</item>
|
<item name="android:textSize">22sp</item>
|
||||||
@ -232,9 +232,9 @@
|
|||||||
<item name="android:paddingBottom">10dp</item>
|
<item name="android:paddingBottom">10dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="SwapTheme.Wizard.MainText" parent="SwapTheme.Wizard.MainTextBase" />
|
<style name="SwapTheme.Wizard.MainText" parent="SwapTheme.Wizard.MainTextBase"/>
|
||||||
|
|
||||||
<style name="SwapTheme.Wizard.QRScanWarningText" parent="@style/SwapTheme.Wizard.MainTextBase" >
|
<style name="SwapTheme.Wizard.QRScanWarningText" parent="@style/SwapTheme.Wizard.MainTextBase">
|
||||||
<item name="android:paddingLeft">40dp</item>
|
<item name="android:paddingLeft">40dp</item>
|
||||||
<item name="android:paddingRight">40dp</item>
|
<item name="android:paddingRight">40dp</item>
|
||||||
<item name="android:paddingTop">0dp</item>
|
<item name="android:paddingTop">0dp</item>
|
||||||
@ -288,7 +288,7 @@
|
|||||||
<item name="android:gravity">center_vertical</item>
|
<item name="android:gravity">center_vertical</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppDetailsLink" parent="AppDetailsLinkBase" />
|
<style name="AppDetailsLink" parent="AppDetailsLinkBase"/>
|
||||||
|
|
||||||
<style name="AppDetailsSubheaderTextBase">
|
<style name="AppDetailsSubheaderTextBase">
|
||||||
<item name="android:layout_width">match_parent</item>
|
<item name="android:layout_width">match_parent</item>
|
||||||
@ -300,9 +300,9 @@
|
|||||||
<item name="android:drawablePadding">12dp</item>
|
<item name="android:drawablePadding">12dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppDetailsSubheaderText" parent="AppDetailsSubheaderTextBase" />
|
<style name="AppDetailsSubheaderText" parent="AppDetailsSubheaderTextBase"/>
|
||||||
|
|
||||||
<style name="AppThemeTransparent" parent="@android:style/Theme.NoDisplay" />
|
<style name="AppThemeTransparent" parent="@android:style/Theme.NoDisplay"/>
|
||||||
|
|
||||||
<style name="AppThemeLight.NoActionBar">
|
<style name="AppThemeLight.NoActionBar">
|
||||||
<item name="windowActionBar">false</item>
|
<item name="windowActionBar">false</item>
|
||||||
@ -314,7 +314,7 @@
|
|||||||
<item name="android:src">@drawable/ic_more</item>
|
<item name="android:src">@drawable/ic_more</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppThemeLight.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
<style name="AppThemeLight.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
|
||||||
|
|
||||||
<style name="AppThemeLight.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
<style name="AppThemeLight.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
<item name="android:minHeight">32dp</item>
|
<item name="android:minHeight">32dp</item>
|
||||||
<item name="android:minWidth">0dp</item>
|
<item name="android:minWidth">0dp</item>
|
||||||
<item name="android:padding">12dp</item>
|
<item name="android:padding">12dp</item>
|
||||||
</style>qgi
|
</style>
|
||||||
|
|
||||||
<style name="DetailsButtonStyle" parent="DetailsButtonStyleBase" />
|
<style name="DetailsButtonStyle" parent="DetailsButtonStyleBase"/>
|
||||||
|
|
||||||
<style name="DetailsPrimaryButtonStyle" parent="DetailsButtonStyle">
|
<style name="DetailsPrimaryButtonStyle" parent="DetailsButtonStyle">
|
||||||
<item name="android:textColor">#ffffff</item>
|
<item name="android:textColor">#ffffff</item>
|
||||||
|
10
build.gradle
10
build.gradle
@ -1,9 +1,6 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
jcenter()
|
||||||
url "https://repo1.maven.org/maven2"
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
maven {
|
maven {
|
||||||
url 'https://maven.google.com/'
|
url 'https://maven.google.com/'
|
||||||
name 'Google'
|
name 'Google'
|
||||||
@ -16,6 +13,9 @@ buildscript {
|
|||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
maven { url 'https://maven.google.com' }
|
maven {
|
||||||
|
url 'https://maven.google.com/'
|
||||||
|
name 'Google'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user