Merge branch 'streamline-whitelabeling' into 'master'

Streamline whitelabeling

See merge request fdroid/fdroidclient!686
This commit is contained in:
Hans-Christoph Steiner 2018-06-06 19:10:40 +00:00
commit 6f7fdec4eb
16 changed files with 172 additions and 108 deletions

View File

@ -12,51 +12,6 @@ def getVersionName = { ->
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 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 {
toolVersion = '7.2'
}

View File

@ -59,7 +59,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@ -528,11 +527,19 @@ public final class Utils {
*
* @param bytes an array of bytes.
* @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) {
BigInteger bi = new BigInteger(1, bytes);
return String.format("%0" + (bytes.length << 1) + "X", bi);
public static String toHexString(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
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) {
if (str == null || str.length() == 0) {

View File

@ -26,7 +26,6 @@ import android.content.pm.PackageManager;
import android.content.pm.Signature;
import org.acra.ACRA;
import org.fdroid.fdroid.Utils;
import org.bouncycastle.util.encoders.Hex;
import java.io.ByteArrayOutputStream;
import java.io.File;
@ -69,8 +68,8 @@ class ApkSignatureVerifier {
}
Utils.debugLog(TAG, "Signature mismatch!");
Utils.debugLog(TAG, "APK sig: " + Hex.toHexString(getApkSignature(apkFile)));
Utils.debugLog(TAG, "F-Droid sig: " + Hex.toHexString(getFDroidSignature()));
Utils.debugLog(TAG, "APK sig: " + Utils.toHexString(getApkSignature(apkFile)));
Utils.debugLog(TAG, "F-Droid sig: " + Utils.toHexString(getFDroidSignature()));
return false;
}

View File

@ -4,12 +4,12 @@ import android.annotation.TargetApi;
import android.net.Uri;
import android.os.Build;
import android.text.TextUtils;
import android.util.Base64;
import info.guardianproject.netcipher.NetCipher;
import org.apache.commons.io.FileUtils;
import org.fdroid.fdroid.BuildConfig;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Utils;
import org.bouncycastle.util.encoders.Base64;
import java.io.BufferedInputStream;
import java.io.File;
@ -151,7 +151,8 @@ public class HttpDownloader extends Downloader {
if (username != null && password != null) {
// add authorization header from username / password if set
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;
}

View File

@ -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;
import android.app.Activity;
@ -24,6 +49,7 @@ import org.fdroid.fdroid.Languages;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.installer.InstallHistoryService;
import org.fdroid.fdroid.installer.PrivilegedInstaller;
@ -120,8 +146,12 @@ public class PreferencesFragment extends PreferenceFragment
private void textSummary(String key, int resId) {
EditTextPreference pref = (EditTextPreference) findPreference(key);
if (pref == null) {
Utils.debugLog(TAG, "null preference found for " + key);
} else {
pref.setSummary(getString(resId, pref.getText()));
}
}
private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) {
int position = seekBarPreference.getValue();

View File

@ -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;
import android.app.SearchManager;
@ -65,7 +87,7 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
private RecyclerView pager;
private MainViewAdapter adapter;
private BottomNavigationBar bottomNavigation;
private int selectedMenuId = R.id.whats_new;
private int selectedMenuId;
private TextBadgeItem updatesBadge;
@Override
@ -110,7 +132,9 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
LocalBroadcastManager.getInstance(this).registerReceiver(onUpdateableAppsChanged, updateableAppsFilter);
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();

View File

@ -4,7 +4,7 @@
<style name="BodyTextV16" parent="BodyTextBase">
<item name="android:lineSpacingMultiplier">1.25</item>
</style>
<style name="BodyText" parent="BodyTextV16" />
<style name="BodyText" parent="BodyTextV16"/>
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase">
<item name="android:fontFamily">sans-serif-light</item>

View File

@ -5,13 +5,13 @@
<item name="android:textDirection">locale</item>
</style>
<style name="CaptionText" parent="CaptionTextV17" />
<style name="CaptionText" parent="CaptionTextV17"/>
<style name="BodyTextV17" parent="BodyTextV16">
<item name="android:textDirection">locale</item>
</style>
<style name="BodyText" parent="BodyTextV17" />
<style name="BodyText" parent="BodyTextV17"/>
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase">
<item name="android:textAlignment">center</item>

View File

@ -8,6 +8,6 @@
</style>
<!-- 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>

View File

@ -1,19 +1,19 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<declare-styleable name="Theme">
<attr name="appDetailsBackground" format="color" />
<attr name="appDetailsCardBackground" format="color" />
<attr name="categoryPreviewAppCardBackground" format="reference" />
<attr name="mainTabSwapBackground" format="color" />
<attr name="mainTabSwapSplashTint" format="color" />
<attr name="categoryName" format="color" />
<attr name="installedApps" format="color" />
<attr name="detailPanel" format="reference" />
<attr name="appListItem" format="color" />
<attr name="lightGrayTextColor" format="color" />
<attr name="antiFeaturesWarning" format="reference" />
<attr name="backButtonDrawable" format="reference" />
<attr name="clearButtonDrawable" format="reference" />
<attr name="appDetailsBackground" format="color"/>
<attr name="appDetailsCardBackground" format="color"/>
<attr name="categoryPreviewAppCardBackground" format="reference"/>
<attr name="mainTabSwapBackground" format="color"/>
<attr name="mainTabSwapSplashTint" format="color"/>
<attr name="categoryName" format="color"/>
<attr name="installedApps" format="color"/>
<attr name="detailPanel" format="reference"/>
<attr name="appListItem" format="color"/>
<attr name="lightGrayTextColor" format="color"/>
<attr name="antiFeaturesWarning" format="reference"/>
<attr name="backButtonDrawable" format="reference"/>
<attr name="clearButtonDrawable" format="reference"/>
</declare-styleable>
<integer name="unhidePin">1337</integer>

View File

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<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="source_link">https://gitlab.com/fdroid/fdroidclient</string>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<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_large_tile" />
<item type="id" name="whats_new_small_tile" />
<item type="id" name="whats_new_regular_list" />
<item type="id" name="whats_new_feature"/>
<item type="id" name="whats_new_large_tile"/>
<item type="id" name="whats_new_small_tile"/>
<item type="id" name="whats_new_regular_list"/>
</resources>

View File

@ -17,7 +17,7 @@
<string name="unstable_updates">Unstable updates</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_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_summary">In case there are bugs or compatibility issues, use the XML app index</string>
<string name="other">Other</string>
@ -37,7 +37,7 @@
<string name="notify">Show available updates</string>
<string name="notify_on">Show a notification when updates are available</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_summary">Open details screen of Privileged Extension to update/uninstall it</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="repo_confirm_delete_title">Delete Repository?</string>
<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.
</string>
<string name="repo_disabled_notification">Disabled "%1$s".\n\nYou will
need to re-enable this repository to install apps from it.
</string>
<string name="repo_added">Saved F-Droid repository %1$s.</string>
<string name="repo_searching_address">Looking for F-Droid repository at\n%1$s</string>
<string name="repo_added">Saved package repository %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="up_to_maxsdk">Up to %s</string>
<string name="minsdk_up_to_maxsdk">%1$s up to %2$s</string>

View File

@ -79,18 +79,18 @@
<!-- customizations that are not API-level specific go here. -->
</style>
<style name="AlertDialogBaseThemeDark" parent="Theme.AppCompat.Dialog.Alert" />
<style name="AlertDialogBaseThemeDark" parent="Theme.AppCompat.Dialog.Alert"/>
<style name="AlertDialogThemeDark" parent="AlertDialogBaseThemeDark">
<item name="colorAccent">@color/fdroid_green</item>
<item name="android:windowBackground">@color/cardview_dark_background</item>
</style>
<style name="AlertDialogBaseThemeLight" parent="Theme.AppCompat.Light.Dialog.Alert" />
<style name="AlertDialogBaseThemeLight" parent="Theme.AppCompat.Light.Dialog.Alert"/>
<style name="AlertDialogThemeLight" parent="AlertDialogBaseThemeLight">
<item name="colorAccent">@color/fdroid_green</item>
</style>
<style name="AlertDialogBaseThemeNight" parent="AlertDialogThemeDark" />
<style name="AlertDialogBaseThemeNight" parent="AlertDialogThemeDark"/>
<style name="AlertDialogThemeNight" parent="AlertDialogBaseThemeNight">
<item name="android:windowBackground">@color/fdroid_night</item>
</style>
@ -122,7 +122,7 @@
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Caption</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="CaptionText" parent="CaptionTextBase" />
<style name="CaptionText" parent="CaptionTextBase"/>
<!-- use this style for a text views that is a paragraph of text -->
<style name="BodyTextBase">
@ -130,7 +130,7 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Body1</item>
</style>
<style name="BodyText" parent="BodyTextBase" />
<style name="BodyText" parent="BodyTextBase"/>
<style name="AppListEmptyText">
<item name="android:id">@android:id/empty</item>
@ -149,7 +149,7 @@
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
</style>
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase" />
<style name="AppListItemStatusText" parent="AppListItemStatusTextBase"/>
<style name="SwapTheme.Wizard" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorButtonNormal">@color/swap_bright_blue</item>
@ -180,7 +180,7 @@
<item name="android:paddingBottom">20.1dp</item> <!-- 36px * 96dpi / 160dpi -->
</style>
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase" />
<style name="SwapTheme.AppList.SwapSuccess" parent="SwapTheme.AppList.SwapSuccessBase"/>
<style name="SwapTheme.AppList.SwapSuccessDetailsBase">
<item name="android:gravity">center</item>
@ -190,7 +190,7 @@
<item name="android:textStyle">bold</item>
</style>
<style name="SwapTheme.AppList.SwapSuccessDetails" parent="SwapTheme.AppList.SwapSuccessDetailsBase" />
<style name="SwapTheme.AppList.SwapSuccessDetails" parent="SwapTheme.AppList.SwapSuccessDetailsBase"/>
<style name="SwapTheme.StartSwap.MainTextBase">
<item name="android:gravity">center</item>
@ -211,7 +211,7 @@
<item name="android:textColorSecondary">#fff</item>
</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">
<item name="android:textSize">22sp</item>
@ -232,9 +232,9 @@
<item name="android:paddingBottom">10dp</item>
</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:paddingRight">40dp</item>
<item name="android:paddingTop">0dp</item>
@ -288,7 +288,7 @@
<item name="android:gravity">center_vertical</item>
</style>
<style name="AppDetailsLink" parent="AppDetailsLinkBase" />
<style name="AppDetailsLink" parent="AppDetailsLinkBase"/>
<style name="AppDetailsSubheaderTextBase">
<item name="android:layout_width">match_parent</item>
@ -300,9 +300,9 @@
<item name="android:drawablePadding">12dp</item>
</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">
<item name="windowActionBar">false</item>
@ -314,7 +314,7 @@
<item name="android:src">@drawable/ic_more</item>
</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>

View File

@ -6,9 +6,9 @@
<item name="android:minHeight">32dp</item>
<item name="android:minWidth">0dp</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">
<item name="android:textColor">#ffffff</item>

View File

@ -1,9 +1,6 @@
buildscript {
repositories {
maven {
url "https://repo1.maven.org/maven2"
jcenter()
}
maven {
url 'https://maven.google.com/'
name 'Google'
@ -16,6 +13,9 @@ buildscript {
allprojects {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
}