mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 06:30:27 +03:00 
			
		
		
		
	import: make it work most of the time with git repos
This includes real tests too.
This commit is contained in:
		
							parent
							
								
									e049a120f8
								
							
						
					
					
						commit
						bfe587979d
					
				
					 28 changed files with 1184 additions and 42 deletions
				
			
		| 
						 | 
				
			
			@ -18,12 +18,12 @@
 | 
			
		|||
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import binascii
 | 
			
		||||
import glob
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import shutil
 | 
			
		||||
import urllib.request
 | 
			
		||||
from argparse import ArgumentParser
 | 
			
		||||
from configparser import ConfigParser
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
from . import _
 | 
			
		||||
| 
						 | 
				
			
			@ -31,8 +31,9 @@ from . import common
 | 
			
		|||
from . import metadata
 | 
			
		||||
from .exception import FDroidException
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SETTINGS_GRADLE = re.compile(r'''include\s+['"]:([^'"]*)['"]''')
 | 
			
		||||
SETTINGS_GRADLE = re.compile(r'settings\.gradle(?:\.kts)?')
 | 
			
		||||
GRADLE_SUBPROJECT = re.compile(r'''['"]:([^'"]+)['"]''')
 | 
			
		||||
ANDROID_PLUGIN = re.compile(r'''\s*(:?apply plugin:|id)\(?\s*['"](android|com\.android\.application)['"]\s*\)?''')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Get the repo type and address from the given web page. The page is scanned
 | 
			
		||||
| 
						 | 
				
			
			@ -168,32 +169,47 @@ def get_metadata_from_url(app, url):
 | 
			
		|||
        shutil.rmtree(build_dir)
 | 
			
		||||
    vcs = common.getvcs(repotype, repo, build_dir)
 | 
			
		||||
    vcs.gotorevision(options.rev)
 | 
			
		||||
    root_dir = get_subdir(build_dir)
 | 
			
		||||
 | 
			
		||||
    app.RepoType = repotype
 | 
			
		||||
    app.Repo = repo
 | 
			
		||||
 | 
			
		||||
    return root_dir, build_dir
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
config = None
 | 
			
		||||
options = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_subdir(build_dir):
 | 
			
		||||
    if options.subdir:
 | 
			
		||||
        return os.path.join(build_dir, options.subdir)
 | 
			
		||||
 | 
			
		||||
    settings_gradle = os.path.join(build_dir, 'settings.gradle')
 | 
			
		||||
    if os.path.exists(settings_gradle):
 | 
			
		||||
        with open(settings_gradle) as fp:
 | 
			
		||||
            m = SETTINGS_GRADLE.search(fp.read())
 | 
			
		||||
            if m:
 | 
			
		||||
                return os.path.join(build_dir, m.group(1))
 | 
			
		||||
 | 
			
		||||
    return build_dir
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_all_gradle_and_manifests(build_dir):
 | 
			
		||||
    paths = []
 | 
			
		||||
    for root, dirs, files in os.walk(build_dir):
 | 
			
		||||
        for f in sorted(files):
 | 
			
		||||
            if f == 'AndroidManifest.xml' \
 | 
			
		||||
               or f.endswith('.gradle') or f.endswith('.gradle.kts'):
 | 
			
		||||
                full = os.path.join(root, f)
 | 
			
		||||
                paths.append(full)
 | 
			
		||||
    return paths
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_gradle_subdir(build_dir, paths):
 | 
			
		||||
    """get the subdir where the gradle build is based"""
 | 
			
		||||
    first_gradle_dir = None
 | 
			
		||||
    for path in paths:
 | 
			
		||||
        if not first_gradle_dir:
 | 
			
		||||
            first_gradle_dir = os.path.relpath(os.path.dirname(path), build_dir)
 | 
			
		||||
        if os.path.exists(path) and SETTINGS_GRADLE.match(os.path.basename(path)):
 | 
			
		||||
            with open(path) as fp:
 | 
			
		||||
                for m in GRADLE_SUBPROJECT.finditer(fp.read()):
 | 
			
		||||
                    for f in glob.glob(os.path.join(os.path.dirname(path), m.group(1), 'build.gradle*')):
 | 
			
		||||
                        with open(f) as fp:
 | 
			
		||||
                            while True:
 | 
			
		||||
                                line = fp.readline()
 | 
			
		||||
                                if not line:
 | 
			
		||||
                                    break
 | 
			
		||||
                                if ANDROID_PLUGIN.match(line):
 | 
			
		||||
                                    return os.path.relpath(os.path.dirname(f), build_dir)
 | 
			
		||||
    if first_gradle_dir and first_gradle_dir != '.':
 | 
			
		||||
        return first_gradle_dir
 | 
			
		||||
 | 
			
		||||
    return ''
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
 | 
			
		||||
    global config, options
 | 
			
		||||
| 
						 | 
				
			
			@ -221,7 +237,6 @@ def main():
 | 
			
		|||
    app = metadata.App()
 | 
			
		||||
    app.UpdateCheckMode = "Tags"
 | 
			
		||||
 | 
			
		||||
    root_dir = None
 | 
			
		||||
    build_dir = None
 | 
			
		||||
 | 
			
		||||
    local_metadata_files = common.get_local_metadata_files()
 | 
			
		||||
| 
						 | 
				
			
			@ -233,12 +248,11 @@ def main():
 | 
			
		|||
        app.AutoName = os.path.basename(os.getcwd())
 | 
			
		||||
        app.RepoType = 'git'
 | 
			
		||||
 | 
			
		||||
        root_dir = get_subdir(os.getcwd())
 | 
			
		||||
        if os.path.exists('build.gradle'):
 | 
			
		||||
            build.gradle = ['yes']
 | 
			
		||||
 | 
			
		||||
        import git
 | 
			
		||||
        repo = git.repo.Repo(root_dir)  # git repo
 | 
			
		||||
        repo = git.repo.Repo(os.getcwd())  # git repo
 | 
			
		||||
        for remote in git.Remote.iter_items(repo):
 | 
			
		||||
            if remote.name == 'origin':
 | 
			
		||||
                url = repo.remotes.origin.url
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +264,7 @@ def main():
 | 
			
		|||
        build.commit = binascii.hexlify(bytearray(repo.head.commit.binsha))
 | 
			
		||||
        write_local_file = True
 | 
			
		||||
    elif options.url:
 | 
			
		||||
        root_dir, build_dir = get_metadata_from_url(app, options.url)
 | 
			
		||||
        build_dir = get_metadata_from_url(app, options.url)
 | 
			
		||||
        build.commit = '?'
 | 
			
		||||
        build.disable = 'Generated by import.py - check/set version fields and commit id'
 | 
			
		||||
        write_local_file = False
 | 
			
		||||
| 
						 | 
				
			
			@ -258,9 +272,9 @@ def main():
 | 
			
		|||
        raise FDroidException("Specify project url.")
 | 
			
		||||
 | 
			
		||||
    # Extract some information...
 | 
			
		||||
    paths = common.manifest_paths(root_dir, [])
 | 
			
		||||
    paths = get_all_gradle_and_manifests(build_dir)
 | 
			
		||||
    subdir = get_gradle_subdir(build_dir, paths)
 | 
			
		||||
    if paths:
 | 
			
		||||
 | 
			
		||||
        versionName, versionCode, package = common.parse_androidmanifests(paths, app)
 | 
			
		||||
        if not package:
 | 
			
		||||
            raise FDroidException(_("Couldn't find package ID"))
 | 
			
		||||
| 
						 | 
				
			
			@ -269,17 +283,7 @@ def main():
 | 
			
		|||
        if not versionCode:
 | 
			
		||||
            logging.warn(_("Couldn't find latest version code"))
 | 
			
		||||
    else:
 | 
			
		||||
        spec = os.path.join(root_dir, 'buildozer.spec')
 | 
			
		||||
        if os.path.exists(spec):
 | 
			
		||||
            defaults = {'orientation': 'landscape', 'icon': '',
 | 
			
		||||
                        'permissions': '', 'android.api': "18"}
 | 
			
		||||
            bconfig = ConfigParser(defaults, allow_no_value=True)
 | 
			
		||||
            bconfig.read(spec)
 | 
			
		||||
            package = bconfig.get('app', 'package.domain') + '.' + bconfig.get('app', 'package.name')
 | 
			
		||||
            versionName = bconfig.get('app', 'version')
 | 
			
		||||
            versionCode = None
 | 
			
		||||
        else:
 | 
			
		||||
            raise FDroidException(_("No android or kivy project could be found. Specify --subdir?"))
 | 
			
		||||
        raise FDroidException(_("No gradle project could be found. Specify --subdir?"))
 | 
			
		||||
 | 
			
		||||
    # Make sure it's actually new...
 | 
			
		||||
    if package in apps:
 | 
			
		||||
| 
						 | 
				
			
			@ -290,13 +294,16 @@ def main():
 | 
			
		|||
    build.versionCode = versionCode or '0'  # TODO heinous but this is still a str
 | 
			
		||||
    if options.subdir:
 | 
			
		||||
        build.subdir = options.subdir
 | 
			
		||||
    elif subdir:
 | 
			
		||||
        build.subdir = subdir
 | 
			
		||||
 | 
			
		||||
    if options.license:
 | 
			
		||||
        app.License = options.license
 | 
			
		||||
    if options.categories:
 | 
			
		||||
        app.Categories = options.categories.split(',')
 | 
			
		||||
    if os.path.exists(os.path.join(root_dir, 'jni')):
 | 
			
		||||
    if os.path.exists(os.path.join(subdir, 'jni')):
 | 
			
		||||
        build.buildjni = ['yes']
 | 
			
		||||
    if os.path.exists(os.path.join(root_dir, 'build.gradle')):
 | 
			
		||||
    if os.path.exists(os.path.join(subdir, 'build.gradle')):
 | 
			
		||||
        build.gradle = ['yes']
 | 
			
		||||
 | 
			
		||||
    metadata.post_metadata_parse(app)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -816,6 +816,30 @@ class CommonTest(unittest.TestCase):
 | 
			
		|||
        self.assertEqual(('0.94-test', '940', 'org.fdroid.fdroid'),
 | 
			
		||||
                         fdroidserver.common.parse_androidmanifests(paths, app))
 | 
			
		||||
 | 
			
		||||
        app = fdroidserver.metadata.App()
 | 
			
		||||
        app.AutoName = 'android-chat'
 | 
			
		||||
        app.RepoType = 'git'
 | 
			
		||||
        url = 'https://github.com/wildfirechat/android-chat.git'
 | 
			
		||||
        app.SourceCode = url.rstrip('.git')
 | 
			
		||||
        app.Repo = url
 | 
			
		||||
        paths = [
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'avenginekit', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'client', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'client', 'src', 'main', 'AndroidManifest.xml'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'emojilibrary', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'gradle', 'build_libraries.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'imagepicker', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'mars-core-release', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'push', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'settings.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'chat', 'build.gradle'),
 | 
			
		||||
        ]
 | 
			
		||||
        for path in paths:
 | 
			
		||||
            self.assertTrue(os.path.isfile(path))
 | 
			
		||||
        self.assertEqual(('0.6.9', '23', 'cn.wildfirechat.chat'),
 | 
			
		||||
                         fdroidserver.common.parse_androidmanifests(paths, app))
 | 
			
		||||
 | 
			
		||||
    def test_parse_androidmanifests_ignore(self):
 | 
			
		||||
        app = fdroidserver.metadata.App()
 | 
			
		||||
        app.id = 'org.fdroid.fdroid'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,8 +7,11 @@ import logging
 | 
			
		|||
import optparse
 | 
			
		||||
import os
 | 
			
		||||
import requests
 | 
			
		||||
import shutil
 | 
			
		||||
import sys
 | 
			
		||||
import tempfile
 | 
			
		||||
import unittest
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
localmodule = os.path.realpath(
 | 
			
		||||
    os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..'))
 | 
			
		||||
| 
						 | 
				
			
			@ -48,11 +51,76 @@ class ImportTest(unittest.TestCase):
 | 
			
		|||
 | 
			
		||||
        app = fdroidserver.metadata.App()
 | 
			
		||||
        app.UpdateCheckMode = "Tags"
 | 
			
		||||
        root_dir, src_dir = import_proxy.get_metadata_from_url(app, url)
 | 
			
		||||
        build_dir = import_proxy.get_metadata_from_url(app, url)
 | 
			
		||||
        self.assertEqual(app.RepoType, 'git')
 | 
			
		||||
        self.assertEqual(app.WebSite, 'https://gitlab.com/fdroid/ci-test-app')
 | 
			
		||||
        self.assertEqual(app.Repo, 'https://gitlab.com/fdroid/ci-test-app.git')
 | 
			
		||||
 | 
			
		||||
    def test_get_all_gradle_and_manifests(self):
 | 
			
		||||
        a = import_proxy.get_all_gradle_and_manifests(os.path.join('source-files', 'cn.wildfirechat.chat'))
 | 
			
		||||
        paths = [
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'avenginekit', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'chat', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'client', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'client', 'src', 'main', 'AndroidManifest.xml'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'emojilibrary', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'gradle', 'build_libraries.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'imagepicker', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'mars-core-release', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'push', 'build.gradle'),
 | 
			
		||||
            os.path.join('source-files', 'cn.wildfirechat.chat', 'settings.gradle'),
 | 
			
		||||
        ]
 | 
			
		||||
        self.assertEqual(sorted(paths), sorted(a))
 | 
			
		||||
 | 
			
		||||
    def test_get_gradle_subdir(self):
 | 
			
		||||
        subdirs = {
 | 
			
		||||
            'cn.wildfirechat.chat': 'chat',
 | 
			
		||||
            'com.anpmech.launcher': 'app',
 | 
			
		||||
            'org.tasks': 'app',
 | 
			
		||||
            'ut.ewh.audiometrytest': 'app',
 | 
			
		||||
        }
 | 
			
		||||
        for f in ('cn.wildfirechat.chat', 'com.anpmech.launcher', 'org.tasks', 'ut.ewh.audiometrytest'):
 | 
			
		||||
            build_dir = os.path.join('source-files', f)
 | 
			
		||||
            paths = import_proxy.get_all_gradle_and_manifests(build_dir)
 | 
			
		||||
            logging.info(paths)
 | 
			
		||||
            subdir = import_proxy.get_gradle_subdir(build_dir, paths)
 | 
			
		||||
            self.assertEqual(subdirs[f], subdir)
 | 
			
		||||
 | 
			
		||||
    def test_get_metadata_from_url(self):
 | 
			
		||||
        testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir)
 | 
			
		||||
        os.chdir(testdir)
 | 
			
		||||
        os.mkdir(os.path.join(testdir, 'tmp'))
 | 
			
		||||
        tmp_importer = os.path.join(testdir, 'tmp', 'importer')
 | 
			
		||||
        data = (
 | 
			
		||||
            ('cn.wildfirechat.chat', 'https://github.com/wildfirechat/android-chat', '0.6.9', '23'),
 | 
			
		||||
            ('com.anpmech.launcher', 'https://github.com/KeikaiLauncher/KeikaiLauncher', 'Unknown', None),
 | 
			
		||||
            ('ut.ewh.audiometrytest', 'https://github.com/ReeceStevens/ut_ewh_audiometer_2014', '1.65', '14'),
 | 
			
		||||
        )
 | 
			
		||||
        for appid, url, vn, vc in data:
 | 
			
		||||
            shutil.rmtree(tmp_importer, ignore_errors=True)
 | 
			
		||||
            shutil.copytree(os.path.join(self.basedir, 'source-files', appid),
 | 
			
		||||
                            tmp_importer)
 | 
			
		||||
 | 
			
		||||
            app = fdroidserver.metadata.App()
 | 
			
		||||
            app.UpdateCheckMode = "Tags"
 | 
			
		||||
            with mock.patch('fdroidserver.common.getvcs',
 | 
			
		||||
                            lambda a, b, c: fdroidserver.common.vcs(url, testdir)):
 | 
			
		||||
                with mock.patch('fdroidserver.common.vcs.gotorevision',
 | 
			
		||||
                                lambda s, rev: None):
 | 
			
		||||
                    with mock.patch('shutil.rmtree', lambda a: None):
 | 
			
		||||
                        build_dir = import_proxy.get_metadata_from_url(app, url)
 | 
			
		||||
            self.assertEqual('git', app.RepoType)
 | 
			
		||||
            self.assertEqual(url, app.Repo)
 | 
			
		||||
            self.assertEqual(url, app.SourceCode)
 | 
			
		||||
            logging.info(build_dir)
 | 
			
		||||
            paths = import_proxy.get_all_gradle_and_manifests(build_dir)
 | 
			
		||||
            self.assertNotEqual(paths, [])
 | 
			
		||||
            versionName, versionCode, package = fdroidserver.common.parse_androidmanifests(paths, app)
 | 
			
		||||
            self.assertEqual(vn, versionName)
 | 
			
		||||
            self.assertEqual(vc, versionCode)
 | 
			
		||||
            self.assertEqual(appid, package)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    os.chdir(os.path.dirname(__file__))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,9 @@ class Options:
 | 
			
		|||
module = __import__('fdroidserver.import')
 | 
			
		||||
for name, obj in inspect.getmembers(module):
 | 
			
		||||
    if name == 'import':
 | 
			
		||||
        get_all_gradle_and_manifests = obj.get_all_gradle_and_manifests
 | 
			
		||||
        get_metadata_from_url = obj.get_metadata_from_url
 | 
			
		||||
        get_gradle_subdir = obj.get_gradle_subdir
 | 
			
		||||
        obj.options = Options()
 | 
			
		||||
        options = obj.options
 | 
			
		||||
        break
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@ class ScannerTest(unittest.TestCase):
 | 
			
		|||
    def test_scan_source_files(self):
 | 
			
		||||
        source_files = os.path.join(self.basedir, 'source-files')
 | 
			
		||||
        projects = {
 | 
			
		||||
            'cn.wildfirechat.chat': 4,
 | 
			
		||||
            'Zillode': 1,
 | 
			
		||||
            'firebase-suspect': 1,
 | 
			
		||||
            'org.mozilla.rocket': 3,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
configurations.maybeCreate("default")
 | 
			
		||||
artifacts.add("default", file('avenginekit.aar'))
 | 
			
		||||
							
								
								
									
										41
									
								
								tests/source-files/cn.wildfirechat.chat/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								tests/source-files/cn.wildfirechat.chat/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 | 
			
		||||
 | 
			
		||||
buildscript {
 | 
			
		||||
 | 
			
		||||
    repositories {
 | 
			
		||||
        google()
 | 
			
		||||
        jcenter()
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:3.4.2'
 | 
			
		||||
        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
 | 
			
		||||
 | 
			
		||||
        // NOTE: Do not place your application dependencies here; they belong
 | 
			
		||||
        // in the individual module build.gradle files
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
allprojects {
 | 
			
		||||
    repositories {
 | 
			
		||||
        google()
 | 
			
		||||
        jcenter()
 | 
			
		||||
        maven {
 | 
			
		||||
            url "http://developer.huawei.com/repo/"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        maven { url 'https://jitpack.io' }
 | 
			
		||||
        maven { url 'https://dl.bintray.com/jenly/maven' }
 | 
			
		||||
    }
 | 
			
		||||
    configurations {
 | 
			
		||||
        all {
 | 
			
		||||
            resolutionStrategy {
 | 
			
		||||
                //force "android.arch.lifecycle:runtime:1.1.1"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task clean(type: Delete) {
 | 
			
		||||
    delete rootProject.buildDir
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										115
									
								
								tests/source-files/cn.wildfirechat.chat/chat/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								tests/source-files/cn.wildfirechat.chat/chat/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,115 @@
 | 
			
		|||
apply plugin: 'com.android.application'
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    signingConfigs {
 | 
			
		||||
        wfc {
 | 
			
		||||
            keyAlias 'wfc'
 | 
			
		||||
            keyPassword 'wildfirechat'
 | 
			
		||||
            storeFile file('../wfc.keystore')
 | 
			
		||||
            storePassword 'wildfirechat'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    compileSdkVersion 28
 | 
			
		||||
    aaptOptions.cruncherEnabled = false
 | 
			
		||||
    aaptOptions.useNewCruncher = false
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        applicationId "cn.wildfirechat.chat"
 | 
			
		||||
        minSdkVersion 16
 | 
			
		||||
        targetSdkVersion 28 //当targetversion大于23时,需要使用fileprovider
 | 
			
		||||
        versionCode 23
 | 
			
		||||
        versionName "0.6.9"
 | 
			
		||||
        multiDexEnabled true
 | 
			
		||||
        javaCompileOptions {
 | 
			
		||||
            annotationProcessorOptions {
 | 
			
		||||
                includeCompileClasspath true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        signingConfig signingConfigs.wfc
 | 
			
		||||
 | 
			
		||||
//        buildConfigField("String", "BuglyId", '"34490ba79f"')
 | 
			
		||||
 | 
			
		||||
        ndk {
 | 
			
		||||
            abiFilters "armeabi-v7a", 'x86', 'x86_64' // ,'armeabi', 'arm64-v8a', 'x86', 'x86_64'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled true
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
            signingConfig signingConfigs.wfc
 | 
			
		||||
        }
 | 
			
		||||
        debug {
 | 
			
		||||
            minifyEnabled false
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
            signingConfig signingConfigs.wfc
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        sourceCompatibility JavaVersion.VERSION_1_8
 | 
			
		||||
        targetCompatibility JavaVersion.VERSION_1_8
 | 
			
		||||
    }
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        abortOnError false
 | 
			
		||||
    }
 | 
			
		||||
    sourceSets {
 | 
			
		||||
        main {
 | 
			
		||||
            // wfc kit start
 | 
			
		||||
            jniLibs.srcDirs += ['libs', 'kit/libs']
 | 
			
		||||
            res.srcDirs += ['kit/src/main/res', 'kit/src/main/res-av']
 | 
			
		||||
            assets.srcDirs += ['kit/src/main/assets']
 | 
			
		||||
            java.srcDirs += ['kit/src/main/java']
 | 
			
		||||
            // wfc kit end
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    productFlavors {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        sourceCompatibility 1.8
 | 
			
		||||
        targetCompatibility 1.8
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    implementation fileTree(include: ['*.jar'], dir: 'libs')
 | 
			
		||||
    implementation files('libs/TencentLocationSDK_v4.9.7.12_r247861_161205_1104.jar')
 | 
			
		||||
    implementation files('libs/TencentMapSDK_Raster_v_1.2.7_51ae0e7.jar')
 | 
			
		||||
    implementation files('libs/TencentSearch1.1.3.jar')
 | 
			
		||||
 | 
			
		||||
    implementation 'com.tencent.bugly:crashreport:2.8.6.0'
 | 
			
		||||
    implementation 'com.tencent.bugly:nativecrashreport:3.6.0.1'
 | 
			
		||||
    implementation 'com.lqr.adapter:library:1.0.2'
 | 
			
		||||
    implementation 'com.jaeger.statusbaruitl:library:1.3.5'
 | 
			
		||||
    implementation project(':push')
 | 
			
		||||
 | 
			
		||||
    // wfc kit start
 | 
			
		||||
    implementation fileTree(include: ['*.jar'], dir: 'kit/libs')
 | 
			
		||||
    implementation 'androidx.appcompat:appcompat:1.1.0-beta01'
 | 
			
		||||
    implementation 'com.google.android.material:material:1.1.0-alpha10'
 | 
			
		||||
    implementation 'cjt.library.wheel:camera:1.1.9'
 | 
			
		||||
    implementation 'com.kyleduo.switchbutton:library:1.4.4'
 | 
			
		||||
    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
 | 
			
		||||
    implementation 'com.squareup.okio:okio:1.14.0'
 | 
			
		||||
    implementation 'com.jakewharton:butterknife:10.2.0'
 | 
			
		||||
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
 | 
			
		||||
    implementation 'com.github.bumptech.glide:glide:4.8.0'
 | 
			
		||||
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
 | 
			
		||||
    implementation 'com.github.chrisbanes:PhotoView:2.3.0'
 | 
			
		||||
    implementation 'org.webrtc:google-webrtc:1.0.21929'
 | 
			
		||||
    implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
 | 
			
		||||
    implementation 'q.rorbin:badgeview:1.1.3'
 | 
			
		||||
    implementation 'com.google.code.gson:gson:2.8.5'
 | 
			
		||||
 | 
			
		||||
    // ViewModel and LiveData
 | 
			
		||||
    def lifecycle_version = '2.2.0-alpha05'
 | 
			
		||||
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
 | 
			
		||||
 | 
			
		||||
    implementation project(':client')
 | 
			
		||||
    implementation project(':avenginekit')
 | 
			
		||||
    implementation project(':emojilibrary')
 | 
			
		||||
    implementation project(':imagepicker')
 | 
			
		||||
 | 
			
		||||
    implementation 'com.king.zxing:zxing-lite:1.1.1'
 | 
			
		||||
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
 | 
			
		||||
    // kit wfc end
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								tests/source-files/cn.wildfirechat.chat/client/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								tests/source-files/cn.wildfirechat.chat/client/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
apply plugin: 'com.android.library'
 | 
			
		||||
apply plugin: 'com.github.dcendents.android-maven'
 | 
			
		||||
 | 
			
		||||
group = 'com.github.wildfirechat'
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion 28
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        minSdkVersion 16
 | 
			
		||||
        targetSdkVersion 28
 | 
			
		||||
        versionCode 1
 | 
			
		||||
        versionName "1.0"
 | 
			
		||||
 | 
			
		||||
        // testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 | 
			
		||||
        ndk {
 | 
			
		||||
            // TODO: changes this for your application if needed
 | 
			
		||||
            moduleName = "mmnet"
 | 
			
		||||
            //abiFilter "armeabi" //去掉armeabi架构,armeabi-v7a可以兼容armeabi架构。
 | 
			
		||||
            abiFilter "armeabi-v7a"
 | 
			
		||||
            abiFilter "arm64-v8a"
 | 
			
		||||
            abiFilter "x86"
 | 
			
		||||
            abiFilter "x86_64"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled false
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    sourceSets {
 | 
			
		||||
        main {
 | 
			
		||||
            jniLibs.srcDirs = ['libs']
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        abortOnError false
 | 
			
		||||
    }
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        targetCompatibility 1.8
 | 
			
		||||
        sourceCompatibility 1.8
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    api project(':mars-core-release')
 | 
			
		||||
    def lifecycle_version = '2.0.0-beta01'
 | 
			
		||||
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    package="cn.wildfirechat.client">
 | 
			
		||||
 | 
			
		||||
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.INTERNET" />
 | 
			
		||||
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.GET_TASKS" />
 | 
			
		||||
    <uses-permission android:name="android.permission.VIBRATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 | 
			
		||||
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
 | 
			
		||||
 | 
			
		||||
    <application>
 | 
			
		||||
        <service
 | 
			
		||||
            android:name="cn.wildfirechat.client.ClientService"
 | 
			
		||||
            android:process=":marsservice" />
 | 
			
		||||
        <receiver
 | 
			
		||||
            android:name="com.tencent.mars.BaseEvent$ConnectionReceiver"
 | 
			
		||||
            android:process=":marsservice" />
 | 
			
		||||
 | 
			
		||||
        <!--must run in th main process-->
 | 
			
		||||
        <receiver android:name="cn.wildfirechat.remote.RecoverReceiver" />
 | 
			
		||||
    </application>
 | 
			
		||||
</manifest>
 | 
			
		||||
							
								
								
									
										34
									
								
								tests/source-files/cn.wildfirechat.chat/emojilibrary/build.gradle
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								tests/source-files/cn.wildfirechat.chat/emojilibrary/build.gradle
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
apply plugin: 'com.android.library'
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion 28
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        minSdkVersion 16
 | 
			
		||||
        targetSdkVersion 28
 | 
			
		||||
        versionCode 1
 | 
			
		||||
        versionName "1.0"
 | 
			
		||||
 | 
			
		||||
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled false
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    android {
 | 
			
		||||
        lintOptions {
 | 
			
		||||
            abortOnError false
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    implementation fileTree(include: ['*.jar'], dir: 'libs')
 | 
			
		||||
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
def checkExecResult(execResult) {
 | 
			
		||||
    if (execResult) {
 | 
			
		||||
        if (execResult.getExitValue() != 0) {
 | 
			
		||||
            throw new GradleException('Non-zero exit value: ' + execResult.getExitValue())
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
        throw new GradleException('Returned a null execResult object')
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
task buildLibrariesForAndroid(type: Exec) {
 | 
			
		||||
    workingDir '../'
 | 
			
		||||
 | 
			
		||||
    def sdkDir = System.env.ANDROID_HOME
 | 
			
		||||
    def ndkDir = System.env.ANDROID_NDK_HOME
 | 
			
		||||
 | 
			
		||||
    if (rootProject.file("local.properties").exists()) {
 | 
			
		||||
        Properties properties = new Properties()
 | 
			
		||||
        properties.load(project.rootProject.file('local.properties').newDataInputStream())
 | 
			
		||||
        sdkDir = properties.getProperty('sdk.dir')
 | 
			
		||||
        ndkDir = properties.getProperty('ndk.dir')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    def path = System.env.PATH
 | 
			
		||||
 | 
			
		||||
    def envMap = [
 | 
			
		||||
            'ANDROID_HOME'    : sdkDir,
 | 
			
		||||
            'ANDROID_NDK_HOME': ndkDir,
 | 
			
		||||
            '_ARCH_'          : 'armeabi',
 | 
			
		||||
            'PATH'            : ndkDir,
 | 
			
		||||
    ]
 | 
			
		||||
    environment envMap
 | 
			
		||||
 | 
			
		||||
    print envMap
 | 
			
		||||
 | 
			
		||||
    commandLine 'python', 'build_android.py', '2', 'armeabi'
 | 
			
		||||
 | 
			
		||||
    doLast {
 | 
			
		||||
        checkExecResult(execResult)
 | 
			
		||||
    }
 | 
			
		||||
} 
 | 
			
		||||
							
								
								
									
										30
									
								
								tests/source-files/cn.wildfirechat.chat/imagepicker/build.gradle
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								tests/source-files/cn.wildfirechat.chat/imagepicker/build.gradle
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
apply plugin: 'com.android.library'
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion 28
 | 
			
		||||
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        minSdkVersion 16
 | 
			
		||||
        targetSdkVersion 28
 | 
			
		||||
        versionCode 1
 | 
			
		||||
        versionName "1.0"
 | 
			
		||||
 | 
			
		||||
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled false
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        abortOnError false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
 | 
			
		||||
    implementation 'com.github.chrisbanes.photoview:library:1.2.4'
 | 
			
		||||
    implementation 'com.github.bumptech.glide:glide:4.8.0'
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
configurations.maybeCreate("default")
 | 
			
		||||
artifacts.add("default", file('mars-core-release.aar'))
 | 
			
		||||
							
								
								
									
										55
									
								
								tests/source-files/cn.wildfirechat.chat/push/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								tests/source-files/cn.wildfirechat.chat/push/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
apply plugin: 'com.android.library'
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion 28
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        minSdkVersion 16
 | 
			
		||||
        targetSdkVersion 28
 | 
			
		||||
        versionCode 1
 | 
			
		||||
        versionName "1.0"
 | 
			
		||||
 | 
			
		||||
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | 
			
		||||
 | 
			
		||||
        manifestPlaceholders = [
 | 
			
		||||
 | 
			
		||||
                MI_APP_ID    : "2882303761517722456",
 | 
			
		||||
                MI_APP_KEY   : "5731772292456",
 | 
			
		||||
 | 
			
		||||
                HMS_APP_ID   : "100221325",
 | 
			
		||||
 | 
			
		||||
                MEIZU_APP_ID : "113616",
 | 
			
		||||
                MEIZU_APP_KEY: "fcd886f51c144b45b87a67a28e2934d1",
 | 
			
		||||
 | 
			
		||||
                VIVO_APP_ID  : "12918",
 | 
			
		||||
                VIVO_APP_KEY : "c42feb05-de6c-427d-af55-4f902d9e0a75"
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled false
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        sourceCompatibility 1.8
 | 
			
		||||
        targetCompatibility 1.8
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    implementation fileTree(dir: 'libs', include: ['*.jar'])
 | 
			
		||||
 | 
			
		||||
    implementation 'com.huawei.android.hms:push:2.5.3.305'
 | 
			
		||||
    implementation 'com.huawei.android.hms:base:2.5.3.305'
 | 
			
		||||
 | 
			
		||||
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
 | 
			
		||||
    implementation project(':client')
 | 
			
		||||
    implementation 'com.meizu.flyme.internet:push-internal:3.4.2@aar'
 | 
			
		||||
 | 
			
		||||
    def lifecycle_version = '2.2.0-alpha05'
 | 
			
		||||
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								tests/source-files/cn.wildfirechat.chat/settings.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tests/source-files/cn.wildfirechat.chat/settings.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
include ':client',
 | 
			
		||||
        ':push',
 | 
			
		||||
        ':chat',
 | 
			
		||||
        ':mars-core-release',
 | 
			
		||||
        ':emojilibrary',
 | 
			
		||||
        ':imagepicker',
 | 
			
		||||
        ':avenginekit'
 | 
			
		||||
							
								
								
									
										76
									
								
								tests/source-files/com.anpmech.launcher/app/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								tests/source-files/com.anpmech.launcher/app/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,76 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2015-2017 Hayai Software
 | 
			
		||||
 * Copyright 2018 The KeikaiLauncher Project
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 | 
			
		||||
 * in compliance with the License. You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software distributed under the
 | 
			
		||||
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND
 | 
			
		||||
 * either express or implied. See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
plugins {
 | 
			
		||||
    id 'com.android.application'
 | 
			
		||||
    id 'pl.allegro.tech.build.axion-release' version '1.8.1'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
scmVersion {
 | 
			
		||||
    tag {
 | 
			
		||||
        prefix = ''
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Takes version {@code major.minor.patch[-suffix]} and returns numeric versionCode based on it
 | 
			
		||||
 * Example: {@code 1.2.3-SNAPSHOT} will return {@code 1002003}
 | 
			
		||||
 */
 | 
			
		||||
static int versionCode(String versionName) {
 | 
			
		||||
    def matcher = (versionName =~ /(\d+)\.(\d+)\.(\d+).*/)
 | 
			
		||||
    return matcher.matches() ?
 | 
			
		||||
            matcher.collect { version, major, minor, patch ->
 | 
			
		||||
                major.toInteger() * 10000 + minor.toInteger() * 100 + patch.toInteger()
 | 
			
		||||
            }.head() :
 | 
			
		||||
            -1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
def androidVersion = [
 | 
			
		||||
    name: scmVersion.version,
 | 
			
		||||
    code: versionCode(scmVersion.version),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    compileSdkVersion 28
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        applicationId 'com.anpmech.launcher'
 | 
			
		||||
        minSdkVersion 15
 | 
			
		||||
        targetSdkVersion 28
 | 
			
		||||
        versionName androidVersion.name
 | 
			
		||||
        versionCode androidVersion.code
 | 
			
		||||
    }
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        abortOnError false
 | 
			
		||||
    }
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        all {
 | 
			
		||||
            buildConfigField("String", "GITHUB_USER", "\"KeikaiLauncher\"")
 | 
			
		||||
            buildConfigField("String", "GITHUB_PROJECT", "\"KeikaiLauncher\"")
 | 
			
		||||
        }
 | 
			
		||||
        release {
 | 
			
		||||
            minifyEnabled true
 | 
			
		||||
            shrinkResources true
 | 
			
		||||
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
 | 
			
		||||
        }
 | 
			
		||||
        debug {
 | 
			
		||||
            versionNameSuffix "-debug"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        implementation 'com.android.support:support-annotations:28.0.0'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?><!--
 | 
			
		||||
  ~ Copyright 2015-2017 Hayai Software
 | 
			
		||||
  ~ Copyright 2018 The KeikaiLauncher Project
 | 
			
		||||
  ~
 | 
			
		||||
  ~ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 | 
			
		||||
  ~ in compliance with the License. You may obtain a copy of the License at
 | 
			
		||||
  ~
 | 
			
		||||
  ~ http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
  ~
 | 
			
		||||
  ~ Unless required by applicable law or agreed to in writing, software distributed under the
 | 
			
		||||
  ~ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND
 | 
			
		||||
  ~ either express or implied. See the License for the specific language governing permissions and
 | 
			
		||||
  ~ limitations under the License.
 | 
			
		||||
  -->
 | 
			
		||||
 | 
			
		||||
<manifest package="com.anpmech.launcher"
 | 
			
		||||
          xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
          xmlns:tools="http://schemas.android.com/tools">
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
    ~ This permission completely optional and set in the system settings menus. The following
 | 
			
		||||
    ~ declares intention to use, if available and granted.
 | 
			
		||||
    -->
 | 
			
		||||
    <uses-permission
 | 
			
		||||
        android:name="android.permission.PACKAGE_USAGE_STATS"
 | 
			
		||||
        tools:ignore="ProtectedPermissions"/>
 | 
			
		||||
    <application
 | 
			
		||||
        android:allowBackup="true"
 | 
			
		||||
        android:icon="@drawable/ic_launcher"
 | 
			
		||||
        android:label="@string/app_name"
 | 
			
		||||
        android:resizeableActivity="true"
 | 
			
		||||
        android:theme="@style/AppBaseTheme"
 | 
			
		||||
        tools:ignore="AllowBackup,GoogleAppIndexingWarning"
 | 
			
		||||
        tools:targetApi="n">
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="com.anpmech.launcher.activities.SearchActivity"
 | 
			
		||||
            android:alwaysRetainTaskState="true"
 | 
			
		||||
            android:label="@string/title_activity_search"
 | 
			
		||||
            android:launchMode="singleTask"
 | 
			
		||||
            android:windowSoftInputMode="stateHidden|adjustResize">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.MAIN"/>
 | 
			
		||||
                <action android:name="android.intent.action.ASSIST"/>
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.LAUNCHER"/>
 | 
			
		||||
                <category android:name="android.intent.category.HOME"/>
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT"/>
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="com.anpmech.launcher.activities.SettingsActivity"
 | 
			
		||||
            android:label="@string/title_activity_settings"
 | 
			
		||||
            android:theme="@style/AppSettingsTheme"/>
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".activities.AboutActivity"
 | 
			
		||||
            android:label="@string/about_header"
 | 
			
		||||
            android:theme="@android:style/Theme.DeviceDefault.Light.Dialog"/>
 | 
			
		||||
 | 
			
		||||
        <receiver
 | 
			
		||||
            android:name=".monitor.PackageChangedReceiver"
 | 
			
		||||
            android:enabled="false"/>
 | 
			
		||||
    </application>
 | 
			
		||||
</manifest>
 | 
			
		||||
							
								
								
									
										45
									
								
								tests/source-files/com.anpmech.launcher/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								tests/source-files/com.anpmech.launcher/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2015-2017 Hayai Software
 | 
			
		||||
 * Copyright 2018 The KeikaiLauncher Project
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 | 
			
		||||
 * in compliance with the License. You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software distributed under the
 | 
			
		||||
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND
 | 
			
		||||
 * either express or implied. See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 | 
			
		||||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
        google()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:3.2.1'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
allprojects {
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
        google()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'org.owasp:dependency-check-gradle:5.2.4'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
apply plugin: 'org.owasp.dependencycheck'
 | 
			
		||||
dependencyCheck {
 | 
			
		||||
    format='JSON'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								tests/source-files/com.anpmech.launcher/settings.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tests/source-files/com.anpmech.launcher/settings.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2015-2017 Hayai Software
 | 
			
		||||
 * Copyright 2018 The KeikaiLauncher Project
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 | 
			
		||||
 * in compliance with the License. You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software distributed under the
 | 
			
		||||
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND
 | 
			
		||||
 * either express or implied. See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
include ':app'
 | 
			
		||||
							
								
								
									
										225
									
								
								tests/source-files/org.tasks/app/build.gradle.kts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										225
									
								
								tests/source-files/org.tasks/app/build.gradle.kts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,225 @@
 | 
			
		|||
import com.android.build.gradle.api.ApplicationVariant
 | 
			
		||||
 | 
			
		||||
plugins {
 | 
			
		||||
    id("com.android.application")
 | 
			
		||||
    id("checkstyle")
 | 
			
		||||
    id("io.fabric")
 | 
			
		||||
    id("com.cookpad.android.licensetools")
 | 
			
		||||
    kotlin("android")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repositories {
 | 
			
		||||
    jcenter()
 | 
			
		||||
    google()
 | 
			
		||||
    maven(url = "https://jitpack.io")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
    bundle {
 | 
			
		||||
        language {
 | 
			
		||||
            enableSplit = false
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dexOptions {
 | 
			
		||||
        javaMaxHeapSize = "2g"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    lintOptions {
 | 
			
		||||
        setLintConfig(file("lint.xml"))
 | 
			
		||||
        textOutput("stdout")
 | 
			
		||||
        textReport = true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    compileSdkVersion(Versions.targetSdk)
 | 
			
		||||
 | 
			
		||||
    defaultConfig {
 | 
			
		||||
        testApplicationId = "org.tasks.test"
 | 
			
		||||
        applicationId = "org.tasks"
 | 
			
		||||
        versionCode = 651
 | 
			
		||||
        versionName = "7.6.1"
 | 
			
		||||
        targetSdkVersion(Versions.targetSdk)
 | 
			
		||||
        minSdkVersion(Versions.minSdk)
 | 
			
		||||
        multiDexEnabled = true
 | 
			
		||||
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
 | 
			
		||||
 | 
			
		||||
        javaCompileOptions {
 | 
			
		||||
            annotationProcessorOptions {
 | 
			
		||||
                arguments["room.schemaLocation"] = "$projectDir/schemas"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    signingConfigs {
 | 
			
		||||
        create("release") {
 | 
			
		||||
            val tasksKeyAlias: String? by project
 | 
			
		||||
            val tasksStoreFile: String? by project
 | 
			
		||||
            val tasksStorePassword: String? by project
 | 
			
		||||
            val tasksKeyPassword: String? by project
 | 
			
		||||
 | 
			
		||||
            keyAlias = tasksKeyAlias
 | 
			
		||||
            storeFile = file(tasksStoreFile?: "none")
 | 
			
		||||
            storePassword = tasksStorePassword
 | 
			
		||||
            keyPassword = tasksKeyPassword
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    compileOptions {
 | 
			
		||||
        sourceCompatibility = JavaVersion.VERSION_1_8
 | 
			
		||||
        targetCompatibility = JavaVersion.VERSION_1_8
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Suppress("LocalVariableName")
 | 
			
		||||
    buildTypes {
 | 
			
		||||
        getByName("debug") {
 | 
			
		||||
            val tasks_mapbox_key_debug: String? by project
 | 
			
		||||
            val tasks_google_key_debug: String? by project
 | 
			
		||||
 | 
			
		||||
            applicationIdSuffix = ".debug"
 | 
			
		||||
            resValue("string", "mapbox_key", tasks_mapbox_key_debug ?: "")
 | 
			
		||||
            resValue("string", "google_key", tasks_google_key_debug ?: "")
 | 
			
		||||
            isTestCoverageEnabled = true
 | 
			
		||||
        }
 | 
			
		||||
        getByName("release") {
 | 
			
		||||
            val tasks_mapbox_key: String? by project
 | 
			
		||||
            val tasks_google_key: String? by project
 | 
			
		||||
 | 
			
		||||
            resValue("string", "mapbox_key", tasks_mapbox_key ?: "")
 | 
			
		||||
            resValue("string", "google_key", tasks_google_key ?: "")
 | 
			
		||||
            isMinifyEnabled = true
 | 
			
		||||
            proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard.pro")
 | 
			
		||||
            signingConfig = signingConfigs.getByName("release")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    applicationVariants.all(object : Action<ApplicationVariant> {
 | 
			
		||||
        override fun execute(variant: ApplicationVariant) {
 | 
			
		||||
            variant.resValue("string", "app_package", variant.applicationId)
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    flavorDimensions("store")
 | 
			
		||||
 | 
			
		||||
    productFlavors {
 | 
			
		||||
        create("generic") {
 | 
			
		||||
            setDimension("store")
 | 
			
		||||
            proguardFile("generic.pro")
 | 
			
		||||
        }
 | 
			
		||||
        create("googleplay") {
 | 
			
		||||
            setDimension("store")
 | 
			
		||||
        }
 | 
			
		||||
        create("amazon") {
 | 
			
		||||
            setDimension("store")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    viewBinding {
 | 
			
		||||
        isEnabled = true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dataBinding {
 | 
			
		||||
        isEnabled = true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    packagingOptions {
 | 
			
		||||
        exclude("META-INF/*.kotlin_module")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configure<CheckstyleExtension> {
 | 
			
		||||
    configFile = project.file("google_checks.xml")
 | 
			
		||||
    toolVersion = "8.16"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configurations.all {
 | 
			
		||||
    exclude(group = "com.google.guava", module = "guava-jdk5")
 | 
			
		||||
    exclude(group = "org.apache.httpcomponents", module = "httpclient")
 | 
			
		||||
    exclude(group = "com.google.http-client", module = "google-http-client-apache")
 | 
			
		||||
    resolutionStrategy {
 | 
			
		||||
        force("com.squareup.okhttp3:okhttp:" + Versions.okhttp)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
val googleplayImplementation by configurations
 | 
			
		||||
val amazonImplementation by configurations
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    implementation("com.gitlab.bitfireAT:dav4jvm:1.0")
 | 
			
		||||
    implementation("com.gitlab.bitfireAT:ical4android:be6d515db8") {
 | 
			
		||||
        exclude(group = "org.threeten", module = "threetenbp")
 | 
			
		||||
    }
 | 
			
		||||
    implementation("com.gitlab.bitfireAT:cert4android:1488e39a66")
 | 
			
		||||
 | 
			
		||||
    annotationProcessor("com.google.dagger:dagger-compiler:${Versions.dagger}")
 | 
			
		||||
    implementation("com.google.dagger:dagger:${Versions.dagger}")
 | 
			
		||||
 | 
			
		||||
    implementation("androidx.room:room-rxjava2:${Versions.room}")
 | 
			
		||||
    annotationProcessor("androidx.room:room-compiler:${Versions.room}")
 | 
			
		||||
    implementation("androidx.lifecycle:lifecycle-extensions:2.1.0")
 | 
			
		||||
    implementation("io.reactivex.rxjava2:rxandroid:2.1.1")
 | 
			
		||||
    implementation("androidx.paging:paging-runtime:2.1.1")
 | 
			
		||||
 | 
			
		||||
    annotationProcessor("com.jakewharton:butterknife-compiler:${Versions.butterknife}")
 | 
			
		||||
    implementation("com.jakewharton:butterknife:${Versions.butterknife}")
 | 
			
		||||
 | 
			
		||||
    debugImplementation("com.facebook.flipper:flipper:${Versions.flipper}")
 | 
			
		||||
    debugImplementation("com.facebook.flipper:flipper-network-plugin:${Versions.flipper}")
 | 
			
		||||
    debugImplementation("com.facebook.soloader:soloader:0.8.0")
 | 
			
		||||
 | 
			
		||||
    debugImplementation("com.squareup.leakcanary:leakcanary-android:${Versions.leakcanary}")
 | 
			
		||||
 | 
			
		||||
    implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}")
 | 
			
		||||
    implementation("io.github.luizgrp.sectionedrecyclerviewadapter:sectionedrecyclerviewadapter:2.0.0")
 | 
			
		||||
    implementation("androidx.multidex:multidex:2.0.1")
 | 
			
		||||
    implementation("me.saket:better-link-movement-method:2.2.0")
 | 
			
		||||
    implementation("com.squareup.okhttp3:okhttp:${Versions.okhttp}")
 | 
			
		||||
    implementation("com.google.code.gson:gson:2.8.5")
 | 
			
		||||
    implementation("com.github.rey5137:material:1.2.5")
 | 
			
		||||
    implementation("com.nononsenseapps:filepicker:4.2.1")
 | 
			
		||||
    implementation("com.google.android.material:material:1.1.0-rc01")
 | 
			
		||||
    implementation("androidx.annotation:annotation:1.1.0")
 | 
			
		||||
    implementation("androidx.constraintlayout:constraintlayout:2.0.0-beta4")
 | 
			
		||||
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0")
 | 
			
		||||
    implementation("com.jakewharton.timber:timber:4.7.1")
 | 
			
		||||
    implementation("com.jakewharton.threetenabp:threetenabp:1.2.1")
 | 
			
		||||
    implementation("com.google.guava:guava:27.1-android")
 | 
			
		||||
    implementation("com.jakewharton:process-phoenix:2.0.0")
 | 
			
		||||
    implementation("com.google.android.apps.dashclock:dashclock-api:2.0.0")
 | 
			
		||||
    implementation("com.twofortyfouram:android-plugin-api-for-locale:1.0.2")
 | 
			
		||||
    implementation("com.rubiconproject.oss:jchronic:0.2.6") {
 | 
			
		||||
        isTransitive = false
 | 
			
		||||
    }
 | 
			
		||||
    implementation("org.scala-saddle:google-rfc-2445:20110304") {
 | 
			
		||||
        isTransitive = false
 | 
			
		||||
    }
 | 
			
		||||
    implementation("com.wdullaer:materialdatetimepicker:4.0.1")
 | 
			
		||||
    implementation("me.leolin:ShortcutBadger:1.1.22@aar")
 | 
			
		||||
    implementation("com.google.apis:google-api-services-tasks:v1-rev59-1.25.0")
 | 
			
		||||
    implementation("com.google.apis:google-api-services-drive:v3-rev188-1.25.0")
 | 
			
		||||
    implementation("com.google.api-client:google-api-client-android:1.30.7")
 | 
			
		||||
    implementation("androidx.work:work-runtime:${Versions.work}")
 | 
			
		||||
    implementation("com.mapbox.mapboxsdk:mapbox-android-sdk:7.3.0")
 | 
			
		||||
    implementation("com.mapbox.mapboxsdk:mapbox-sdk-services:4.6.0")
 | 
			
		||||
 | 
			
		||||
    googleplayImplementation("com.crashlytics.sdk.android:crashlytics:${Versions.crashlytics}")
 | 
			
		||||
    googleplayImplementation("com.google.firebase:firebase-analytics:${Versions.firebase}")
 | 
			
		||||
    googleplayImplementation("com.google.android.gms:play-services-location:17.0.0")
 | 
			
		||||
    googleplayImplementation("com.google.android.gms:play-services-maps:17.0.0")
 | 
			
		||||
    googleplayImplementation("com.google.android.libraries.places:places:2.1.0")
 | 
			
		||||
    googleplayImplementation("com.android.billingclient:billing:1.2.2")
 | 
			
		||||
 | 
			
		||||
    amazonImplementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
 | 
			
		||||
    amazonImplementation("com.crashlytics.sdk.android:crashlytics:${Versions.crashlytics}")
 | 
			
		||||
    amazonImplementation("com.google.firebase:firebase-core:${Versions.firebase}")
 | 
			
		||||
 | 
			
		||||
    androidTestAnnotationProcessor("com.google.dagger:dagger-compiler:${Versions.dagger}")
 | 
			
		||||
    androidTestAnnotationProcessor("com.jakewharton:butterknife-compiler:${Versions.butterknife}")
 | 
			
		||||
    androidTestImplementation("com.google.dexmaker:dexmaker-mockito:1.2")
 | 
			
		||||
    androidTestImplementation("com.natpryce:make-it-easy:4.0.1")
 | 
			
		||||
    androidTestImplementation("androidx.test:runner:1.2.0")
 | 
			
		||||
    androidTestImplementation("androidx.test:rules:1.2.0")
 | 
			
		||||
    androidTestImplementation("androidx.test.ext:junit:1.1.1")
 | 
			
		||||
    androidTestImplementation("androidx.annotation:annotation:1.1.0")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
apply(mapOf("plugin" to "com.google.gms.google-services"))
 | 
			
		||||
							
								
								
									
										13
									
								
								tests/source-files/org.tasks/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/source-files/org.tasks/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
 | 
			
		||||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'org.owasp:dependency-check-gradle:1.3.2.1'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
apply plugin: 'org.owasp.dependencycheck'
 | 
			
		||||
dependencyCheck {
 | 
			
		||||
    format='JSON'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								tests/source-files/org.tasks/build.gradle.kts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								tests/source-files/org.tasks/build.gradle.kts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        jcenter()
 | 
			
		||||
        google()
 | 
			
		||||
        maven("https://maven.fabric.io/public")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath("com.android.tools.build:gradle:3.6.0-rc01")
 | 
			
		||||
        classpath("com.google.gms:google-services:4.3.3")
 | 
			
		||||
        // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
 | 
			
		||||
        classpath("io.fabric.tools:gradle:1.31.2")
 | 
			
		||||
        classpath("com.github.ben-manes:gradle-versions-plugin:0.27.0")
 | 
			
		||||
        classpath("com.cookpad.android.licensetools:license-tools-plugin:1.7.0")
 | 
			
		||||
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
plugins {
 | 
			
		||||
    id("com.github.ben-manes.versions") version "0.21.0"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
tasks.getByName<Wrapper>("wrapper") {
 | 
			
		||||
    gradleVersion = "5.6.4"
 | 
			
		||||
    distributionType = Wrapper.DistributionType.ALL
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								tests/source-files/org.tasks/buildSrc/build.gradle.kts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tests/source-files/org.tasks/buildSrc/build.gradle.kts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
plugins {
 | 
			
		||||
    `kotlin-dsl`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
repositories {
 | 
			
		||||
    jcenter()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								tests/source-files/org.tasks/settings.gradle.kts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/source-files/org.tasks/settings.gradle.kts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
include(":app")
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,124 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    package="ut.ewh.audiometrytest"
 | 
			
		||||
    android:versionCode="1"
 | 
			
		||||
    android:versionName="1.0" >
 | 
			
		||||
 | 
			
		||||
    <uses-permission android:name="android.permission.INTERNET" />
 | 
			
		||||
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
 | 
			
		||||
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 | 
			
		||||
 | 
			
		||||
    <application
 | 
			
		||||
        android:allowBackup="true"
 | 
			
		||||
        android:icon="@drawable/ic_launcher"
 | 
			
		||||
        android:label="@string/app_name"
 | 
			
		||||
        android:theme="@style/AppTheme" >
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.MainActivity"
 | 
			
		||||
            android:label="@string/app_name"
 | 
			
		||||
            android:screenOrientation="portrait" >
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.MAIN" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.LAUNCHER" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.PreTestInformation"
 | 
			
		||||
            android:label="@string/title_activity_pre_test_information"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.MainActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.MainActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.TestProctoring"
 | 
			
		||||
            android:label="@string/title_activity_test_proctoring"
 | 
			
		||||
            android:screenOrientation="portrait" >
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.TestComplete"
 | 
			
		||||
            android:label="@string/title_activity_test_complete"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.MainActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.MainActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.ExportData"
 | 
			
		||||
            android:label="@string/title_activity_export_data"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.MainActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.MainActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.Pre_Calibration"
 | 
			
		||||
            android:label="@string/title_activity_pre__calibration"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.MainActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.MainActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.Calibration"
 | 
			
		||||
            android:label="@string/title_activity_calibration"
 | 
			
		||||
            android:screenOrientation="portrait" >
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.ExportComplete"
 | 
			
		||||
            android:label="@string/title_activity_export_complete"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.ExportData" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.ExportData" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.CalibrationComplete"
 | 
			
		||||
            android:label="@string/title_activity_calibration_complete"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.Pre_Calibration" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.Pre_Calibration" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.Acknowledgements"
 | 
			
		||||
            android:label="@string/title_activity_acknowledgements"
 | 
			
		||||
            android:screenOrientation="portrait"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.MainActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.MainActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.ExportError"
 | 
			
		||||
            android:label="@string/title_activity_export_error"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.ExportData" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="ut.ewh.audiometrytest.ExportData" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.TestLookup"
 | 
			
		||||
            android:label="@string/title_activity_test_lookup"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.MainActivity" >
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="MainActivity" />
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name="ut.ewh.audiometrytest.TestData"
 | 
			
		||||
            android:label="@string/title_activity_test_data"
 | 
			
		||||
            android:parentActivityName="ut.ewh.audiometrytest.TestLookup">
 | 
			
		||||
            <meta-data
 | 
			
		||||
                android:name="android.support.PARENT_ACTIVITY"
 | 
			
		||||
                android:value="TestLookup" />
 | 
			
		||||
        </activity>
 | 
			
		||||
    </application>
 | 
			
		||||
 | 
			
		||||
</manifest>
 | 
			
		||||
							
								
								
									
										29
									
								
								tests/source-files/ut.ewh.audiometrytest/build.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								tests/source-files/ut.ewh.audiometrytest/build.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 | 
			
		||||
 | 
			
		||||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:1.0.0-rc4'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
allprojects {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
buildscript {
 | 
			
		||||
    repositories {
 | 
			
		||||
        mavenCentral()
 | 
			
		||||
    }
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'org.owasp:dependency-check-gradle:1.3.2.1'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
apply plugin: 'org.owasp.dependencycheck'
 | 
			
		||||
dependencyCheck {
 | 
			
		||||
    format='JSON'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								tests/source-files/ut.ewh.audiometrytest/settings.gradle
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/source-files/ut.ewh.audiometrytest/settings.gradle
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
include ':app'
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue