mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 06:30:27 +03:00 
			
		
		
		
	build: improve regsub pattern for setting buildToolsVersion
This addresses the discussion in !64 https://gitlab.com/fdroid/fdroidserver/merge_requests/64 Sometimes, buildToolsVersion is a kind of gradle macro call, and other times it is a variable assignment. This regsub pattern now handles both of those cases.
This commit is contained in:
		
							parent
							
								
									6db6433e97
								
							
						
					
					
						commit
						d53a5af715
					
				
					 10 changed files with 717 additions and 8 deletions
				
			
		
							
								
								
									
										66
									
								
								tests/source-files/Zillode/syncthing-silk/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								tests/source-files/Zillode/syncthing-silk/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2015 OpenSilk Productions LLC
 | 
			
		||||
 *
 | 
			
		||||
 * 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, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 | 
			
		||||
 | 
			
		||||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
        jcenter()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:1.1.3'
 | 
			
		||||
        classpath 'me.tatarka:gradle-retrolambda:2.5.0'
 | 
			
		||||
        classpath 'org.robolectric:robolectric-gradle-plugin:1.0.1'
 | 
			
		||||
 | 
			
		||||
        // NOTE: Do not place your application dependencies here; they belong
 | 
			
		||||
        // in the individual module build.gradle files
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
allprojects {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
        jcenter()
 | 
			
		||||
        maven { url '../../m2/repository' }
 | 
			
		||||
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Build config
 | 
			
		||||
ext.compileSdkVersion = 22
 | 
			
		||||
ext.buildToolsVersion  = "22.0.1"
 | 
			
		||||
 | 
			
		||||
// defaultConfig
 | 
			
		||||
ext.targetSdkVersion = 22
 | 
			
		||||
 | 
			
		||||
ext.supportLibVersion = "22.1.1"
 | 
			
		||||
ext.dagger2Version = "2.0"
 | 
			
		||||
ext.rxAndroidVersion = "0.23.0"
 | 
			
		||||
ext.timberVersion = "2.5.0"
 | 
			
		||||
ext.commonsLangVersion = "3.3.2"
 | 
			
		||||
ext.butterKnifeVersion = "6.0.0"
 | 
			
		||||
ext.commonsIoVersion = "2.4"
 | 
			
		||||
ext.gsonVersion = "2.3"
 | 
			
		||||
 | 
			
		||||
def gitSha() {
 | 
			
		||||
    return 'git rev-parse --short HEAD'.execute().text.trim()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
def getDebugVersionSuffix() {
 | 
			
		||||
    return "${gitSha()}".isEmpty() ? "-SNAPSHOT" : "-SNAPSHOT-${gitSha()}"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										484
									
								
								tests/source-files/fdroid/fdroidclient/AndroidManifest.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										484
									
								
								tests/source-files/fdroid/fdroidclient/AndroidManifest.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,484 @@
 | 
			
		|||
<?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="940"
 | 
			
		||||
    android:versionName="0.94-test"
 | 
			
		||||
    >
 | 
			
		||||
 | 
			
		||||
    <uses-sdk
 | 
			
		||||
        tools:overrideLibrary="org.thoughtcrime.ssl.pinning"
 | 
			
		||||
        android:minSdkVersion="8"
 | 
			
		||||
        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.telephony"
 | 
			
		||||
        android:required="false" />
 | 
			
		||||
    <uses-feature
 | 
			
		||||
        android:name="android.hardware.wifi"
 | 
			
		||||
        android:required="false" />
 | 
			
		||||
    <uses-feature
 | 
			
		||||
        android:name="android.hardware.touchscreen"
 | 
			
		||||
        android:required="false" />
 | 
			
		||||
    <uses-feature
 | 
			
		||||
        android:name="android.hardware.nfc"
 | 
			
		||||
        android:required="false" />
 | 
			
		||||
    <uses-feature
 | 
			
		||||
        android:name="android.hardware.bluetooth"
 | 
			
		||||
        android:required="false" />
 | 
			
		||||
 | 
			
		||||
    <uses-permission android:name="android.permission.INTERNET" />
 | 
			
		||||
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.BLUETOOTH" />
 | 
			
		||||
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 | 
			
		||||
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
 | 
			
		||||
        android:maxSdkVersion="18" />
 | 
			
		||||
    <uses-permission android:name="android.permission.NFC" />
 | 
			
		||||
 | 
			
		||||
    <!-- These permissions are only granted when F-Droid is installed as a system-app! -->
 | 
			
		||||
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"
 | 
			
		||||
        tools:ignore="ProtectedPermissions"/>
 | 
			
		||||
    <uses-permission android:name="android.permission.DELETE_PACKAGES"
 | 
			
		||||
        tools:ignore="ProtectedPermissions"/>
 | 
			
		||||
 | 
			
		||||
    <application
 | 
			
		||||
        android:debuggable="true"
 | 
			
		||||
        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"
 | 
			
		||||
        >
 | 
			
		||||
 | 
			
		||||
        <provider
 | 
			
		||||
            android:authorities="org.fdroid.fdroid.data.AppProvider"
 | 
			
		||||
            android:name="org.fdroid.fdroid.data.AppProvider"
 | 
			
		||||
            android:exported="false"/>
 | 
			
		||||
 | 
			
		||||
        <provider
 | 
			
		||||
            android:authorities="org.fdroid.fdroid.data.RepoProvider"
 | 
			
		||||
            android:name="org.fdroid.fdroid.data.RepoProvider"
 | 
			
		||||
            android:exported="false"/>
 | 
			
		||||
 | 
			
		||||
        <provider
 | 
			
		||||
            android:authorities="org.fdroid.fdroid.data.ApkProvider"
 | 
			
		||||
            android:name="org.fdroid.fdroid.data.ApkProvider"
 | 
			
		||||
            android:exported="false"/>
 | 
			
		||||
 | 
			
		||||
        <provider
 | 
			
		||||
            android:authorities="org.fdroid.fdroid.data.InstalledAppProvider"
 | 
			
		||||
            android:name="org.fdroid.fdroid.data.InstalledAppProvider"
 | 
			
		||||
            android:exported="false"/>
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".FDroid"
 | 
			
		||||
            android:launchMode="singleTop"
 | 
			
		||||
            android:configChanges="keyboardHidden|orientation|screenSize" >
 | 
			
		||||
 | 
			
		||||
            <!-- App URLs -->
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.MAIN" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.LAUNCHER" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="fdroid.app" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="http" />
 | 
			
		||||
                <data android:scheme="https" />
 | 
			
		||||
                <data android:host="f-droid.org" />
 | 
			
		||||
                <data android:host="www.f-droid.org" />
 | 
			
		||||
                <data android:pathPrefix="/app/" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="http" />
 | 
			
		||||
                <data android:scheme="https" />
 | 
			
		||||
                <data android:host="f-droid.org" />
 | 
			
		||||
                <data android:host="www.f-droid.org" />
 | 
			
		||||
                <data android:pathPrefix="/repository/browse" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="market" android:host="details" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="http" />
 | 
			
		||||
                <data android:scheme="https" />
 | 
			
		||||
                <data android:host="play.google.com" /> <!-- they don't do www. -->
 | 
			
		||||
                <data android:path="/store/apps/details" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="amzn" android:host="apps" android:path="/android" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="http" />
 | 
			
		||||
                <data android:scheme="https" />
 | 
			
		||||
                <data android:host="amazon.com" />
 | 
			
		||||
                <data android:host="www.amazon.com" />
 | 
			
		||||
                <data android:path="/gp/mas/dl/android" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <!-- Search URLs -->
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="fdroid.search" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="market" android:host="search" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="http" />
 | 
			
		||||
                <data android:scheme="https" />
 | 
			
		||||
                <data android:host="play.google.com" /> <!-- they don't do www. -->
 | 
			
		||||
                <data android:path="/store/search" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <!-- Handle NFC tags detected from outside our application -->
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
 | 
			
		||||
                <!--
 | 
			
		||||
                URIs that come in via NFC have scheme/host normalized to all lower case
 | 
			
		||||
                https://developer.android.com/reference/android/nfc/NfcAdapter.html#ACTION_NDEF_DISCOVERED
 | 
			
		||||
                -->
 | 
			
		||||
                <data android:scheme="fdroidrepo" />
 | 
			
		||||
                <data android:scheme="fdroidrepos" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <!-- Repo URLs -->
 | 
			
		||||
 | 
			
		||||
            <!--
 | 
			
		||||
            This intent serves two purposes: Swapping apps between devices and adding a
 | 
			
		||||
            repo from a website (e.g. https://guardianproject.info/fdroid/repo).
 | 
			
		||||
            We intercept both of these situations in the FDroid activity, and then redirect
 | 
			
		||||
            to the appropriate handler (swap handling, manage repos respectively) from there.
 | 
			
		||||
 | 
			
		||||
            The reason for this is that the only differentiating factor is the presence
 | 
			
		||||
            of a "swap=1" in the query string, and intent-filter is unable to deal with
 | 
			
		||||
            query parameters. An alternative would be to do something like fdroidswap:// as
 | 
			
		||||
            a scheme, but then we. Need to copy/paste all of this intent-filter stuff and
 | 
			
		||||
            keep it up to date when it changes or a bug is found.
 | 
			
		||||
            -->
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
 | 
			
		||||
                <!--
 | 
			
		||||
                Android's scheme matcher is case-sensitive, so include
 | 
			
		||||
                ALL CAPS versions to support ALL CAPS URLs in QR Codes.
 | 
			
		||||
                QR Codes have a special ALL CAPS mode that uses a reduced
 | 
			
		||||
                character set, making for more compact QR Codes.
 | 
			
		||||
                -->
 | 
			
		||||
                <data android:scheme="http" />
 | 
			
		||||
                <data android:scheme="HTTP" />
 | 
			
		||||
                <data android:scheme="https" />
 | 
			
		||||
                <data android:scheme="HTTPS" />
 | 
			
		||||
                <data android:scheme="fdroidrepo" />
 | 
			
		||||
                <data android:scheme="FDROIDREPO" />
 | 
			
		||||
                <data android:scheme="fdroidrepos" />
 | 
			
		||||
                <data android:scheme="FDROIDREPOS" />
 | 
			
		||||
 | 
			
		||||
                <data android:host="*" />
 | 
			
		||||
 | 
			
		||||
                <!--
 | 
			
		||||
                The pattern matcher here is poorly implemented, in particular the * is
 | 
			
		||||
                non-greedy, so you have to do stupid tricks to match patterns that have
 | 
			
		||||
                repeat characters in them. http://stackoverflow.com/a/8599921/306864
 | 
			
		||||
                -->
 | 
			
		||||
                <data android:path="/fdroid/repo" />
 | 
			
		||||
                <data android:pathPattern="/fdroid/repo/*" />
 | 
			
		||||
                <data android:pathPattern="/.*/fdroid/repo" />
 | 
			
		||||
                <data android:pathPattern="/.*/fdroid/repo/*" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/fdroid/repo" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/fdroid/repo/*" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/.*/fdroid/repo" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/.*/fdroid/repo/*" />
 | 
			
		||||
                <data android:path="/fdroid/archive" />
 | 
			
		||||
                <data android:pathPattern="/fdroid/archive/*" />
 | 
			
		||||
                <data android:pathPattern="/.*/fdroid/archive" />
 | 
			
		||||
                <data android:pathPattern="/.*/fdroid/archive/*" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/fdroid/archive" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/fdroid/archive/*" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/.*/fdroid/archive" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/.*/fdroid/archive/*" />
 | 
			
		||||
                <!--
 | 
			
		||||
                Some QR Code scanners don't respect custom schemes like fdroidrepo://,
 | 
			
		||||
                so this is a workaround, since the local repo URL is all uppercase in
 | 
			
		||||
                the QR Code for sending the local repo to another device.
 | 
			
		||||
                -->
 | 
			
		||||
                <data android:path="/FDROID/REPO" />
 | 
			
		||||
                <data android:pathPattern="/.*/FDROID/REPO" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/FDROID/REPO" />
 | 
			
		||||
                <data android:pathPattern="/.*/.*/.*/FDROID/REPO" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.app.default_searchable"
 | 
			
		||||
                android:value=".SearchResults" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".views.swap.ConnectSwapActivity"
 | 
			
		||||
            android:theme="@style/SwapTheme.Wizard.ReceiveSwap"
 | 
			
		||||
            android:label=""
 | 
			
		||||
            android:noHistory="true"
 | 
			
		||||
            android:parentActivityName=".FDroid"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:configChanges="orientation|keyboardHidden">
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".installer.InstallConfirmActivity"
 | 
			
		||||
            android:label="@string/menu_install"
 | 
			
		||||
            android:parentActivityName=".FDroid">
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".views.ManageReposActivity"
 | 
			
		||||
            android:label="@string/app_name"
 | 
			
		||||
            android:launchMode="singleTask"
 | 
			
		||||
            android:parentActivityName=".FDroid" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
 | 
			
		||||
                <data android:mimeType="application/vnd.org.fdroid.fdroid.repo" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".NfcNotEnabledActivity"
 | 
			
		||||
            android:noHistory="true" />
 | 
			
		||||
        <!--<activity android:name=".views.QrWizardDownloadActivity" />
 | 
			
		||||
        <activity android:name=".views.QrWizardWifiNetworkActivity" />
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".views.LocalRepoActivity"
 | 
			
		||||
            android:configChanges="orientation|keyboardHidden|screenSize"
 | 
			
		||||
            android:label="@string/local_repo"
 | 
			
		||||
            android:launchMode="singleTop"
 | 
			
		||||
            android:parentActivityName=".FDroid"
 | 
			
		||||
            android:screenOrientation="portrait" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".views.SelectLocalAppsActivity"
 | 
			
		||||
            android:label="@string/setup_repo"
 | 
			
		||||
            android:parentActivityName=".views.LocalRepoActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".views.LocalRepoActivity" />
 | 
			
		||||
        </activity>-->
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".views.RepoDetailsActivity"
 | 
			
		||||
            android:label="@string/menu_manage"
 | 
			
		||||
            android:parentActivityName=".views.ManageReposActivity"
 | 
			
		||||
            android:windowSoftInputMode="stateHidden">
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".views.ManageReposActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".AppDetails"
 | 
			
		||||
            android:label="@string/app_details"
 | 
			
		||||
            android:exported="true"
 | 
			
		||||
            android:parentActivityName=".FDroid" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".views.swap.SwapAppListActivity$SwapAppDetails"
 | 
			
		||||
            android:label="@string/app_details"
 | 
			
		||||
            android:parentActivityName=".views.swap.SwapAppListActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".views.swap.SwapAppListActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:label="@string/menu_preferences"
 | 
			
		||||
            android:name=".PreferencesActivity"
 | 
			
		||||
            android:parentActivityName=".FDroid" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:label="@string/menu_swap"
 | 
			
		||||
            android:name=".views.swap.SwapActivity"
 | 
			
		||||
            android:parentActivityName=".FDroid"
 | 
			
		||||
            android:theme="@style/SwapTheme.Wizard"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:configChanges="orientation|keyboardHidden">
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:label="@string/swap"
 | 
			
		||||
            android:name=".views.swap.SwapAppListActivity"
 | 
			
		||||
            android:parentActivityName=".FDroid"
 | 
			
		||||
            android:theme="@style/SwapTheme.AppList"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:configChanges="orientation|keyboardHidden">
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <!-- Note: Theme.NoDisplay, this activity shows dialogs only -->
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".installer.InstallIntoSystemDialogActivity"
 | 
			
		||||
            android:theme="@android:style/Theme.NoDisplay" />
 | 
			
		||||
        <receiver
 | 
			
		||||
            android:name=".installer.InstallIntoSystemBootReceiver" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.BOOT_COMPLETED" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </receiver>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".SearchResults"
 | 
			
		||||
            android:label="@string/search_results"
 | 
			
		||||
            android:exported="true"
 | 
			
		||||
            android:launchMode="singleTop"
 | 
			
		||||
            android:parentActivityName=".FDroid" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value=".FDroid" />
 | 
			
		||||
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.SEARCH" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.app.searchable"
 | 
			
		||||
                android:resource="@xml/searchable" />
 | 
			
		||||
        </activity>
 | 
			
		||||
 | 
			
		||||
        <receiver android:name=".receiver.StartupReceiver" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.BOOT_COMPLETED" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.HOME" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </receiver>
 | 
			
		||||
        <receiver android:name=".receiver.PackageAddedReceiver" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.PACKAGE_ADDED" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="package" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </receiver>
 | 
			
		||||
        <receiver android:name=".receiver.PackageUpgradedReceiver" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="package" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </receiver>
 | 
			
		||||
        <receiver android:name=".receiver.PackageRemovedReceiver" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
 | 
			
		||||
 | 
			
		||||
                <data android:scheme="package" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </receiver>
 | 
			
		||||
        <receiver android:name=".receiver.WifiStateChangeReceiver" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.net.wifi.STATE_CHANGE" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </receiver>
 | 
			
		||||
 | 
			
		||||
        <service android:name=".UpdateService" />
 | 
			
		||||
        <service android:name=".net.WifiStateChangeService" />
 | 
			
		||||
        <service android:name=".localrepo.LocalRepoService" />
 | 
			
		||||
    </application>
 | 
			
		||||
 | 
			
		||||
</manifest>
 | 
			
		||||
							
								
								
									
										218
									
								
								tests/source-files/fdroid/fdroidclient/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								tests/source-files/fdroid/fdroidclient/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,218 @@
 | 
			
		|||
apply plugin: 'com.android.application'
 | 
			
		||||
 | 
			
		||||
if ( !hasProperty( 'sourceDeps' ) ) {
 | 
			
		||||
 | 
			
		||||
    logger.info "Setting up *binary* dependencies for F-Droid (if you'd prefer to build from source, pass the -PsourceDeps argument to gradle while building)."
 | 
			
		||||
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
 | 
			
		||||
        // This is here until we sort out all dependencies from mavenCentral/jcenter. Once all of
 | 
			
		||||
        // the dependencies below have been sorted out, this can be removed.
 | 
			
		||||
        flatDir {
 | 
			
		||||
            dirs 'libs/binaryDeps'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dependencies {
 | 
			
		||||
 | 
			
		||||
        compile 'com.android.support:support-v4:22.1.0',
 | 
			
		||||
                'com.android.support:appcompat-v7:22.1.0',
 | 
			
		||||
                'com.android.support:support-annotations:22.1.0',
 | 
			
		||||
 | 
			
		||||
                'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0',
 | 
			
		||||
                'com.nostra13.universalimageloader:universal-image-loader:1.9.4',
 | 
			
		||||
                'com.google.zxing:core:3.2.0',
 | 
			
		||||
                'eu.chainfire:libsuperuser:1.0.0.201504231659',
 | 
			
		||||
 | 
			
		||||
                // We use a slightly modified spongycastle, see
 | 
			
		||||
                // openkeychain/spongycastle with some changes on top of 1.51.0.0
 | 
			
		||||
                'com.madgag.spongycastle:pkix:1.51.0.0',
 | 
			
		||||
                'com.madgag.spongycastle:prov:1.51.0.0',
 | 
			
		||||
                'com.madgag.spongycastle:core:1.51.0.0'
 | 
			
		||||
 | 
			
		||||
        // Upstream doesn't have a binary on mavenCentral/jcenter yet:
 | 
			
		||||
        // https://github.com/kolavar/android-support-v4-preferencefragment/issues/13
 | 
			
		||||
        compile(name: 'support-v4-preferencefragment-release', ext: 'aar')
 | 
			
		||||
 | 
			
		||||
        // Fork for F-Droid, including support for https. Not merged into upstream
 | 
			
		||||
        // yet (seems to be a little unsupported as of late), so not using mavenCentral/jcenter.
 | 
			
		||||
        compile(name: 'nanohttpd-2.1.0')
 | 
			
		||||
 | 
			
		||||
        // Upstream doesn't have a binary on mavenCentral.
 | 
			
		||||
        compile(name: 'zipsigner')
 | 
			
		||||
 | 
			
		||||
        // Project semi-abandoned, 3.4.1 is from 2011 and we use trunk from 2013
 | 
			
		||||
        compile(name: 'jmdns')
 | 
			
		||||
 | 
			
		||||
        androidTestCompile 'commons-io:commons-io:2.2'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
} else {
 | 
			
		||||
 | 
			
		||||
    logger.info "Setting up *source* dependencies for F-Droid (because you passed in the -PsourceDeps argument to gradle while building)."
 | 
			
		||||
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dependencies {
 | 
			
		||||
        compile project(':extern:AndroidPinning')
 | 
			
		||||
        compile project(':extern:UniversalImageLoader:library')
 | 
			
		||||
        compile project(':extern:libsuperuser:libsuperuser')
 | 
			
		||||
        compile project(':extern:nanohttpd:core')
 | 
			
		||||
        compile project(':extern:jmdns')
 | 
			
		||||
        compile project(':extern:zipsigner')
 | 
			
		||||
        compile project(':extern:zxing-core')
 | 
			
		||||
        compile( project(':extern:support-v4-preferencefragment') ) {
 | 
			
		||||
            exclude module: 'support-v4'
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Until the android team updates the gradle plugin version from 0.10.0 to
 | 
			
		||||
        // a newer version, we can't build this from source with our gradle version
 | 
			
		||||
        // of 1.0.0. They use API's which have been moved in the newer plugin.
 | 
			
		||||
        // So yes, this is a little annoying that our "source dependencies" include
 | 
			
		||||
        // a bunch of binaries from jcenter - but the ant build file (which is the
 | 
			
		||||
        // one used to build F-Droid which is distributed on https://f-droid.org
 | 
			
		||||
        // builds these from source - well - not support-v4).
 | 
			
		||||
        //
 | 
			
		||||
        // If the android team gets the build script working with the newer plugin,
 | 
			
		||||
        // then you can find the relevant portions of the ../build.gradle file that
 | 
			
		||||
        // include magic required to make it work at around about the v0.78 git tag.
 | 
			
		||||
        // They have since been removed to clean up the build file.
 | 
			
		||||
        compile 'com.android.support:support-v4:22.1.0',
 | 
			
		||||
                'com.android.support:appcompat-v7:22.1.0',
 | 
			
		||||
                'com.android.support:support-annotations:22.1.0'
 | 
			
		||||
 | 
			
		||||
        androidTestCompile 'commons-io:commons-io:2.2'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task cleanBinaryDeps(type: Delete) {
 | 
			
		||||
 | 
			
		||||
    enabled = project.hasProperty('sourceDeps')
 | 
			
		||||
    description = "Removes all .jar and .aar files from F-Droid/libs/. Requires the sourceDeps property to be set (\"gradle -PsourceDeps cleanBinaryDeps\")"
 | 
			
		||||
 | 
			
		||||
    delete fileTree('libs/binaryDeps') {
 | 
			
		||||
        include '*.aar'
 | 
			
		||||
        include '*.jar'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task binaryDeps(type: Copy, dependsOn: ':F-Droid:prepareReleaseDependencies') {
 | 
			
		||||
 | 
			
		||||
    enabled = project.hasProperty('sourceDeps')
 | 
			
		||||
    description = "Copies .jar and .aar files from subproject dependencies in extern/ to F-Droid/libs. Requires the sourceDeps property to be set (\"gradle -PsourceDeps binaryDeps\")"
 | 
			
		||||
 | 
			
		||||
    from ('../extern/' ) {
 | 
			
		||||
        include 'support-v4-preferencefragment/build/outputs/aar/support-v4-preferencefragment-release.aar',
 | 
			
		||||
                'nanohttpd/core/build/libs/nanohttpd-2.1.0.jar',
 | 
			
		||||
                'zipsigner/build/libs/zipsigner.jar',
 | 
			
		||||
                'jmdns/build/libs/jmdns.jar',
 | 
			
		||||
                'Support/v4/build/libs/support-v4.jar'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    into 'libs/binaryDeps'
 | 
			
		||||
 | 
			
		||||
    includeEmptyDirs false
 | 
			
		||||
 | 
			
		||||
    eachFile { FileCopyDetails details ->
 | 
			
		||||
        // Don't copy to a sub folder such as libs/binaryDeps/Project/build/outputs/aar/project.aar, but
 | 
			
		||||
        // rather libs/binaryDeps/project.aar.
 | 
			
		||||
        details.path = details.name
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion 21
 | 
			
		||||
    buildToolsVersion '22.0.1'
 | 
			
		||||
 | 
			
		||||
    sourceSets {
 | 
			
		||||
        main {
 | 
			
		||||
            manifest.srcFile 'AndroidManifest.xml'
 | 
			
		||||
            java.srcDirs = ['src']
 | 
			
		||||
            resources.srcDirs = ['src']
 | 
			
		||||
            aidl.srcDirs = ['src']
 | 
			
		||||
            renderscript.srcDirs = ['src']
 | 
			
		||||
            res.srcDirs = ['res']
 | 
			
		||||
            assets.srcDirs = ['assets']
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        androidTest.setRoot('test')
 | 
			
		||||
        androidTest {
 | 
			
		||||
            manifest.srcFile 'test/AndroidManifest.xml'
 | 
			
		||||
            java.srcDirs = ['test/src']
 | 
			
		||||
            resources.srcDirs = ['test/src']
 | 
			
		||||
            aidl.srcDirs = ['test/src']
 | 
			
		||||
            renderscript.srcDirs = ['test/src']
 | 
			
		||||
            res.srcDirs = ['test/res']
 | 
			
		||||
            assets.srcDirs = ['test/assets']
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled false
 | 
			
		||||
        }
 | 
			
		||||
        buildTypes {
 | 
			
		||||
            debug {
 | 
			
		||||
                debuggable true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        compileOptions.encoding = "UTF-8"
 | 
			
		||||
 | 
			
		||||
        // Use Java 1.7, requires minSdk 8
 | 
			
		||||
        sourceCompatibility JavaVersion.VERSION_1_7
 | 
			
		||||
        targetCompatibility JavaVersion.VERSION_1_7
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        checkReleaseBuilds false
 | 
			
		||||
        abortOnError false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Enable all Android lint warnings
 | 
			
		||||
    gradle.projectsEvaluated {
 | 
			
		||||
        tasks.withType(JavaCompile) {
 | 
			
		||||
            options.compilerArgs << "-Xlint:all"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// This person took the example code below from another blogpost online, however
 | 
			
		||||
// I lost the reference to it:
 | 
			
		||||
// http://stackoverflow.com/questions/23297562/gradle-javadoc-and-android-documentation
 | 
			
		||||
android.applicationVariants.all { variant ->
 | 
			
		||||
 | 
			
		||||
    task("generate${variant.name}Javadoc", type: Javadoc) {
 | 
			
		||||
        title = "$name $version API"
 | 
			
		||||
        description "Generates Javadoc for F-Droid."
 | 
			
		||||
        source = variant.javaCompile.source
 | 
			
		||||
 | 
			
		||||
        def sdkDir
 | 
			
		||||
        Properties properties = new Properties()
 | 
			
		||||
        File localProps = project.rootProject.file('local.properties')
 | 
			
		||||
        if (localProps.exists()) {
 | 
			
		||||
            properties.load(localProps.newDataInputStream())
 | 
			
		||||
            sdkDir = properties.getProperty('sdk.dir')
 | 
			
		||||
        } else {
 | 
			
		||||
            sdkDir = System.getenv('ANDROID_HOME')
 | 
			
		||||
        }
 | 
			
		||||
        if (!sdkDir) {
 | 
			
		||||
            throw new ProjectConfigurationException("Cannot find android sdk. Make sure sdk.dir is defined in local.properties or the environment variable ANDROID_HOME is set.", null)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ext.androidJar = "${sdkDir}/platforms/${android.compileSdkVersion}/android.jar"
 | 
			
		||||
        classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
 | 
			
		||||
        options.links("http://docs.oracle.com/javase/7/docs/api/");
 | 
			
		||||
        options.links("http://d.android.com/reference/");
 | 
			
		||||
        exclude '**/BuildConfig.java'
 | 
			
		||||
        exclude '**/R.java'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,248 @@
 | 
			
		|||
apply plugin: 'com.android.application'
 | 
			
		||||
apply plugin: 'witness'
 | 
			
		||||
apply plugin: 'jacoco'
 | 
			
		||||
apply plugin: 'com.github.kt3k.coveralls'
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information
 | 
			
		||||
    // NOTE: libraries are pinned to a specific build, see below
 | 
			
		||||
 | 
			
		||||
    // from local Android SDK
 | 
			
		||||
    compile 'com.android.support:support-v4:22.1.1'
 | 
			
		||||
    compile 'com.android.support:appcompat-v7:22.1.1'
 | 
			
		||||
    compile 'com.android.support:recyclerview-v7:22.1.0'
 | 
			
		||||
    compile 'com.android.support:cardview-v7:22.1.0'
 | 
			
		||||
    
 | 
			
		||||
    // Unit tests in the local JVM with Robolectric
 | 
			
		||||
    // https://developer.android.com/training/testing/unit-testing/local-unit-tests.html
 | 
			
		||||
    // https://github.com/nenick/AndroidStudioAndRobolectric
 | 
			
		||||
    // http://www.vogella.com/tutorials/Robolectric/article.html
 | 
			
		||||
    testCompile 'junit:junit:4.12'
 | 
			
		||||
    testCompile 'org.robolectric:robolectric:3.0-rc3'
 | 
			
		||||
 | 
			
		||||
    // UI testing with Espresso
 | 
			
		||||
    androidTestCompile 'com.android.support.test:runner:0.3'
 | 
			
		||||
    androidTestCompile 'com.android.support.test:rules:0.3'
 | 
			
		||||
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
 | 
			
		||||
    androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2') {
 | 
			
		||||
        exclude group: 'com.android.support', module: 'appcompat'
 | 
			
		||||
        exclude group: 'com.android.support', module: 'support-v4'
 | 
			
		||||
        exclude module: 'recyclerview-v7'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Temporary workaround for bug: https://code.google.com/p/android-test-kit/issues/detail?id=136
 | 
			
		||||
    // from https://github.com/googlesamples/android-testing/blob/master/build.gradle#L21
 | 
			
		||||
    configurations.all {
 | 
			
		||||
        resolutionStrategy.force 'com.android.support:support-annotations:22.1.1'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // JCenter etc.
 | 
			
		||||
    compile 'com.eftimoff:android-patternview:1.0.1@aar'
 | 
			
		||||
    compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
 | 
			
		||||
    compile 'com.journeyapps:zxing-android-integration:2.3.0@aar'
 | 
			
		||||
    compile 'com.google.zxing:core:3.2.0'
 | 
			
		||||
    compile 'com.jpardogo.materialtabstrip:library:1.0.9'
 | 
			
		||||
    compile 'com.getbase:floatingactionbutton:1.9.0'
 | 
			
		||||
    compile 'org.commonjava.googlecode.markdown4j:markdown4j:2.2-cj-1.0'
 | 
			
		||||
    compile 'com.splitwise:tokenautocomplete:1.3.3@aar'
 | 
			
		||||
    compile 'se.emilsjolander:stickylistheaders:2.6.0'
 | 
			
		||||
    compile 'org.sufficientlysecure:html-textview:1.1'
 | 
			
		||||
    compile 'com.mikepenz.materialdrawer:library:2.8.2@aar'
 | 
			
		||||
    compile 'com.mikepenz.iconics:library:0.9.1@aar'
 | 
			
		||||
    compile 'com.mikepenz.iconics:octicons-typeface:2.2.0@aar'
 | 
			
		||||
    compile 'com.mikepenz.iconics:meteocons-typeface:1.1.1@aar'
 | 
			
		||||
    compile 'com.mikepenz.iconics:community-material-typeface:1.0.0@aar'
 | 
			
		||||
    compile 'com.nispok:snackbar:2.10.8'
 | 
			
		||||
 | 
			
		||||
    // libs as submodules
 | 
			
		||||
    compile project(':extern:openpgp-api-lib:openpgp-api')
 | 
			
		||||
    compile project(':extern:openkeychain-api-lib:openkeychain-intents')
 | 
			
		||||
    compile project(':extern:spongycastle:core')
 | 
			
		||||
    compile project(':extern:spongycastle:pg')
 | 
			
		||||
    compile project(':extern:spongycastle:pkix')
 | 
			
		||||
    compile project(':extern:spongycastle:prov')
 | 
			
		||||
    compile project(':extern:minidns')
 | 
			
		||||
    compile project(':extern:KeybaseLib:Lib')
 | 
			
		||||
    compile project(':extern:safeslinger-exchange')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Output of ./gradlew -q calculateChecksums
 | 
			
		||||
// Comment out the libs referenced as git submodules!
 | 
			
		||||
dependencyVerification {
 | 
			
		||||
    verify = [
 | 
			
		||||
            'com.android.support:support-v4:1e2e4d35ac7fd30db5ce3bc177b92e4d5af86acef2ef93e9221599d733346f56',
 | 
			
		||||
            'com.android.support:appcompat-v7:9a2355537c2f01cf0b95523605c18606b8d824017e6e94a05c77b0cfc8f21c96',
 | 
			
		||||
            'com.android.support:recyclerview-v7:522d323079a29bcd76173bd9bc7535223b4af3e5eefef9d9287df1f9e54d0c10',
 | 
			
		||||
            'com.android.support:cardview-v7:8dc99af71fec000baa4470c3907755264f15f816920861bc015b2babdbb49807',
 | 
			
		||||
            'com.eftimoff:android-patternview:cec80e7265b8d8278b3c55b5fcdf551e4600ac2c8bf60d8dd76adca538af0b1e',
 | 
			
		||||
            'com.journeyapps:zxing-android-embedded:702a4f58154dbd9baa80f66b6a15410f7a4d403f3e73b66537a8bfb156b4b718',
 | 
			
		||||
            'com.journeyapps:zxing-android-integration:562737821b6d34c899b6fd2234ce0a8a31e02ff1fd7c59f6211961ce9767c7c8',
 | 
			
		||||
            'com.google.zxing:core:7fe5a8ff437635a540e56317649937b768b454795ce999ed5f244f83373dee7b',
 | 
			
		||||
            'com.jpardogo.materialtabstrip:library:c6ef812fba4f74be7dc4a905faa4c2908cba261a94c13d4f96d5e67e4aad4aaa',
 | 
			
		||||
            'com.getbase:floatingactionbutton:052aa2a94e49e5dccc97cb99f2add87e8698b84859f0e3ac181100c0bc7640ca',
 | 
			
		||||
            'org.commonjava.googlecode.markdown4j:markdown4j:e952e825d29e1317d96f79f346bfb6786c7c5eef50bd26e54a80823704b62e13',
 | 
			
		||||
            'com.splitwise:tokenautocomplete:20bee71cc59b3828eb000b684d46ddf738efd56b8fee453a509cd16fda42c8cb',
 | 
			
		||||
            'se.emilsjolander:stickylistheaders:8c05981ec5725be33f7cee5e68c13f3db49cd5c75f1aaeb04024920b1ef96ad4',
 | 
			
		||||
            'org.sufficientlysecure:html-textview:ca24b1522be88378634093815ce9ff1b4920c72e7513a045a7846e14069ef988',
 | 
			
		||||
            'com.mikepenz.materialdrawer:library:970317ed1a3cb96317f7b8d62ff592b3103eb46dfd68d9b244e7143623dc6d7a',
 | 
			
		||||
            'com.mikepenz.iconics:library:4698a36ee4c2af765d0a85779c61474d755b90d66a59020105b6760a8a909e9e',
 | 
			
		||||
            'com.mikepenz.iconics:octicons-typeface:67ed7d456a9ce5f5307b85f955797bfb3dd674e2f6defb31c6b8bbe2ede290be',
 | 
			
		||||
            'com.mikepenz.iconics:meteocons-typeface:39a8a9e70cd8287cdb119af57a672a41dd09240dba6697f5a0dbda1ccc33298b',
 | 
			
		||||
            'com.mikepenz.iconics:community-material-typeface:f1c5afee5f0f10d66beb3ed0df977246a02a9c46de4e05d7c0264bcde53b6b7f',
 | 
			
		||||
            'com.nispok:snackbar:80bebc8e5d8b3d728cd5f2336e2d0c1cc2a6b7dc4b55d36acd6b75a78265590a',
 | 
			
		||||
//            'OpenKeychain.extern:openpgp-api-lib:f05a9215cdad3a6597e4c5ece6fcec92b178d218195a3e88d2c0937c48dd9580',
 | 
			
		||||
//            'OpenKeychain.extern:openkeychain-api-lib:50f6ebb5452d3fdc7be137ccf857a0ff44d55539fcb7b91baef495766ed7f429',
 | 
			
		||||
//            'com.madgag.spongycastle:core:df8fcc028a95ac5ffab3b78c9163f5cfa672e41cd50128ca55d458b6cfbacf4b',
 | 
			
		||||
//            'com.madgag.spongycastle:pg:160b345b10a2c92dc731453eec87037377f66a8e14a0648d404d7b193c4e380d',
 | 
			
		||||
//            'com.madgag.spongycastle:pkix:0b4f3301ea12dd9f25d71770e6ea9f75e0611bf53062543e47be5bc15340a7e4',
 | 
			
		||||
//            'com.madgag.spongycastle:prov:7325942e0b39f5fb35d6380818eed4b826e7dfc7570ad35b696d778049d8c36a',
 | 
			
		||||
//            'OpenKeychain.extern:minidns:77b1786d29469e3b21f9404827cab811edc857cd68bc732cd57f11307c332eae',
 | 
			
		||||
//            'OpenKeychain.extern.KeybaseLib:Lib:c91cda4a75692d8664644cd17d8ac962ce5bc0e266ea26673a639805f1eccbdf',
 | 
			
		||||
//            'OpenKeychain.extern:safeslinger-exchange:d222721bb35408daaab9f46449364b2657112705ee571d7532f81cbeb9c4a73f',
 | 
			
		||||
//            'OpenKeychain.extern.snackbar:lib:52357426e5275412e2063bdf6f0e6b957a3ea74da45e0aef35d22d9afc542e23',
 | 
			
		||||
            'com.android.support:support-annotations:7bc07519aa613b186001160403bcfd68260fa82c61cc7e83adeedc9b862b94ae',
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion rootProject.ext.compileSdkVersion
 | 
			
		||||
    buildToolsVersion rootProject.ext.buildToolsVersion
 | 
			
		||||
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        minSdkVersion 15
 | 
			
		||||
        targetSdkVersion 22
 | 
			
		||||
        versionCode 32300
 | 
			
		||||
        versionName "3.2.3"
 | 
			
		||||
        applicationId "org.sufficientlysecure.keychain"
 | 
			
		||||
        // the androidjunitrunner is broken regarding coverage, see here:
 | 
			
		||||
        // https://code.google.com/p/android/issues/detail?id=170607
 | 
			
		||||
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 | 
			
		||||
        // this workaround runner fixes the coverage problem, BUT doesn't work
 | 
			
		||||
        // with android studio single test execution. use it to generate coverage
 | 
			
		||||
        // data, but keep the other one otherwis
 | 
			
		||||
        // testInstrumentationRunner "org.sufficientlysecure.keychain.JacocoWorkaroundJUnitRunner"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        sourceCompatibility JavaVersion.VERSION_1_7
 | 
			
		||||
        targetCompatibility JavaVersion.VERSION_1_7
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled true
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
            
 | 
			
		||||
            // Reference them in the java files with e.g. BuildConfig.ACCOUNT_TYPE.
 | 
			
		||||
            buildConfigField "String", "ACCOUNT_TYPE", "\"org.sufficientlysecure.keychain.account\""
 | 
			
		||||
 | 
			
		||||
            // Reference them in .xml files.
 | 
			
		||||
            resValue "string", "account_type", "org.sufficientlysecure.keychain.account"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        debug {
 | 
			
		||||
            applicationIdSuffix ".debug"
 | 
			
		||||
            
 | 
			
		||||
            // Reference them in the java files with e.g. BuildConfig.ACCOUNT_TYPE.
 | 
			
		||||
            buildConfigField "String", "ACCOUNT_TYPE", "\"org.sufficientlysecure.keychain.debug.account\""
 | 
			
		||||
 | 
			
		||||
            // Reference them in .xml files.
 | 
			
		||||
            resValue "string", "account_type", "org.sufficientlysecure.keychain.debug.account"
 | 
			
		||||
            
 | 
			
		||||
            // Enable code coverage (Jacoco)
 | 
			
		||||
            testCoverageEnabled true
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * To sign release build, create file gradle.properties in ~/.gradle/ with this content:
 | 
			
		||||
     *
 | 
			
		||||
     * signingStoreLocation=/home/key.store
 | 
			
		||||
     * signingStorePassword=xxx
 | 
			
		||||
     * signingKeyAlias=alias
 | 
			
		||||
     * signingKeyPassword=xxx
 | 
			
		||||
     */
 | 
			
		||||
    if (project.hasProperty('signingStoreLocation') &&
 | 
			
		||||
            project.hasProperty('signingStorePassword') &&
 | 
			
		||||
            project.hasProperty('signingKeyAlias') &&
 | 
			
		||||
            project.hasProperty('signingKeyPassword')) {
 | 
			
		||||
        println "Found sign properties in gradle.properties! Signing build…"
 | 
			
		||||
 | 
			
		||||
        signingConfigs {
 | 
			
		||||
            release {
 | 
			
		||||
                storeFile file(signingStoreLocation)
 | 
			
		||||
                storePassword signingStorePassword
 | 
			
		||||
                keyAlias signingKeyAlias
 | 
			
		||||
                keyPassword signingKeyPassword
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        buildTypes.release.signingConfig = signingConfigs.release
 | 
			
		||||
    } else {
 | 
			
		||||
        buildTypes.release.signingConfig = null
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // NOTE: Lint is disabled because it slows down builds,
 | 
			
		||||
    // to enable it comment out the code at the bottom of this build.gradle
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        // Do not abort build if lint finds errors
 | 
			
		||||
        abortOnError false
 | 
			
		||||
 | 
			
		||||
        checkAllWarnings true
 | 
			
		||||
        htmlReport true
 | 
			
		||||
        htmlOutput file('lint-report.html')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Disable preDexing, causes com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) on some systems
 | 
			
		||||
    dexOptions {
 | 
			
		||||
        preDexLibraries = false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    packagingOptions {
 | 
			
		||||
        exclude 'LICENSE.txt'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// apply plugin: 'spoon'
 | 
			
		||||
 | 
			
		||||
task jacocoTestReport(type:JacocoReport) {
 | 
			
		||||
    group = "Reporting"
 | 
			
		||||
    description = "Generate Jacoco coverage reports"
 | 
			
		||||
 | 
			
		||||
    classDirectories = fileTree(
 | 
			
		||||
            dir: "${buildDir}/intermediates/classes/debug",
 | 
			
		||||
            excludes: ['**/R.class',
 | 
			
		||||
                       '**/R$*.class',
 | 
			
		||||
                       '**/*$ViewInjector*.*',
 | 
			
		||||
                       '**/BuildConfig.*',
 | 
			
		||||
                       '**/Manifest*.*']
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    sourceDirectories = files("${buildDir.parent}/src/main/java")
 | 
			
		||||
    additionalSourceDirs = files([
 | 
			
		||||
            "${buildDir}/generated/source/buildConfig/debug",
 | 
			
		||||
            "${buildDir}/generated/source/r/debug"
 | 
			
		||||
    ])
 | 
			
		||||
    executionData = files([
 | 
			
		||||
        "${buildDir}/jacoco/testDebug.exec",
 | 
			
		||||
        "${buildDir}/outputs/code-coverage/connected/coverage.ec"
 | 
			
		||||
    ])
 | 
			
		||||
 | 
			
		||||
    reports {
 | 
			
		||||
        xml.enabled = true
 | 
			
		||||
        html.enabled = true
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Fix for: No report file available: [/home/travis/build/open-keychain/open-keychain/OpenKeychain/build/reports/cobertura/coverage.xml, /home/travis/build/open-keychain/open-keychain/OpenKeychain/build/reports/jacoco/test/jacocoTestReport.xml]
 | 
			
		||||
coveralls {
 | 
			
		||||
    jacocoReportPath 'build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NOTE: This disables Lint!
 | 
			
		||||
tasks.whenTaskAdded { task ->
 | 
			
		||||
    if (task.name.contains('lint')) {
 | 
			
		||||
        task.enabled = false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										48
									
								
								tests/source-files/open-keychain/open-keychain/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								tests/source-files/open-keychain/open-keychain/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dependencies {
 | 
			
		||||
        // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:1.2.3'
 | 
			
		||||
        classpath files('gradle-witness.jar')
 | 
			
		||||
        // bintray dependency to satisfy dependency of openpgp-api lib
 | 
			
		||||
        classpath 'com.novoda:bintray-release:0.2.7'
 | 
			
		||||
        
 | 
			
		||||
        classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1'
 | 
			
		||||
        // classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.0.2'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
allprojects {
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task wrapper(type: Wrapper) {
 | 
			
		||||
    gradleVersion = '2.4'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subprojects {
 | 
			
		||||
    tasks.withType(Test) {
 | 
			
		||||
        maxParallelForks = 1
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Ignore tests for external spongycastle
 | 
			
		||||
project(':extern:spongycastle') {
 | 
			
		||||
    subprojects {
 | 
			
		||||
        // Need to re-apply the plugin here otherwise the test property below can't be set.
 | 
			
		||||
        apply plugin: 'java'
 | 
			
		||||
        test.enabled = false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SDK Version and Build Tools used by all subprojects
 | 
			
		||||
// See http://tools.android.com/tech-docs/new-build-system/tips#TOC-Controlling-Android-properties-of-all-your-modules-from-the-main-project.
 | 
			
		||||
ext {
 | 
			
		||||
    compileSdkVersion = 22
 | 
			
		||||
    buildToolsVersion = '22.0.1'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										321
									
								
								tests/source-files/osmandapp/osmand/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										321
									
								
								tests/source-files/osmandapp/osmand/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,321 @@
 | 
			
		|||
apply plugin: 'com.android.application'
 | 
			
		||||
 | 
			
		||||
// Global Parameters accepted
 | 
			
		||||
// APK_NUMBER_VERSION - version number of apk
 | 
			
		||||
// APK_VERSION - build number like #9999Z, for dev builds appended to app_version like 2.0.0 in no_translate.xml)
 | 
			
		||||
//               flavor                 Z : M=-master, D=-design, B=-Blackberry, MD=-main-default, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy
 | 
			
		||||
// TARGET_APP_NAME - app name
 | 
			
		||||
// APP_EDITION - date stamp of builds
 | 
			
		||||
// APP_FEATURES - features +play_market +gps_status -parking_plugin -blackberry -free_version -amazon
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// 1. To be done Filter fonts
 | 
			
		||||
// <unzip src="OsmAndCore_android.aar" dest=".">
 | 
			
		||||
//            <patternset>
 | 
			
		||||
//                <include name="assets/**/map/fonts/OpenSans/*"/>
 | 
			
		||||
//                <include name="assets/**/map/fonts/NotoSans/*"/>
 | 
			
		||||
//            </patternset>
 | 
			
		||||
//        </unzip>
 | 
			
		||||
// Less important
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
	compileSdkVersion 21
 | 
			
		||||
	buildToolsVersion "21.1.2"
 | 
			
		||||
 | 
			
		||||
	signingConfigs {
 | 
			
		||||
		development {
 | 
			
		||||
			storeFile file("../keystores/debug.keystore")
 | 
			
		||||
			storePassword "android"
 | 
			
		||||
			keyAlias "androiddebugkey"
 | 
			
		||||
			keyPassword "android"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		publishing {
 | 
			
		||||
			storeFile file("/var/lib/jenkins/osmand_key")
 | 
			
		||||
			storePassword System.getenv("OSMAND_APK_PASSWORD")
 | 
			
		||||
			keyAlias "osmand"
 | 
			
		||||
			keyPassword System.getenv("OSMAND_APK_PASSWORD")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	defaultConfig {
 | 
			
		||||
		minSdkVersion 9
 | 
			
		||||
		targetSdkVersion 21
 | 
			
		||||
 | 
			
		||||
		versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode
 | 
			
		||||
		//versionName already assigned in code
 | 
			
		||||
		//versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	lintOptions {
 | 
			
		||||
		lintConfig file("lint.xml")
 | 
			
		||||
		abortOnError false
 | 
			
		||||
		warningsAsErrors false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// This is from OsmAndCore_android.aar - for some reason it's not inherited
 | 
			
		||||
	aaptOptions {
 | 
			
		||||
		// Don't compress any embedded resources
 | 
			
		||||
		noCompress "qz"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dexOptions {
 | 
			
		||||
		jumboMode = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sourceSets {
 | 
			
		||||
		main {
 | 
			
		||||
			manifest.srcFile "AndroidManifest.xml"
 | 
			
		||||
			jni.srcDirs = []
 | 
			
		||||
			jniLibs.srcDirs = ["libs"]
 | 
			
		||||
			aidl.srcDirs = ["src"]
 | 
			
		||||
			java.srcDirs = ["src"]
 | 
			
		||||
			resources.srcDirs = ["src"]
 | 
			
		||||
			renderscript.srcDirs = ["src"]
 | 
			
		||||
			res.srcDirs = ["res"]
 | 
			
		||||
			assets.srcDirs = ["assets"]
 | 
			
		||||
		}
 | 
			
		||||
		free {
 | 
			
		||||
			manifest.srcFile "AndroidManifest-free.xml"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		legacy {
 | 
			
		||||
			jniLibs.srcDirs = ["libgnustl"]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	flavorDimensions "version", "coreversion", "abi"
 | 
			
		||||
	productFlavors {
 | 
			
		||||
		// ABI
 | 
			
		||||
		armv7 {
 | 
			
		||||
			flavorDimension "abi"
 | 
			
		||||
			ndk {
 | 
			
		||||
				abiFilter "armeabi-v7a"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		armv5 {
 | 
			
		||||
			flavorDimension "abi"
 | 
			
		||||
			ndk {
 | 
			
		||||
				abiFilter "armeabi"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		x86 {
 | 
			
		||||
			flavorDimension "abi"
 | 
			
		||||
			ndk {
 | 
			
		||||
				abiFilter "x86"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		mips {
 | 
			
		||||
			flavorDimension "abi"
 | 
			
		||||
			ndk {
 | 
			
		||||
				abiFilter "mips"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		fat {
 | 
			
		||||
			flavorDimension "abi"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Version
 | 
			
		||||
		free {
 | 
			
		||||
			flavorDimension "version"
 | 
			
		||||
			applicationId "net.osmand"
 | 
			
		||||
		}
 | 
			
		||||
		full {
 | 
			
		||||
			flavorDimension "version"
 | 
			
		||||
			applicationId "net.osmand.plus"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// CoreVersion
 | 
			
		||||
		legacy {
 | 
			
		||||
			flavorDimension "coreversion"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		qtcore {
 | 
			
		||||
			flavorDimension "coreversion"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		qtcoredebug {
 | 
			
		||||
			flavorDimension "coreversion"
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buildTypes {
 | 
			
		||||
		debug {
 | 
			
		||||
		    // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
 | 
			
		||||
		    // minifyEnabled true
 | 
			
		||||
		    // proguardFiles 'proguard-project.txt'
 | 
			
		||||
			signingConfig signingConfigs.development
 | 
			
		||||
		}
 | 
			
		||||
		release {
 | 
			
		||||
		    // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
 | 
			
		||||
		    // minifyEnabled true
 | 
			
		||||
		    //proguardFiles 'proguard-project.txt'
 | 
			
		||||
			signingConfig signingConfigs.publishing
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
def replaceNoTranslate(line) {
 | 
			
		||||
	if (line.contains("\"app_name\"") && System.getenv("TARGET_APP_NAME")) {
 | 
			
		||||
		return line.replaceAll(">[^<]*<", ">" + System.getenv("TARGET_APP_NAME") + "<")
 | 
			
		||||
	}
 | 
			
		||||
	if (line.contains("\"app_edition\"") && System.getenv("APP_EDITION")) {
 | 
			
		||||
		return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_EDITION") + "<")
 | 
			
		||||
	}
 | 
			
		||||
	if (line.contains("\"app_version\"") && System.getenv("APK_VERSION")) {
 | 
			
		||||
		return line.replaceAll(">[^<]*<", ">" + System.getenv("APK_VERSION") + "<")
 | 
			
		||||
	}
 | 
			
		||||
	if (line.contains("\"app_version\"") && System.getenv("APK_VERSION_SUFFIX")) {
 | 
			
		||||
		// appends build number to version number for dev builds
 | 
			
		||||
		return line.replaceAll("</", System.getenv("APK_VERSION_SUFFIX") + "</")
 | 
			
		||||
	}
 | 
			
		||||
	if (line.contains("\"versionFeatures\"") && System.getenv("APP_FEATURES")) {
 | 
			
		||||
		return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_FEATURES") + "<")
 | 
			
		||||
	}
 | 
			
		||||
	return line;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task updateNoTranslate(type: Copy) {
 | 
			
		||||
	from('.') {
 | 
			
		||||
		include 'no_translate.xml'
 | 
			
		||||
		filter {
 | 
			
		||||
			line -> replaceNoTranslate(line);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	into 'res/values/'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectVoiceAssets(type: Sync) {
 | 
			
		||||
	from "../../resources/voice"
 | 
			
		||||
	into "assets/voice"
 | 
			
		||||
	include "**/*.p"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectHelpContentsAssets(type: Sync) {
 | 
			
		||||
	from "../../help/help"
 | 
			
		||||
	into "assets/help"
 | 
			
		||||
	include "*.html"
 | 
			
		||||
	include "images/**/*.png"
 | 
			
		||||
 | 
			
		||||
	from "assets/"
 | 
			
		||||
	into "assets/help"
 | 
			
		||||
	include "style.css"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectRoutingResources(type: Sync) {
 | 
			
		||||
	from "../../resources/routing"
 | 
			
		||||
	into "src/net/osmand/router"
 | 
			
		||||
	include "*.xml"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectMiscResources(type: Copy) {
 | 
			
		||||
	into "src/net/osmand/osm"
 | 
			
		||||
	from("../../resources/obf_creation") {
 | 
			
		||||
		include "rendering_types.xml"
 | 
			
		||||
	}
 | 
			
		||||
	from("../../resources/poi") {
 | 
			
		||||
		include "poi_types.xml"
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectRenderingStylesResources(type: Sync) {
 | 
			
		||||
	from "../../resources/rendering_styles"
 | 
			
		||||
	into "src/net/osmand/render"
 | 
			
		||||
	include "*.xml"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectRegionsInfoResources(type: Copy) {
 | 
			
		||||
	from "../../resources/countries-info"
 | 
			
		||||
	into "src/net/osmand/map"
 | 
			
		||||
	include "regions.ocbf"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task copyStyleIcons(type: Copy) {
 | 
			
		||||
	from "../../resources/rendering_styles/style-icons/"
 | 
			
		||||
	into "res/"
 | 
			
		||||
	include "**/*.png"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task collectExternalResources << {}
 | 
			
		||||
collectExternalResources.dependsOn collectVoiceAssets,
 | 
			
		||||
		collectHelpContentsAssets,
 | 
			
		||||
		collectRoutingResources,
 | 
			
		||||
		collectRenderingStylesResources,
 | 
			
		||||
		collectRegionsInfoResources,
 | 
			
		||||
		collectMiscResources,
 | 
			
		||||
		copyStyleIcons,
 | 
			
		||||
		updateNoTranslate
 | 
			
		||||
// tasks.whenTaskAdded { task ->
 | 
			
		||||
//	if (task.name.startsWith("generate") && task.name.endsWith("Resources")) {
 | 
			
		||||
//		task.dependsOn collectExternalResources
 | 
			
		||||
//	}
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
// Legacy core build
 | 
			
		||||
import org.apache.tools.ant.taskdefs.condition.Os
 | 
			
		||||
 | 
			
		||||
task buildOsmAndCore(type: Exec) {
 | 
			
		||||
	description "Build Legacy OsmAndCore"
 | 
			
		||||
 | 
			
		||||
	if (!Os.isFamily(Os.FAMILY_WINDOWS)) {
 | 
			
		||||
		commandLine "bash", file("./old-ndk-build.sh").getAbsolutePath()
 | 
			
		||||
	} else {
 | 
			
		||||
		commandLine "cmd", "/c", "echo", "Not supported"
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task cleanupDuplicatesInCore() {
 | 
			
		||||
	dependsOn buildOsmAndCore
 | 
			
		||||
	// doesn't work for legacy debug builds
 | 
			
		||||
	doLast {
 | 
			
		||||
		file("libgnustl/armeabi").mkdirs()
 | 
			
		||||
		file("libs/armeabi/libgnustl_shared.so").renameTo(file("libgnustl/armeabi/libgnustl_shared.so"))
 | 
			
		||||
		file("libgnustl/armeabi-v7a").mkdirs()
 | 
			
		||||
		file("libs/armeabi-v7a/libgnustl_shared.so").renameTo(file("libgnustl/armeabi-v7a/libgnustl_shared.so"))
 | 
			
		||||
		file("libgnustl/mips").mkdirs()
 | 
			
		||||
		file("libs/mips/libgnustl_shared.so").renameTo(file("libgnustl/mips/libgnustl_shared.so"))
 | 
			
		||||
		file("libgnustl/x86").mkdirs()
 | 
			
		||||
		file("libs/x86/libgnustl_shared.so").renameTo(file("libgnustl/x86/libgnustl_shared.so"))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
tasks.withType(JavaCompile) {
 | 
			
		||||
	compileTask -> compileTask.dependsOn << [collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
clean.dependsOn 'cleanNoTranslate'
 | 
			
		||||
 | 
			
		||||
task cleanNoTranslate() {
 | 
			
		||||
    delete ('res/values/no_translate.xml')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repositories {
 | 
			
		||||
	ivy {
 | 
			
		||||
		name = "OsmAndBinariesIvy"
 | 
			
		||||
		url = "http://builder.osmand.net"
 | 
			
		||||
		layout "pattern", {
 | 
			
		||||
			artifact "ivy/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// mavenCentral()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
	compile project(path: ":OsmAnd-java", configuration: "android")
 | 
			
		||||
    compile project(":eclipse-compile:appcompat")
 | 
			
		||||
	compile fileTree(
 | 
			
		||||
			dir: "libs",
 | 
			
		||||
			include: ["*.jar"],
 | 
			
		||||
			exclude: [
 | 
			
		||||
					"QtAndroid-bundled.jar",
 | 
			
		||||
					"QtAndroidAccessibility-bundled.jar",
 | 
			
		||||
					"OsmAndCore_android.jar",
 | 
			
		||||
					"OsmAndCore_wrapper.jar"])
 | 
			
		||||
	// compile "com.github.ksoichiro:android-observablescrollview:1.5.0"
 | 
			
		||||
	// compile "com.android.support:appcompat-v7:21.0.3"
 | 
			
		||||
	// compile "com.github.shell-software:fab:1.0.5"
 | 
			
		||||
	legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
 | 
			
		||||
	qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
 | 
			
		||||
	qtcoredebugCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
 | 
			
		||||
	qtcoreCompile "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
 | 
			
		||||
	qtcoreCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue