From 81f7a538d5bb01d991ae91d6a30a40128cb1ec81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BD?= Date: Tue, 9 Jan 2018 17:05:54 +0300 Subject: [PATCH] [android] Updated Gradle plugin to 4.1 --- android/.gitignore | 1 + android/3rd_party/BottomSheet/build.gradle | 6 +- android/UnitTests/build.gradle | 4 +- android/build.gradle | 105 ++++++++------ android/gradle.properties | 7 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/jni/Android.mk | 131 ------------------ android/jni/Application.mk | 32 ----- 8 files changed, 75 insertions(+), 213 deletions(-) delete mode 100644 android/jni/Android.mk delete mode 100644 android/jni/Application.mk diff --git a/android/.gitignore b/android/.gitignore index 4c225649fc..15c3212de9 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -12,6 +12,7 @@ build RELEASE .idea .externalNativeBuild +nativeOutputs # For now, ignore Android Studio projects *.iml diff --git a/android/3rd_party/BottomSheet/build.gradle b/android/3rd_party/BottomSheet/build.gradle index 583fcfb309..f208609a78 100644 --- a/android/3rd_party/BottomSheet/build.gradle +++ b/android/3rd_party/BottomSheet/build.gradle @@ -1,11 +1,12 @@ buildscript { repositories { + google() jcenter() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.1' } } @@ -14,13 +15,12 @@ apply plugin: 'com.android.library' dependencies { - compile 'com.android.support:support-v4:22.2.0' + implementation 'com.android.support:support-v4:22.2.0' } android { compileSdkVersion propTargetSdkVersion.toInteger() - buildToolsVersion propBuildToolsVersion defaultConfig { minSdkVersion propMinSdkVersion.toInteger() diff --git a/android/UnitTests/build.gradle b/android/UnitTests/build.gradle index eaf62c20ac..2081a1c73c 100644 --- a/android/UnitTests/build.gradle +++ b/android/UnitTests/build.gradle @@ -2,10 +2,11 @@ buildscript { repositories { + goodle() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -14,6 +15,7 @@ buildscript { allprojects { repositories { + google() jcenter() } } diff --git a/android/build.gradle b/android/build.gradle index 6ed7681fe4..36281f52d9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,6 @@ buildscript { repositories { + google() jcenter() maven { url 'https://maven.fabric.io/public' @@ -7,19 +8,16 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.1' classpath 'io.fabric.tools:gradle:1.+' } } allprojects { repositories { + google() mavenCentral() jcenter() - // TODO replace with google() for gradle 3.0.0+ - maven { - url 'https://maven.google.com' - } } } @@ -38,59 +36,59 @@ apply plugin: 'io.fabric' dependencies { // android support libs - compile ('com.android.support:support-v4:25.0.0') { + implementation ('com.android.support:support-v4:25.0.0') { force = true; } - compile 'com.android.support:appcompat-v7:25.0.0' - compile 'com.android.support:recyclerview-v7:25.0.0' - compile 'com.android.support:design:25.0.0' - compile 'com.android.support:cardview-v7:25.0.0' - compile 'com.android.support:preference-v7:25.0.0' - compile 'com.android.support:preference-v14:25.0.0' - compile 'com.android.support:customtabs:25.0.0' + implementation 'com.android.support:appcompat-v7:25.0.0' + implementation 'com.android.support:recyclerview-v7:25.0.0' + implementation 'com.android.support:design:25.0.0' + implementation 'com.android.support:cardview-v7:25.0.0' + implementation 'com.android.support:preference-v7:25.0.0' + implementation 'com.android.support:preference-v14:25.0.0' + implementation 'com.android.support:customtabs:25.0.0' // google play services - compile 'com.google.android.gms:play-services-location:10.0.1' - compile 'com.google.android.gms:play-services-analytics:10.0.1' - compile 'com.google.android.gms:play-services-plus:10.0.1' - compile 'com.google.android.gms:play-services-gcm:10.0.1' - compile 'com.google.android.gms:play-services-ads:10.0.1' + implementation 'com.google.android.gms:play-services-location:10.0.1' + implementation 'com.google.android.gms:play-services-analytics:10.0.1' + implementation 'com.google.android.gms:play-services-plus:10.0.1' + implementation 'com.google.android.gms:play-services-gcm:10.0.1' + implementation 'com.google.android.gms:play-services-ads:10.0.1' // statistics - compile 'com.flurry.android:analytics:6.7.0' + implementation 'com.flurry.android:analytics:6.7.0' // crash reporting - compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true } - compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.2@aar') { transitive = true } + implementation('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true } + implementation('com.crashlytics.sdk.android:crashlytics-ndk:1.1.2@aar') { transitive = true } // 3-party - compile ('com.facebook.android:facebook-android-sdk:4.26.0') { + implementation ('com.facebook.android:facebook-android-sdk:4.26.0') { exclude group: 'com.google.android.gms' exclude group: 'com.android.support' } - compile('com.facebook.android:audience-network-sdk:4.26.0') { + implementation('com.facebook.android:audience-network-sdk:4.26.0') { exclude group: 'com.google.android.gms' exclude group: 'com.android.support' } - compile 'com.google.code.gson:gson:2.6.1' - compile 'com.pushwoosh:pushwoosh:4.12.2' - compile 'com.my.tracker:mytracker-sdk:1.3.5' - compile ('com.my.target:mytarget-sdk:4.6.14') { + implementation 'com.google.code.gson:gson:2.6.1' + implementation 'com.pushwoosh:pushwoosh:4.12.2' + implementation 'com.my.tracker:mytracker-sdk:1.3.5' + implementation ('com.my.target:mytarget-sdk:4.6.14') { exclude group: 'com.android.support' } - compile('com.mopub:mopub-sdk-native-static:4.17.0@aar') { + implementation('com.mopub:mopub-sdk-native-static:4.17.0@aar') { transitive = true } - compile fileTree(dir: '3rd_party', include: '*.jar') + implementation fileTree(dir: '3rd_party', include: '*.jar') // BottomSheet - compile project(":3rd_party:BottomSheet") + implementation project(":3rd_party:BottomSheet") // LinearLayoutManager allowing wrap_content of RecyclerView-s // TODO remove this library when default LinearLayoutManager will be fixed. - compile 'org.solovyev.android.views:linear-layout-manager:0.5@aar' - compile 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar' + implementation 'org.solovyev.android.views:linear-layout-manager:0.5@aar' + implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar' // Glide - compile 'com.github.bumptech.glide:glide:3.7.0' + implementation 'com.github.bumptech.glide:glide:3.7.0' // Java concurrency annotations - compile 'net.jcip:jcip-annotations:1.0' - compile 'com.android.support:multidex:1.0.1' - compile 'com.appsflyer:af-android-sdk:4.8.3' + implementation 'net.jcip:jcip-annotations:1.0' + implementation 'com.android.support:multidex:1.0.2' + implementation 'com.appsflyer:af-android-sdk:4.8.3' } def getDate() { @@ -111,7 +109,6 @@ crashlytics { android { // All properties are read from gradle.properties file compileSdkVersion propCompileSdkVersion.toInteger() - buildToolsVersion propBuildToolsVersion defaultConfig { // Default package name is taken from the manifest and should be com.mapswithme.maps @@ -143,7 +140,7 @@ android { cmake { cppFlags '-fexceptions', '-frtti', '-m32' cFlags '-ffunction-sections', '-fdata-sections', '-Wno-extern-c-compat', '-m32' - arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static', "-DOS=$osName" + arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static', "-DOS=$osName", "-DSKIP_TESTS=ON" } } @@ -171,13 +168,17 @@ android { assets.srcDirs = ['assets'] } + flavorDimensions "default" + productFlavors { google { + dimension "default" versionName = android.defaultConfig.versionName + '-Google' buildConfigField 'String', 'SUPPORT_MAIL', '"googleplay@maps.me"' } samsung { + dimension "default" versionName = android.defaultConfig.versionName + '-Samsung' buildConfigField 'String', 'REVIEW_URL', '"samsungapps://ProductDetail/com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"samsung@maps.me"' @@ -185,6 +186,7 @@ android { } amazon { + dimension "default" versionName = android.defaultConfig.versionName + '-Amazon' buildConfigField 'String', 'REVIEW_URL', '"amzn://apps/android?p=com.mapswithme.maps.pro"' buildConfigField 'String', 'SUPPORT_MAIL', '"amazon@maps.me"' @@ -193,69 +195,81 @@ android { } yandex { + dimension "default" versionName = android.defaultConfig.versionName + '-Yandex' buildConfigField 'String', 'REVIEW_URL', '"yastore://details?id=com.mapswithme.maps.pro"' android.sourceSets.yandex.assets.srcDirs = ['flavors/mwm-ttf-assets'] } preinstall { + dimension "default" versionName = android.defaultConfig.versionName + '-Preinstall' buildConfigField 'String', 'SUPPORT_MAIL', '"googleplay@maps.me"' } cipherlab { + dimension "default" versionName = android.defaultConfig.versionName + '-CipherLab' android.sourceSets.cipherlab.assets.srcDirs = ['flavors/mwm-ttf-assets'] } xiaomi { + dimension "default" versionName = android.defaultConfig.versionName + '-Xiaomi' buildConfigField 'String', 'REVIEW_URL', '"http://app.mi.com/detail/85835?ref=search"' android.sourceSets.xiaomi.assets.srcDirs = ['flavors/mwm-ttf-assets'] } lenovo { + dimension "default" versionName = android.defaultConfig.versionName + '-Lenovo' android.sourceSets.lenovo.assets.srcDirs = ['flavors/mwm-ttf-assets'] } web { + dimension "default" versionName = android.defaultConfig.versionName + '-Web' buildConfigField 'String', 'SUPPORT_MAIL', '"googleplay@maps.me"' android.sourceSets.web.assets.srcDirs = ['flavors/mwm-ttf-assets'] } nineApp { + dimension "default" versionName = android.defaultConfig.versionName + '-9app' buildConfigField 'String', 'REVIEW_URL', '"http://www.9apps.com/android-apps/mapswithme-maps-pro/"' android.sourceSets.nineApp.assets.srcDirs = ['flavors/mwm-ttf-assets'] } mobogenie { + dimension "default" versionName = android.defaultConfig.versionName + '-Mobogenie' android.sourceSets.mobogenie.assets.srcDirs = ['flavors/mwm-ttf-assets'] buildConfigField 'String', 'REVIEW_URL', '"http://www.mobogenie.com/download-maps-me-4240212.html"' } tencent { + dimension "default" versionName = android.defaultConfig.versionName + '-Tencent' android.sourceSets.tencent.assets.srcDirs = ['flavors/mwm-ttf-assets'] buildConfigField 'String', 'REVIEW_URL', '"http://android.myapp.com/myapp/detail.htm?apkName=com.mapswithme.maps.pro"' } baidu { + dimension "default" versionName = android.defaultConfig.versionName + '-Baidu' android.sourceSets.baidu.assets.srcDirs = ['flavors/mwm-ttf-assets'] buildConfigField 'String', 'REVIEW_URL', '"http://shouji.baidu.com/software/item?docid=7999892&f=sug@software"' } appChina { + dimension "default" versionName = android.defaultConfig.versionName + '-AppChina' android.sourceSets.appChina.assets.srcDirs = ['flavors/mwm-ttf-assets'] buildConfigField 'String', 'REVIEW_URL', '"http://www.appchina.com/app/com.mapswithme.maps.pro"' } moboMarket { + dimension "default" versionName = android.defaultConfig.versionName + '-MoboMarket' android.sourceSets.moboMarket.assets.srcDirs = ['flavors/mwm-ttf-assets'] // TODO While store url is unknown, force all rating reviews to be sent to our email. @@ -264,6 +278,7 @@ android { } blackberry { + dimension "default" versionName = android.defaultConfig.versionName + '-Blackberry' android.sourceSets.blackberry.assets.srcDirs = ['flavors/mwm-ttf-assets'] buildConfigField 'String', 'REVIEW_URL', '"https://appworld.blackberry.com/webstore/content/51013892"' @@ -291,11 +306,11 @@ android { commandLine android.getAdbExe(), 'shell', 'am', 'start', '-n', "${applicationId}/com.mapswithme.maps.SplashActivity" } - variant.outputs.each { output -> + variant.outputs.all { output -> if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) { def file = output.outputFile // version at the end of each built apk - output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + android.defaultConfig.versionName + "-" + getDate() + ".apk")) + outputFileName = file.name.replace(".apk", "-" + android.defaultConfig.versionName + "-" + getDate() + ".apk") // set different versionCodes for different ABIs int abiVersionCode = project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI)) ?: 0 output.versionCodeOverride = (abiVersionCode * 1000) + android.defaultConfig.versionCode @@ -342,11 +357,13 @@ android { versionNameSuffix '-beta' signingConfig signingConfigs.mapswithme android.sourceSets.beta.setRoot('flavors/beta') + matchingFallbacks = ['debug', 'release'] } } externalNativeBuild { cmake { + buildStagingDirectory "./nativeOutputs" path "../CMakeLists.txt" } } @@ -393,9 +410,11 @@ def buildTypes = [[ndkType: 'release', cppType: "production", flags: propRelease def unalignedFonts = "${propObbFontsOutput}.unaligned" def unalignedWorlds = "${propObbWorldsOutput}.unaligned" -task obbClean(type: Delete) << { - [propObbFontsOutput, propObbWorldsOutput, unalignedFonts, unalignedWorlds].each { file -> - delete file +task obbClean(type: Delete) { + doLast { + [propObbFontsOutput, propObbWorldsOutput, unalignedFonts, unalignedWorlds].each { file -> + delete file + } } } diff --git a/android/gradle.properties b/android/gradle.properties index fce6f31bea..59cf946f22 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -2,8 +2,8 @@ propMinSdkVersion=15 # TODO use 23 target and build tools version, when ProGuard problem will be fixed # https://code.google.com/p/android/issues/detail?id=184567 propTargetSdkVersion=23 -propCompileSdkVersion=25 -propBuildToolsVersion=25.0.2 +propCompileSdkVersion=26 +propBuildToolsVersion=26.0.2 propVersionCode=802 propVersionName=8.0.2 propDebugNdkFlags=V=1 NDK_DEBUG=1 DEBUG=1 @@ -26,3 +26,6 @@ propObbFontsOutput build/fonts.obb org.gradle.parallel=true org.gradle.caching=true org.gradle.jvmargs=-Xmx3g + +# AAPT2 cannot be enabled while MoPub library has an incorrect nested element in Manifest. +android.enableAapt2=false diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 6e6d569fd3..99a547f458 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/android/jni/Android.mk b/android/jni/Android.mk deleted file mode 100644 index 1d08ebd84c..0000000000 --- a/android/jni/Android.mk +++ /dev/null @@ -1,131 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -OMIM_CONFIG := release -ifeq ($(NDK_DEBUG),1) - OMIM_CONFIG := debug -else - ifeq ($(PRODUCTION),1) - OMIM_CONFIG := production - endif -endif - -#################################################################################### -# List all static libraries which are built using our own scripts in tools/android # -#################################################################################### - -MY_PREBUILT_LIBS_PATH := ../../../omim-android-$(OMIM_CONFIG)-$(TARGET_ARCH_ABI)/out/$(OMIM_CONFIG) - -# Avoid clean errors due to missing external static libs -ifneq ($(MAKECMDGOALS),clean) - -define add_prebuild_static_lib - include $(CLEAR_VARS) - LOCAL_MODULE := $1 - LOCAL_SRC_FILES := $(MY_PREBUILT_LIBS_PATH)/lib$1.a - include $(PREBUILT_STATIC_LIBRARY) -endef - -prebuild_static_libs := map tracking routing traffic routing_common drape_frontend search storage -prebuild_static_libs += ugc indexer drape platform editor partners_api local_ads mwm_diff bsdiff -prebuild_static_libs += geometry coding base opening_hours pugixml oauthcpp expat freetype minizip -prebuild_static_libs += jansson protobuf stats_client succinct stb_image sdf_image icu agg - -$(foreach item,$(prebuild_static_libs),$(eval $(call add_prebuild_static_lib,$(item)))) - -endif - -########################### Main MapsWithMe module ############################ - -include $(CLEAR_VARS) - -LOCAL_CPP_FEATURES += exceptions rtti - -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ - -LOCAL_MODULE := mapswithme -LOCAL_STATIC_LIBRARIES := $(prebuild_static_libs) - -LOCAL_CFLAGS := -ffunction-sections -fdata-sections -Wno-extern-c-compat - -ifneq ($(NDK_DEBUG),1) - ifeq ($(PRODUCTION),1) - OMIM_CONFIG := production - LOCAL_CFLAGS += -fvisibility=hidden - LOCAL_CPPFLAGS += -fvisibility-inlines-hidden - endif - LOCAL_CFLAGS += -O3 - LOCAL_LFLAGS += -O3 -endif - - -TARGET_PLATFORM := android-15 - -LOCAL_HEADER_FILES := \ - ../../private.h \ - com/mapswithme/core/jni_helper.hpp \ - com/mapswithme/core/logging.hpp \ - com/mapswithme/core/ScopedEnv.hpp \ - com/mapswithme/core/ScopedLocalRef.hpp \ - com/mapswithme/maps/Framework.hpp \ - com/mapswithme/opengl/android_gl_utils.hpp \ - com/mapswithme/opengl/androidoglcontext.hpp \ - com/mapswithme/opengl/androidoglcontextfactory.hpp \ - com/mapswithme/opengl/gl3stub.h \ - com/mapswithme/platform/GuiThread.hpp \ - com/mapswithme/platform/Platform.hpp \ - -LOCAL_SRC_FILES := \ - com/mapswithme/core/jni_helper.cpp \ - com/mapswithme/core/logging.cpp \ - com/mapswithme/maps/bookmarks/data/Bookmark.cpp \ - com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp \ - com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp \ - com/mapswithme/maps/cian/Cian.cpp \ - com/mapswithme/maps/DisplayedCategories.cpp \ - com/mapswithme/maps/DownloadResourcesLegacyActivity.cpp \ - com/mapswithme/maps/editor/OpeningHours.cpp \ - com/mapswithme/maps/editor/Editor.cpp \ - com/mapswithme/maps/editor/OsmOAuth.cpp \ - com/mapswithme/maps/Framework.cpp \ - com/mapswithme/maps/locals/Locals.cpp \ - com/mapswithme/maps/LocationState.cpp \ - com/mapswithme/maps/LocationHelper.cpp \ - com/mapswithme/maps/MapFragment.cpp \ - com/mapswithme/maps/MapManager.cpp \ - com/mapswithme/maps/MwmApplication.cpp \ - com/mapswithme/maps/PrivateVariables.cpp \ - com/mapswithme/maps/SearchEngine.cpp \ - com/mapswithme/maps/SearchRecents.cpp \ - com/mapswithme/maps/settings/UnitLocale.cpp \ - com/mapswithme/maps/sound/tts.cpp \ - com/mapswithme/maps/Sponsored.cpp \ - com/mapswithme/maps/taxi/TaxiManager.cpp \ - com/mapswithme/maps/TrackRecorder.cpp \ - com/mapswithme/maps/TrafficState.cpp \ - com/mapswithme/maps/ugc/UGC.cpp \ - com/mapswithme/maps/UserMarkHelper.cpp \ - com/mapswithme/maps/viator/Viator.cpp \ - com/mapswithme/opengl/android_gl_utils.cpp \ - com/mapswithme/opengl/androidoglcontext.cpp \ - com/mapswithme/opengl/androidoglcontextfactory.cpp \ - com/mapswithme/opengl/gl3stub.c \ - com/mapswithme/platform/HttpThread.cpp \ - com/mapswithme/platform/GuiThread.cpp \ - com/mapswithme/platform/Language.cpp \ - com/mapswithme/platform/MarketingService.cpp \ - com/mapswithme/platform/Platform.cpp \ - com/mapswithme/platform/PThreadImpl.cpp \ - com/mapswithme/platform/SecureStorage.cpp \ - com/mapswithme/platform/SocketImpl.cpp \ - com/mapswithme/util/Config.cpp \ - com/mapswithme/util/HttpClient.cpp \ - com/mapswithme/util/LoggerFactory.cpp \ - com/mapswithme/util/NetworkPolicy.cpp \ - com/mapswithme/util/StringUtils.cpp \ - com/mapswithme/util/statistics/PushwooshHelper.cpp \ - -LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2 -latomic -lz - -LOCAL_LDLIBS += -Wl,--gc-sections - -include $(BUILD_SHARED_LIBRARY) diff --git a/android/jni/Application.mk b/android/jni/Application.mk deleted file mode 100644 index 4ca20c1877..0000000000 --- a/android/jni/Application.mk +++ /dev/null @@ -1,32 +0,0 @@ -NDK_TOOLCHAIN_VERSION := clang -APP_PLATFORM := android-15 -APP_STL := c++_static - -# libc++-specific issues: -std=c++11" is turned on by default. - -# for gcc 4.8+ -APP_CPPFLAGS += -Wno-deprecated-register - -ifeq (x$(NDK_ABI_TO_BUILD), x) - APP_ABI := armeabi-v7a x86 -else - APP_ABI := $(NDK_ABI_TO_BUILD) -endif - -LOCAL_PATH := $(call my-dir) -APP_CFLAGS += -I$(LOCAL_PATH)/../../3party/boost \ - -I$(LOCAL_PATH)/../../3party/protobuf/src \ - -I$(LOCAL_PATH)/../../3party/glm - -APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti - -ifeq ($(NDK_DEBUG),1) - APP_OPTIM := debug - APP_CFLAGS += -DDEBUG -D_DEBUG -else - APP_OPTIM := release - APP_CFLAGS += -DRELEASE -D_RELEASE - ifeq ($(PRODUCTION),1) - APP_CFLAGS += -DOMIM_PRODUCTION - endif -endif