Build gradle refactoring

This commit is contained in:
max-klaus 2021-01-19 15:26:27 +03:00
parent a8d92d7fa0
commit 01569a6f52
22 changed files with 195 additions and 515 deletions

View file

@ -10,7 +10,7 @@
android:value="fb792288460976727"/> android:value="fb792288460976727"/>
<activity <activity
android:name="net.osmand.plus.activities.MapActivity" android:name="net.osmand.plus.activities.MapActivity"
android:theme="@style/FirstSplashScreenFreeDev" android:theme="@style/FirstSplashScreenNightlyFree"
tools:replace="android:theme"/> tools:replace="android:theme"/>
<service <service
android:name="net.osmand.plus.NavigationService" android:name="net.osmand.plus.NavigationService"

View file

@ -1,6 +1,3 @@
apply plugin: 'com.android.library'
apply plugin: 'ivy-publish'
task printc { task printc {
configurations.each { if(it.isCanBeResolved()) println it.name } configurations.each { if(it.isCanBeResolved()) println it.name }
} }
@ -11,21 +8,29 @@ android {
// compileNdkVersion "android-ndk-r17b" // compileNdkVersion "android-ndk-r17b"
defaultConfig { defaultConfig {
minSdkVersion 15
targetSdkVersion 29 targetSdkVersion 29
multiDexEnabled true multiDexEnabled true
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
} }
lintOptions { lintOptions {
tasks.lint.enabled = false
abortOnError false abortOnError false
} }
// related to kuromoji
//packagingOptions {
// exclude '/META-INF/CONTRIBUTORS.md'
// exclude '/META-INF/LICENSE.md'
// exclude '/META-INF/NOTICE.md'
//}
// This is from OsmAndCore_android.aar - for some reason it's not inherited
aaptOptions { aaptOptions {
// Don't compress any embedded resources // Don't compress any embedded resources
noCompress "qz" noCompress "qz"
cruncherEnabled = false cruncherEnabled = false
// Flag notifies aapt to keep the attribute IDs around
// additionalParameters "--no-version-vectors"
} }
dexOptions { dexOptions {
@ -34,11 +39,11 @@ android {
sourceSets { sourceSets {
main { main {
manifest.srcFile "AndroidManifest-library.xml" manifest.srcFile "AndroidManifest.xml"
jni.srcDirs = [] jni.srcDirs = []
jniLibs.srcDirs = ["libs"] jniLibs.srcDirs = ["libs"]
aidl.srcDirs = ["src"] aidl.srcDirs = ["src"]
java.srcDirs = ["src", "src-gms", "src-google"] java.srcDirs = ["src"]
resources.srcDirs = ["src"] resources.srcDirs = ["src"]
renderscript.srcDirs = ["src"] renderscript.srcDirs = ["src"]
res.srcDirs = ["res"] res.srcDirs = ["res"]
@ -95,20 +100,12 @@ android {
debug { debug {
debuggable true debuggable true
} }
release { release {
debuggable false debuggable false
} }
} }
} }
def replaceNoTranslate(line) {
if (line.contains("\"versionFeatures\"")) {
return line.replaceAll(">[^<]*<", ">" + "" + "<")
}
return line;
}
task updateNoTranslate(type: Copy) { task updateNoTranslate(type: Copy) {
from('.') { from('.') {
include 'no_translate.xml' include 'no_translate.xml'
@ -180,7 +177,7 @@ task collectHelpContentsAssets(type: Copy) {
include "*.html" include "*.html"
} }
from("../../help/website/blog_articles") { from("../../help/website/blog_articles") {
include "osmand-3-8-released.html" include "osmand-3-9-released.html"
} }
into "assets/feature_articles" into "assets/feature_articles"
} }
@ -277,8 +274,6 @@ task collectExternalResources {
// Legacy core build // Legacy core build
import org.apache.tools.ant.taskdefs.condition.Os import org.apache.tools.ant.taskdefs.condition.Os
import java.util.regex.Pattern
task buildOsmAndCore(type: Exec) { task buildOsmAndCore(type: Exec) {
Gradle gradle = getGradle() Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase() String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase()
@ -325,12 +320,6 @@ task cleanupDuplicatesInCore() {
} }
} }
afterEvaluate {
android.libraryVariants.all { variant ->
variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore)
}
}
task appStart(type: Exec) { task appStart(type: Exec) {
// linux // linux
commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
@ -338,27 +327,6 @@ task appStart(type: Exec) {
// commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity' // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
} }
project.afterEvaluate {
publishing {
repositories {
ivy {
url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./"
version = "0.1-SNAPSHOT"
}
}
publications {
aar(IvyPublication) {
artifact bundleLegacyFatDebugAar {
classifier 'debug'
}
artifact bundleLegacyFatReleaseAar {
classifier 'release'
}
}
}
}
}
dependencies { dependencies {
implementation project(path: ':OsmAnd-java', configuration: 'android') implementation project(path: ':OsmAnd-java', configuration: 'android')
implementation project(':OsmAnd-api') implementation project(':OsmAnd-api')
@ -390,14 +358,8 @@ dependencies {
// implementation 'com.ibm.icu:icu4j:50.1' // implementation 'com.ibm.icu:icu4j:50.1'
// implementation 'net.sf.trove4j:trove4j:3.0.3' // implementation 'net.sf.trove4j:trove4j:3.0.3'
// qtcoreImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
// qtcoredebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
// qtcoredebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
// qtcoredebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
// qtcoreImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
// qtcoreImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
implementation("com.getkeepsafe.taptargetview:taptargetview:1.12.0") { implementation("com.getkeepsafe.taptargetview:taptargetview:1.12.0") {
exclude group: 'com.android.support' exclude group: 'com.android.support'
} }
@ -410,6 +372,4 @@ dependencies {
} }
implementation 'com.jaredrummler:colorpicker:1.1.0' implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.56' implementation 'org.bouncycastle:bcpkix-jdk15on:1.56'
implementation 'com.google.android.gms:play-services-location:17.1.0'
} }

View file

@ -0,0 +1,67 @@
apply plugin: 'com.android.library'
apply plugin: 'ivy-publish'
apply from: 'build-common.gradle'
android {
defaultConfig {
minSdkVersion 15
}
lintOptions {
tasks.lint.enabled = false
}
sourceSets {
main {
manifest.srcFile "AndroidManifest-library.xml"
java.srcDirs = ["src", "src-gms", "src-google"]
}
}
productFlavors {
// CoreVersion
// Build that doesn't include 3D OpenGL
legacy {
dimension "coreversion"
}
}
}
def replaceNoTranslate(line) {
if (line.contains("\"versionFeatures\"")) {
return line.replaceAll(">[^<]*<", ">" + "" + "<")
}
return line;
}
afterEvaluate {
android.libraryVariants.all { variant ->
variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore)
}
}
project.afterEvaluate {
publishing {
repositories {
ivy {
url = System.getenv("OSMAND_BINARIES_IVY_ROOT") ?: "./"
version = "0.1-SNAPSHOT"
}
}
publications {
aar(IvyPublication) {
artifact bundleLegacyFatDebugAar {
classifier 'debug'
}
artifact bundleLegacyFatReleaseAar {
classifier 'release'
}
}
}
}
}
dependencies {
implementation 'com.google.android.gms:play-services-location:17.1.0'
}

View file

@ -1,12 +1,12 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply from: 'build-common.gradle'
// Global Parameters accepted // Global Parameters accepted
// TARGET_APP_NAME - app name // TARGET_APP_NAME - app name
// APK_NUMBER_VERSION - version number of apk // APK_NUMBER_VERSION - version number of apk
// APK_VERSION_SUFFIX - build number like #99999Z, appended (for dev builds) to Manifest's versionName as X.X.X#99999Z // APK_VERSION_SUFFIX - build number like #99999Z, appended (for dev builds) to Manifest's versionName as X.X.X#99999Z
// Z means flavor: M=-master, D=-main-default, B=-Blackberry, Des=-design, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy // Z means flavor: M=-master, D=-main-default, Des=-design, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy
// APP_EDITION - date stamp of builds // APP_EDITION - date stamp of builds
// APP_FEATURES - features +play_market +gps_status -parking_plugin -blackberry -free_version -amazon
// 1. To be done Filter fonts // 1. To be done Filter fonts
// <unzip src="OsmAndCore_android.aar" dest="."> // <unzip src="OsmAndCore_android.aar" dest=".">
@ -17,15 +17,7 @@ apply plugin: 'com.android.application'
// </unzip> // </unzip>
// Less important // Less important
task printc {
configurations.each { if(it.isCanBeResolved()) println it.name }
}
android { android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
// compileNdkVersion "android-ndk-r17b"
signingConfigs { signingConfigs {
development { development {
storeFile file("../keystores/debug.keystore") storeFile file("../keystores/debug.keystore")
@ -44,21 +36,15 @@ android {
defaultConfig { defaultConfig {
minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15 minSdkVersion System.getenv("MIN_SDK_VERSION") ? System.getenv("MIN_SDK_VERSION").toInteger() : 15
targetSdkVersion 29
versionCode 390 versionCode 390
versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode
multiDexEnabled true
versionName "3.9.0" versionName "3.9.0"
versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName
versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName versionName System.getenv("APK_VERSION_SUFFIX")? versionName + System.getenv("APK_VERSION_SUFFIX").toString(): versionName
// Stops the Gradle plugins automatic rasterization of vectors
// vectorDrawables.generatedDensities = ['hdpi']
vectorDrawables.useSupportLibrary = true
} }
lintOptions { lintOptions {
lintConfig file("lint.xml") lintConfig file("lint.xml")
abortOnError false
warningsAsErrors false warningsAsErrors false
} }
@ -79,55 +65,33 @@ android {
// exclude '/META-INF/NOTICE.md' // exclude '/META-INF/NOTICE.md'
//} //}
// This is from OsmAndCore_android.aar - for some reason it's not inherited
aaptOptions {
// Don't compress any embedded resources
noCompress "qz"
cruncherEnabled = false
// Flag notifies aapt to keep the attribute IDs around
// additionalParameters "--no-version-vectors"
}
dexOptions {
javaMaxHeapSize "4g"
}
sourceSets { sourceSets {
main {
manifest.srcFile "AndroidManifest.xml"
jni.srcDirs = []
jniLibs.srcDirs = ["libs"]
aidl.srcDirs = ["src"]
java.srcDirs = ["src"]
resources.srcDirs = ["src"]
renderscript.srcDirs = ["src"]
res.srcDirs = ["res"]
assets.srcDirs = ["assets"]
}
debug { debug {
manifest.srcFile "AndroidManifest-debug.xml" manifest.srcFile "AndroidManifest-debug.xml"
} }
full { androidFull {
java.srcDirs = ["src-nogms", "src-google"] java.srcDirs = ["src-nogms", "src-google"]
} }
fullGms { gplayFull {
java.srcDirs = ["src-gms", "src-google"] java.srcDirs = ["src-gms", "src-google"]
} }
free { gplayFree {
java.srcDirs = ["src-nogms", "src-google"]
manifest.srcFile "AndroidManifest-free.xml"
}
freeGms {
java.srcDirs = ["src-gms", "src-google"] java.srcDirs = ["src-gms", "src-google"]
manifest.srcFile "AndroidManifest-free.xml" manifest.srcFile "AndroidManifest-gplayFree.xml"
} }
freedev { nightlyFree {
java.srcDirs = ["src-nogms", "src-google"] java.srcDirs = ["src-nogms", "src-google"]
manifest.srcFile "AndroidManifest-freedev.xml" manifest.srcFile "AndroidManifest-nightlyFree.xml"
} }
freehuawei { amazonFree {
java.srcDirs = ["src-nogms", "src-google"] java.srcDirs = ["src-nogms", "src-google"]
manifest.srcFile "AndroidManifest-freehuawei.xml" }
amazonFull {
java.srcDirs = ["src-nogms", "src-google"]
}
huawei {
java.srcDirs = ["src-nogms", "src-google"]
manifest.srcFile "AndroidManifest-huawei.xml"
} }
legacy { legacy {
@ -137,75 +101,43 @@ android {
flavorDimensions "version", "coreversion", "abi" flavorDimensions "version", "coreversion", "abi"
productFlavors { productFlavors {
// ABI
armv7 {
dimension "abi"
ndk {
abiFilter 'armeabi-v7a'
}
}
arm64 {
dimension "abi"
ndk {
abiFilter 'arm64-v8a'
}
}
x86 {
dimension "abi"
ndk {
abiFilters 'x86', 'x86_64'
}
}
armonly {
dimension "abi"
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a'
}
}
fat {
dimension "abi"
ndk {
abiFilters 'arm64-v8a', 'x86', 'x86_64', 'armeabi-v7a'
}
}
// Version // Version
freedev { nightlyFree {
dimension "version" dimension "version"
applicationId "net.osmand.dev" applicationId "net.osmand.dev"
// resConfig "en" // resConfig "en"
} }
free { androidFull {
dimension "version"
applicationId "net.osmand"
}
freeGms {
dimension "version"
applicationId "net.osmand"
}
full {
dimension "version" dimension "version"
applicationId "net.osmand.plus" applicationId "net.osmand.plus"
} }
fullGms { gplayFree {
dimension "version"
applicationId "net.osmand"
}
gplayFull {
dimension "version" dimension "version"
applicationId "net.osmand.plus" applicationId "net.osmand.plus"
} }
freehuawei { amazonFree {
dimension "version"
applicationId "net.osmand"
}
amazonFull {
dimension "version"
applicationId "net.osmand.plus"
}
huawei {
dimension "version" dimension "version"
applicationId "net.osmand.huawei" applicationId "net.osmand.huawei"
} }
// CoreVersion
// Build that doesn't include 3D OpenGL
legacy {
dimension "coreversion"
}
// Build that includes 3D OpenGL release // Build that includes 3D OpenGL release
qtcore { opengl {
dimension "coreversion" dimension "coreversion"
} }
// Build that includes 3D OpenGL debug // Build that includes 3D OpenGL debug
qtcoredebug { opengldebug {
dimension "coreversion" dimension "coreversion"
} }
} }
@ -237,220 +169,6 @@ def replaceNoTranslate(line) {
return line; return line;
} }
task updateNoTranslate(type: Copy) {
from('.') {
include 'no_translate.xml'
filter {
line -> replaceNoTranslate(line);
}
}
into 'res/values/'
}
task validateTranslate {
println "Validating translations"
file("res").eachFileRecurse groovy.io.FileType.FILES, {
if (it.name == "strings.xml" || it.name == "phrases.xml") {
it.eachLine { line ->
if (line.contains("\$ s") || line.contains("\$ d") || line.contains("\$ f") ||
line.contains(" \$s") || line.contains(" \$d") || line.contains(" \$f") ||
line.contains("1\$ ") || line.contains("2\$ ") || line.contains("3\$ ") ||
line.contains("%1s") || line.contains(" 1\$s") ||
(line.contains("% \$") || line.contains("% 1") || line.contains("% 2") ||
line.contains("% 3") || line.contains("% s"))) {
throw new GradleException("Incorrect translation " + it.getAbsolutePath() + " " + line);
}
}
}
}
}
task downloadWorldMiniBasemap {
doLast {
ant.get(src: 'http://builder.osmand.net/basemap/World_basemap_mini_2.obf', dest: 'assets/World_basemap_mini.obf', skipexisting: 'true')
}
}
task collectVoiceAssets(type: Sync) {
from "../../resources/voice"
into "assets/voice"
include "**/*.js"
}
task cleanNoTranslate(type: Delete) {
delete('res/values/no_translate.xml')
}
task collectFonts(type: Copy) {
from "../../resources/fonts"
from "../../resources/rendering_styles/fonts"
// from "../../resources/rendering_styles/fonts/OpenSans"
into "assets/fonts"
include "*.ttf"
}
task collectHelpContentsStyle(type: Copy) {
from("../../help/website/help/") {
include "style.css"
}
into "assets"
}
task collectHelpContentsAssets(type: Copy) {
from("../../help/website/help") {
include "about.html"
include "changes.html"
include "faq.html"
include "map-legend.html"
}
from("../../help/website/feature_articles") {
include "*.html"
}
from("../../help/website/blog_articles") {
include "osmand-3-9-released.html"
}
into "assets/feature_articles"
}
task copyPoiCategories(type: Copy) {
from("../../resources/poi") {
include "poi_categories.json"
}
into "assets"
}
task copyMapShaderIcons(type: Sync) {
// from "../../resources/rendering_styles/style-icons/map-shaders-png"
// into "res/"
from "../../resources/rendering_styles/style-icons/map-shaders-vector"
into "res/drawable"
include "**/*.png", "**/*.xml"
preserve {
include '**/*'
exclude "**/h_*"
}
}
task copyMapPOIIcons(type: Sync) {
from "../../resources/rendering_styles/style-icons/map-icons-vector"
into "res/drawable/"
// from "../../resources/rendering_styles/style-icons/map-icons-png"
// into "res/"
include "**/*.png", "**/*.xml"
preserve {
include '**/*'
exclude "**/mm_*"
}
}
task copyLargePOIIcons(type: Sync) {
from "../../resources/rendering_styles/style-icons/poi-icons-vector"
into "res/drawable/"
include "**/*.png", "**/*.xml"
preserve {
include '**/*'
exclude "**/mx_*"
}
}
task copyWidgetIconsXhdpi(type: Sync) {
from "res/drawable-xxhdpi/"
into "res/drawable-large-xhdpi/"
include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
preserve {
include '*'
exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
}
}
task copyWidgetIconsHdpi(type: Sync) {
from "res/drawable-xhdpi/"
into "res/drawable-large-hdpi/"
include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
preserve {
include '*'
exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
}
}
task copyWidgetIcons(type: Sync) {
from "res/drawable-hdpi/"
into "res/drawable-large/"
include "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
preserve {
include '*'
exclude "**/widget_*.png", "**/widget_*.xml", "**/map_*.xml", "**/map_*.png"
}
}
task collectExternalResources {
dependsOn collectVoiceAssets,
collectFonts,
collectHelpContentsAssets,
collectHelpContentsStyle,
copyMapShaderIcons,
copyMapPOIIcons,
copyLargePOIIcons,
updateNoTranslate,
validateTranslate,
copyWidgetIcons,
copyWidgetIconsHdpi,
copyWidgetIconsXhdpi,
copyPoiCategories,
downloadWorldMiniBasemap
}
// Legacy core build
import org.apache.tools.ant.taskdefs.condition.Os
task buildOsmAndCore(type: Exec) {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().toString().toLowerCase()
String flavour = "";
if(!tskReqStr.contains("fat")) {
if(tskReqStr.contains("arm64")) {
flavour = flavour.length() == 0 ? "ARM64_ONLY" : ""
}
if(tskReqStr.contains("armv7")) {
flavour = flavour.length() == 0 ? "ARMV7_ONLY" : ""
}
if(tskReqStr.contains("armonly")) {
flavour = flavour.length() == 0 ? "ARM_ONLY" : ""
}
if(tskReqStr.contains("x86")) {
flavour = flavour.length() == 0 ? "X86_ONLY" : ""
}
}
description "Build Legacy OsmAndCore"
if (!Os.isFamily(Os.FAMILY_WINDOWS)) {
if(flavour.length() > 0) {
environment "$flavour", "1"
}
commandLine "bash", file("./old-ndk-build.sh").getAbsolutePath()
} else {
commandLine "cmd", "/c", "echo", "Not supported"
}
}
task cleanupDuplicatesInCore() {
dependsOn buildOsmAndCore
// doesn't work for legacy debug builds
doLast {
file("libc++/armeabi-v7a").mkdirs()
file("libs/armeabi-v7a/libc++_shared.so").renameTo(file("libc++/armeabi-v7a/libc++_shared.so"))
file("libc++/arm64-v8a").mkdirs()
file("libs/arm64-v8a/libc++_shared.so").renameTo(file("libc++/arm64-v8a/libc++_shared.so"))
file("libc++/x86").mkdirs()
file("libs/x86/libc++_shared.so").renameTo(file("libc++/x86/libc++_shared.so"))
file("libc++/x86_64").mkdirs()
file("libs/x86_64/libc++_shared.so").renameTo(file("libc++/x86_64/libc++_shared.so"))
}
}
afterEvaluate { afterEvaluate {
android.applicationVariants.all { variant -> android.applicationVariants.all { variant ->
variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore) variant.javaCompiler.dependsOn(collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore)
@ -462,52 +180,14 @@ afterEvaluate {
} }
} }
task appStart(type: Exec) {
// linux
commandLine 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
// windows
// commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'net.osmand.plus/net.osmand.plus.activities.MapActivity'
}
dependencies { dependencies {
implementation project(path: ':OsmAnd-java', configuration: 'android') openglImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
implementation project(':OsmAnd-api') opengldebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.browser:browser:1.0.0'
implementation 'androidx.preference:preference:1.1.0'
implementation fileTree(include: ['gnu-trove-osmand.jar', 'icu4j-49_1_patched.jar'], dir: 'libs')
implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' opengldebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
implementation 'commons-codec:commons-codec:1.11' opengldebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
implementation 'it.unibo.alice.tuprolog:tuprolog:3.2.1' openglImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
implementation 'org.apache.commons:commons-compress:1.17' openglImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
implementation 'com.moparisthebest:junidecode:0.1.1'
implementation 'org.immutables:gson:2.5.0'
implementation 'com.vividsolutions:jts-core:1.14.0'
implementation 'com.google.openlocationcode:openlocationcode:1.0.4'
implementation 'com.android.billingclient:billing:2.0.3'
// turn off for now
//implementation 'com.atilika.kuromoji:kuromoji-ipadic:0.9.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2'
// JS core
implementation group: 'org.mozilla', name: 'rhino', version: '1.7.9'
// size restrictions
// implementation 'com.ibm.icu:icu4j:50.1'
// implementation 'net.sf.trove4j:trove4j:3.0.3'
qtcoreImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
qtcoredebugImplementation fileTree(include: ['QtAndroid.jar', 'QtAndroidBearer.jar'], dir: 'libs')
legacyImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar"
qtcoredebugImplementation "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar"
qtcoredebugImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
qtcoreImplementation "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar"
qtcoreImplementation "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar"
implementation ("com.getkeepsafe.taptargetview:taptargetview:1.12.0"){ implementation ("com.getkeepsafe.taptargetview:taptargetview:1.12.0"){
exclude group: 'com.android.support' exclude group: 'com.android.support'
} }
@ -521,8 +201,8 @@ dependencies {
implementation 'com.jaredrummler:colorpicker:1.1.0' implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation "org.bouncycastle:bcpkix-jdk15on:1.56" implementation "org.bouncycastle:bcpkix-jdk15on:1.56"
freehuaweiImplementation 'com.huawei.hms:iap:5.0.2.300' huaweiImplementation 'com.huawei.hms:iap:5.0.2.300'
freeGmsImplementation 'com.google.android.gms:play-services-location:17.1.0' gplayFreeImplementation 'com.google.android.gms:play-services-location:17.1.0'
fullGmsImplementation 'com.google.android.gms:play-services-location:17.1.0' gplayFullImplementation 'com.google.android.gms:play-services-location:17.1.0'
} }

View file

@ -12,7 +12,6 @@
<string name="ga_api_key">UA-28342846-2</string> <string name="ga_api_key">UA-28342846-2</string>
<string name="ga_dispatchPeriod">10</string> <string name="ga_dispatchPeriod">10</string>
<string name="ga_debug">true</string> <string name="ga_debug">true</string>
<string name="versionFeatures">+play_market -amazon -blackberry</string>
<string name="openstreetmap_copyright"><a href="https://www.openstreetmap.org/copyright">&#169; OpenStreetMap</a></string> <string name="openstreetmap_copyright"><a href="https://www.openstreetmap.org/copyright">&#169; OpenStreetMap</a></string>
<string name="app_edition"></string> <string name="app_edition"></string>
<string name="support_email">support@osmand.net</string> <string name="support_email">support@osmand.net</string>

View file

@ -54,7 +54,7 @@
<item name="android:windowBackground">@drawable/first_splash_screen_free</item> <item name="android:windowBackground">@drawable/first_splash_screen_free</item>
</style> </style>
<style name="FirstSplashScreenFreeDev" parent="SplashScreenBaseTheme"> <style name="FirstSplashScreenNightlyFree" parent="SplashScreenBaseTheme">
<item name="android:windowBackground">@drawable/first_splash_screen_free_dev</item> <item name="android:windowBackground">@drawable/first_splash_screen_free_dev</item>
</style> </style>

View file

@ -388,7 +388,7 @@ public abstract class OsmandPlugin {
} }
private static boolean updateMarketPlugin(@NonNull OsmandApplication app, @NonNull Set<String> enabledPlugins, @NonNull OsmandPlugin plugin) { private static boolean updateMarketPlugin(@NonNull OsmandApplication app, @NonNull Set<String> enabledPlugins, @NonNull OsmandPlugin plugin) {
boolean marketEnabled = Version.isMarketEnabled(app); boolean marketEnabled = Version.isMarketEnabled();
boolean pckg = plugin.pluginAvailable(app); boolean pckg = plugin.pluginAvailable(app);
boolean paid = plugin.isPaid(); boolean paid = plugin.isPaid();
if ((Version.isDeveloperVersion(app) || !Version.isProductionVersion(app)) && !paid) { if ((Version.isDeveloperVersion(app) || !Version.isProductionVersion(app)) && !paid) {

View file

@ -1,9 +1,10 @@
package net.osmand.plus; package net.osmand.plus;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import androidx.annotation.NonNull;
import net.osmand.plus.inapp.InAppPurchaseHelper; import net.osmand.plus.inapp.InAppPurchaseHelper;
import java.io.File; import java.io.File;
@ -16,26 +17,29 @@ public class Version {
private final String appName; private final String appName;
private final static String FREE_VERSION_NAME = "net.osmand"; private final static String FREE_VERSION_NAME = "net.osmand";
private final static String FREE_DEV_VERSION_NAME = "net.osmand.dev"; private final static String FREE_DEV_VERSION_NAME = "net.osmand.dev";
private final static String FREE_CUSTOM_VERSION_NAME = "net.osmand.freecustom";
private final static String UTM_REF = "&referrer=utm_source%3Dosmand"; private final static String UTM_REF = "&referrer=utm_source%3Dosmand";
public static boolean isGpsStatusEnabled(OsmandApplication ctx) { public static boolean isHuawei() {
return isGooglePlayEnabled(ctx) && !isBlackberry(ctx); return "huawei".contains(getBuildFlavor());
} }
public static boolean isBlackberry(OsmandApplication ctx) { private static boolean isAmazon() {
return ctx.getString(R.string.versionFeatures).contains("+blackberry"); return "amazon".contains(getBuildFlavor());
} }
public static boolean isHuawei(OsmandApplication ctx) { private static String getBuildFlavor() {
return ctx.getPackageName().endsWith(".huawei"); return net.osmand.plus.BuildConfig.FLAVOR;
} }
public static boolean isMarketEnabled(OsmandApplication ctx) { public static boolean isGooglePlayEnabled() {
return isGooglePlayEnabled(ctx) || isAmazonEnabled(ctx); return !isHuawei() && !isAmazon();
} }
public static boolean isGooglePlayInstalled(OsmandApplication ctx) { public static boolean isMarketEnabled() {
return isGooglePlayEnabled() || isAmazon();
}
public static boolean isGooglePlayInstalled(@NonNull OsmandApplication ctx) {
try { try {
ctx.getPackageManager().getPackageInfo("com.android.vending", 0); ctx.getPackageManager().getPackageInfo("com.android.vending", 0);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
@ -44,10 +48,10 @@ public class Version {
return true; return true;
} }
public static String marketPrefix(OsmandApplication ctx) { public static String marketPrefix(@NonNull OsmandApplication ctx) {
if (isAmazonEnabled(ctx)) { if (isAmazon()) {
return "amzn://apps/android?p="; return "amzn://apps/android?p=";
} else if (isGooglePlayEnabled(ctx) && isGooglePlayInstalled(ctx)) { } else if (isGooglePlayEnabled() && isGooglePlayInstalled(ctx)) {
return "market://details?id="; return "market://details?id=";
} }
return "https://osmand.net/apps?id="; return "https://osmand.net/apps?id=";
@ -57,22 +61,11 @@ public class Version {
return marketPrefix(ctx) + appName + UTM_REF; return marketPrefix(ctx) + appName + UTM_REF;
} }
private static boolean isAmazonEnabled(OsmandApplication ctx) {
return ctx.getString(R.string.versionFeatures).contains("+amazon");
}
public static boolean isGooglePlayEnabled(OsmandApplication ctx) {
return ctx.getString(R.string.versionFeatures).contains("+play_market");
}
private Version(OsmandApplication ctx) { private Version(OsmandApplication ctx) {
String appVersion = ""; String appVersion = "";
int versionCode = -1;
try { try {
PackageInfo packageInfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0); PackageInfo packageInfo = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), 0);
appVersion = packageInfo.versionName; //Version suffix ctx.getString(R.string.app_version_suffix) already appended in build.gradle appVersion = packageInfo.versionName; //Version suffix ctx.getString(R.string.app_version_suffix) already appended in build.gradle
versionCode = packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -123,8 +116,7 @@ public class Version {
public static boolean isFreeVersion(OsmandApplication ctx){ public static boolean isFreeVersion(OsmandApplication ctx){
return ctx.getPackageName().equals(FREE_VERSION_NAME) || return ctx.getPackageName().equals(FREE_VERSION_NAME) ||
ctx.getPackageName().equals(FREE_DEV_VERSION_NAME) || ctx.getPackageName().equals(FREE_DEV_VERSION_NAME) ||
ctx.getPackageName().equals(FREE_CUSTOM_VERSION_NAME) || isHuawei();
isHuawei(ctx);
} }
public static boolean isPaidVersion(OsmandApplication ctx) { public static boolean isPaidVersion(OsmandApplication ctx) {

View file

@ -903,7 +903,7 @@ public class MapActivityActions implements DialogProvider {
} }
}).createItem()); }).createItem());
if (Version.isGooglePlayEnabled(app) || Version.isHuawei(app) || Version.isDeveloperVersion(app)) { if (Version.isGooglePlayEnabled() || Version.isHuawei() || Version.isDeveloperVersion(app)) {
optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.osm_live, mapActivity) optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.osm_live, mapActivity)
.setId(DRAWER_OSMAND_LIVE_ID) .setId(DRAWER_OSMAND_LIVE_ID)
.setIcon(R.drawable.ic_action_osm_live) .setIcon(R.drawable.ic_action_osm_live)

View file

@ -5,7 +5,6 @@ import android.app.Activity;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -16,16 +15,12 @@ import androidx.fragment.app.FragmentManager;
import net.osmand.AndroidUtils; import net.osmand.AndroidUtils;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.Version; import net.osmand.plus.Version;
import net.osmand.plus.download.DownloadActivity;
import net.osmand.plus.inapp.InAppPurchaseHelper; import net.osmand.plus.inapp.InAppPurchaseHelper;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseInitCallback; import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseInitCallback;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseListener; import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseListener;
import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseTaskType; import net.osmand.plus.inapp.InAppPurchaseHelper.InAppPurchaseTaskType;
import net.osmand.plus.liveupdates.OsmLiveRestartBottomSheetDialogFragment; import net.osmand.plus.liveupdates.OsmLiveRestartBottomSheetDialogFragment;
import net.osmand.plus.srtmplugin.SRTMPlugin;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -59,7 +54,7 @@ public class OsmandInAppPurchaseActivity extends AppCompatActivity implements In
InAppPurchaseHelper purchaseHelper = app.getInAppPurchaseHelper(); InAppPurchaseHelper purchaseHelper = app.getInAppPurchaseHelper();
if (app.getSettings().isInternetConnectionAvailable() if (app.getSettings().isInternetConnectionAvailable()
&& isInAppPurchaseAllowed() && isInAppPurchaseAllowed()
&& isInAppPurchaseSupported(purchaseHelper)) { && isInAppPurchaseSupported()) {
this.purchaseHelper = purchaseHelper; this.purchaseHelper = purchaseHelper;
} }
} }
@ -160,9 +155,8 @@ public class OsmandInAppPurchaseActivity extends AppCompatActivity implements In
return false; return false;
} }
public boolean isInAppPurchaseSupported(InAppPurchaseHelper purchaseHelper) { public boolean isInAppPurchaseSupported() {
OsmandApplication app = getMyApplication(); return Version.isGooglePlayEnabled() || Version.isHuawei();
return Version.isGooglePlayEnabled(app) || Version.isHuawei(app);
} }
@Override @Override

View file

@ -193,7 +193,7 @@ public class ShareDialog {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
activity.startActivity(intent); activity.startActivity(intent);
} else { } else {
if (Version.isMarketEnabled((OsmandApplication) activity.getApplication())) { if (Version.isMarketEnabled()) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity); AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage(activity.getString(R.string.zxing_barcode_scanner_not_found)); builder.setMessage(activity.getString(R.string.zxing_barcode_scanner_not_found));
builder.setPositiveButton(activity.getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() { builder.setPositiveButton(activity.getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() {

View file

@ -180,7 +180,7 @@ public class StartGPSStatus extends OsmAndAction {
intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.addCategory(Intent.CATEGORY_LAUNCHER);
mapActivity.startActivity(intent); mapActivity.startActivity(intent);
} else { } else {
if (Version.isMarketEnabled(getMyApplication())) { if (Version.isMarketEnabled()) {
AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity); AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity);
builder.setMessage(mapActivity. getString(R.string.gps_status_app_not_found)); builder.setMessage(mapActivity. getString(R.string.gps_status_app_not_found));
builder.setPositiveButton(mapActivity.getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() { builder.setPositiveButton(mapActivity.getString(R.string.shared_string_yes), new DialogInterface.OnClickListener() {

View file

@ -5,8 +5,6 @@ import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
@ -216,7 +214,7 @@ public abstract class ChoosePlanDialogFragment extends BaseOsmAndDialogFragment
infoDescription.setText(getInfoDescription()); infoDescription.setText(getInfoDescription());
} }
TextViewEx planInfoDescription = (TextViewEx) view.findViewById(R.id.plan_info_description); TextViewEx planInfoDescription = (TextViewEx) view.findViewById(R.id.plan_info_description);
planInfoDescription.setText(Version.isHuawei(app) planInfoDescription.setText(Version.isHuawei()
? R.string.osm_live_payment_subscription_management_hw : R.string.osm_live_payment_subscription_management); ? R.string.osm_live_payment_subscription_management_hw : R.string.osm_live_payment_subscription_management);
ViewGroup osmLiveCard = buildOsmLiveCard(ctx, cardsContainer); ViewGroup osmLiveCard = buildOsmLiveCard(ctx, cardsContainer);
if (osmLiveCard != null) { if (osmLiveCard != null) {

View file

@ -71,7 +71,6 @@ public class DevelopmentSettingsFragment extends BaseSettingsFragment {
private void setupSafeModePref() { private void setupSafeModePref() {
SwitchPreferenceEx safeMode = findPreference(settings.SAFE_MODE.getId()); SwitchPreferenceEx safeMode = findPreference(settings.SAFE_MODE.getId());
if (!Version.isBlackberry(app)) {
safeMode.setDescription(getString(R.string.safe_mode_description)); safeMode.setDescription(getString(R.string.safe_mode_description));
safeMode.setIconSpaceReserved(false); safeMode.setIconSpaceReserved(false);
// disable the switch if the library cannot be used // disable the switch if the library cannot be used
@ -79,9 +78,6 @@ public class DevelopmentSettingsFragment extends BaseSettingsFragment {
safeMode.setEnabled(false); safeMode.setEnabled(false);
safeMode.setChecked(true); safeMode.setChecked(true);
} }
} else {
safeMode.setVisible(false);
}
} }
private void setupSimulateYourLocationPref() { private void setupSimulateYourLocationPref() {

View file

@ -108,7 +108,7 @@ public class RateUsBottomSheetDialogFragment extends MenuBottomSheetDialogFragme
public static boolean shouldShow(OsmandApplication app) { public static boolean shouldShow(OsmandApplication app) {
long firstInstalledDays = app.getAppInitializer().getFirstInstalledDays(); long firstInstalledDays = app.getAppInitializer().getFirstInstalledDays();
//Do not show dialog if not google play version or more than 350 days left from the first start //Do not show dialog if not google play version or more than 350 days left from the first start
if (!Version.isGooglePlayEnabled(app) || firstInstalledDays > 350) { if (!Version.isGooglePlayEnabled() || firstInstalledDays > 350) {
return false; return false;
} }
OsmandSettings settings = app.getSettings(); OsmandSettings settings = app.getSettings();

View file

@ -217,7 +217,7 @@ public class DownloadValidationManager {
AlertDialog.Builder msg = new AlertDialog.Builder(getActivity()); AlertDialog.Builder msg = new AlertDialog.Builder(getActivity());
msg.setTitle(R.string.free_version_title); msg.setTitle(R.string.free_version_title);
msg.setMessage(msgTx); msg.setMessage(msgTx);
if (Version.isMarketEnabled(getMyApplication())) { if (Version.isMarketEnabled()) {
msg.setPositiveButton(R.string.install_paid, new DialogInterface.OnClickListener() { msg.setPositiveButton(R.string.install_paid, new DialogInterface.OnClickListener() {
@Override @Override

View file

@ -212,7 +212,7 @@ public abstract class InAppPurchaseHelper {
} }
protected void exec(final @NonNull InAppPurchaseTaskType taskType, final @NonNull InAppCommand command) { protected void exec(final @NonNull InAppPurchaseTaskType taskType, final @NonNull InAppCommand command) {
if (isDeveloperVersion || (!Version.isGooglePlayEnabled(ctx) && !Version.isHuawei(ctx))) { if (isDeveloperVersion || (!Version.isGooglePlayEnabled() && !Version.isHuawei())) {
notifyDismissProgress(taskType); notifyDismissProgress(taskType);
stop(true); stop(true);
return; return;

View file

@ -298,12 +298,9 @@ public class GeneralProfileSettingsFragment extends BaseSettingsFragment impleme
mapEmptyStateAllowedPref.setTitle(getString(R.string.use_trackball)); mapEmptyStateAllowedPref.setTitle(getString(R.string.use_trackball));
mapEmptyStateAllowedPref.setDescription(getString(R.string.use_trackball_descr)); mapEmptyStateAllowedPref.setDescription(getString(R.string.use_trackball_descr));
boolean visible = false;
if (!Version.isBlackberry(app)) {
int nav = getResources().getConfiguration().navigation; int nav = getResources().getConfiguration().navigation;
visible = nav == Configuration.NAVIGATION_DPAD || nav == Configuration.NAVIGATION_TRACKBALL || boolean visible = nav == Configuration.NAVIGATION_DPAD || nav == Configuration.NAVIGATION_TRACKBALL ||
nav == Configuration.NAVIGATION_WHEEL || nav == Configuration.NAVIGATION_UNDEFINED; nav == Configuration.NAVIGATION_WHEEL || nav == Configuration.NAVIGATION_UNDEFINED;
}
mapEmptyStateAllowedPref.setVisible(visible); mapEmptyStateAllowedPref.setVisible(visible);
} }

View file

@ -171,7 +171,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
} }
private void setupNativePublicTransport() { private void setupNativePublicTransport() {
if (!Version.isBlackberry(app)) {
SwitchPreferenceEx setupNativePublicTransport = createSwitchPreferenceEx(settings.PT_SAFE_MODE.getId(), SwitchPreferenceEx setupNativePublicTransport = createSwitchPreferenceEx(settings.PT_SAFE_MODE.getId(),
R.string.use_native_pt, R.layout.preference_with_descr_dialog_and_switch); R.string.use_native_pt, R.layout.preference_with_descr_dialog_and_switch);
setupNativePublicTransport.setDescription(getString(R.string.use_native_pt_desc)); setupNativePublicTransport.setDescription(getString(R.string.use_native_pt_desc));
@ -180,7 +179,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
setupNativePublicTransport.setIconSpaceReserved(true); setupNativePublicTransport.setIconSpaceReserved(true);
getPreferenceScreen().addPreference(setupNativePublicTransport); getPreferenceScreen().addPreference(setupNativePublicTransport);
} }
}
private void setupOsmLiveForRoutingPref() { private void setupOsmLiveForRoutingPref() {
SwitchPreferenceEx useOsmLiveForRouting = createSwitchPreferenceEx(settings.USE_OSM_LIVE_FOR_ROUTING.getId(), SwitchPreferenceEx useOsmLiveForRouting = createSwitchPreferenceEx(settings.USE_OSM_LIVE_FOR_ROUTING.getId(),

View file

@ -97,10 +97,9 @@ public class VoiceAnnouncesFragment extends BaseSettingsFragment implements OnPr
setupArrivalAnnouncementPref(); setupArrivalAnnouncementPref();
setupVoiceProviderPref(); setupVoiceProviderPref();
if (!Version.isBlackberry(app)) {
setupAudioStreamGuidancePref(); setupAudioStreamGuidancePref();
setupInterruptMusicPref(); setupInterruptMusicPref();
}
enableDisablePreferences(!settings.VOICE_MUTE.getModeValue(getSelectedAppMode())); enableDisablePreferences(!settings.VOICE_MUTE.getModeValue(getSelectedAppMode()));
setupSpeakCamerasPref(); setupSpeakCamerasPref();
setupSpeedCamerasAlert(); setupSpeedCamerasAlert();