diff --git a/Android/app/build.gradle b/Android/app/build.gradle index 02285075f..d4b2a8b7b 100644 --- a/Android/app/build.gradle +++ b/Android/app/build.gradle @@ -198,6 +198,9 @@ dependencies { //高德搜索 implementation rootProject.ext.dependencies["amap_search"] implementation rootProject.ext.dependencies["amap_navi"] +// implementation rootProject.ext.dependencies["amap_navi_v810"] +// implementation rootProject.ext.dependencies["amap_navi_v801"] + implementation project(':dokit-amap-api') //腾讯地图定位 // implementation rootProject.ext.dependencies["tencent_location"] // implementation rootProject.ext.dependencies["tencent_map"] diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt index 110938fa0..f68854784 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt @@ -14,6 +14,7 @@ import com.amap.api.navi.model.AMapNaviLocation import com.amap.api.navi.model.NaviLatLng import com.didichuxing.doraemondemo.R import com.didichuxing.doraemondemo.comm.CommBaseFragment +import com.didichuxing.doraemonkit.amap_api.AMapWrap /** * ================================================ @@ -147,8 +148,8 @@ class AMapRouterFragment : CommBaseFragment() { //aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。 // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。 mAmap.isMyLocationEnabled = true - //规划路径 - mAMapNavi = AMapNavi.getInstance(activity?.application) + //AMapWrap 类用于适配高德地图隐私合规接口 + mAMapNavi = AMapWrap.createAMapNavi(activity?.application!!) val startList = mutableListOf() startList.add(mStartPoint) val endList = mutableListOf() @@ -186,4 +187,4 @@ class AMapRouterFragment : CommBaseFragment() { super.onSaveInstanceState(outState) mapView.onSaveInstanceState(outState) } -} \ No newline at end of file +} diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt index 95f03174a..1a7ff1be5 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt @@ -20,7 +20,7 @@ import io.reactivex.disposables.Disposable * 修订历史: * ================================================ */ -class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi, val context: Context) : +class DefaultNaviListener(val mAMap: AMap, private val mAMapNavi: AMapNavi, val context: Context) : AMapNaviListener { // private var mNaviRouteOverlay: NaviRouteOverlay? = null // @@ -197,4 +197,4 @@ class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi, val context: disp!!.dispose() } } -} \ No newline at end of file +} diff --git a/Android/config.gradle b/Android/config.gradle index 2e3cd9327..500149166 100755 --- a/Android/config.gradle +++ b/Android/config.gradle @@ -45,6 +45,8 @@ ext { "annotation" : "androidx.annotation:annotation:1.1.0", "kotlin_v13" : "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${android["kotlin_version_v13"]}", "kotlin_v14" : "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${android["kotlin_version_v14"]}", + "kotlin_junit_v13" : "org.jetbrains.kotlin:kotlin-test-junit:${android["kotlin_version_v13"]}", + "kotlin_junit_v14" : "org.jetbrains.kotlin:kotlin-test-junit:${android["kotlin_version_v14"]}", "coroutines-core_v13" : "org.jetbrains.kotlinx:kotlinx-coroutines-core:${android["kotlinx_coroutines_version_v13"]}", "coroutines-core_v14" : "org.jetbrains.kotlinx:kotlinx-coroutines-core:${android["kotlinx_coroutines_version_v14"]}", "coroutines-android_v13" : "org.jetbrains.kotlinx:kotlinx-coroutines-android:${android["kotlinx_coroutines_version_v13"]}", @@ -134,6 +136,8 @@ ext { "amap_map3d" : 'com.amap.api:map3d:latest.integration', "amap_search" : 'com.amap.api:search:latest.integration', "amap_navi" : 'com.amap.api:navi-3dmap:latest.integration', + "amap_navi_v810" : 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0', + "amap_navi_v801" : 'com.amap.api:navi-3dmap:8.0.1_3dmap8.0.1', //新四地图 "dmap" : 'com.didi.nav.driving:sdk:0.0.2065', //腾讯地图定位 diff --git a/Android/dokit-amap-api/.gitignore b/Android/dokit-amap-api/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/dokit-amap-api/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/dokit-amap-api/build.gradle b/Android/dokit-amap-api/build.gradle new file mode 100644 index 000000000..ea5c991bc --- /dev/null +++ b/Android/dokit-amap-api/build.gradle @@ -0,0 +1,50 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply from: '../upload.gradle' + +android { + compileSdkVersion rootProject.ext.android["compileSdkVersion"] + + defaultConfig { + minSdkVersion rootProject.ext.android["minSdkVersion_16"] + targetSdkVersion rootProject.ext.android["targetSdkVersion"] + versionCode rootProject.ext.android["versionCode"] + versionName rootProject.ext.android["versionName"] + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +} + + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + if (needKotlinV14()) { + implementation rootProject.ext.dependencies["kotlin_v14"] + } else { + implementation rootProject.ext.dependencies["kotlin_v13"] + } + //高德导航 + compileOnly rootProject.ext.dependencies["amap_navi"] + implementation project(':dokit-amap-no-privacy') + implementation project(':dokit-amap-with-privacy') + compileOnly project(':dokit-util') + +} + diff --git a/Android/dokit-amap-api/gradle.properties b/Android/dokit-amap-api/gradle.properties new file mode 100644 index 000000000..c33fc2693 --- /dev/null +++ b/Android/dokit-amap-api/gradle.properties @@ -0,0 +1 @@ +ARTIFACT_ID=dokit-amap-api diff --git a/Android/dokit-amap-api/proguard-rules.pro b/Android/dokit-amap-api/proguard-rules.pro new file mode 100644 index 000000000..fed85b436 --- /dev/null +++ b/Android/dokit-amap-api/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original from file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/dokit-amap-api/src/main/AndroidManifest.xml b/Android/dokit-amap-api/src/main/AndroidManifest.xml new file mode 100644 index 000000000..50b2ecc61 --- /dev/null +++ b/Android/dokit-amap-api/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt b/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt new file mode 100644 index 000000000..8a3e790de --- /dev/null +++ b/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt @@ -0,0 +1,40 @@ +package com.didichuxing.doraemonkit.amap_api + +import android.app.Application +import android.util.Log +import com.amap.api.navi.AMapNavi +import com.didichuxing.doraemonkit.util.VersionUtils + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object AMapWrap { + + const val TAG = "AMapWrap" + + private val isAMapNaviVersionGreaterV810: Boolean by lazy { + val aMapNaviVersion = AMapNavi.getVersion() +// Log.v(TAG, "aMapNaviVersion: $aMapNaviVersion") + //由于个人信息保护法的实施,从8.1.0版本开始,请务必确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口 + val compareResult = VersionUtils.compareVersion(aMapNaviVersion, "8.1.0") +// Log.v(TAG, "compareResult: $compareResult") + compareResult != -1 + } + + fun createAMapNavi(application: Application): AMapNavi { + return if (isAMapNaviVersionGreaterV810) { + AMapWrapWithPrivacy.createAMapNavi(application) + } else { + AMapWrapNoPrivacy.createAMapNavi(application) + } + } + + +} diff --git a/Android/dokit-amap-api/upload.sh b/Android/dokit-amap-api/upload.sh new file mode 100755 index 000000000..c0fd63445 --- /dev/null +++ b/Android/dokit-amap-api/upload.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo -n "please enter bintray userid ->" +read userid_bintray +echo -n "please enter bintray apikey ->" +read apikey_bintray +../gradlew clean build --stacktrace --info bintrayUpload -PbintrayUser=${userid_bintray} -PbintrayKey=${apikey_bintray} -PdryRun=false \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/.gitignore b/Android/dokit-amap-no-privacy/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/dokit-amap-no-privacy/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/build.gradle b/Android/dokit-amap-no-privacy/build.gradle new file mode 100644 index 000000000..81e6d39c4 --- /dev/null +++ b/Android/dokit-amap-no-privacy/build.gradle @@ -0,0 +1,47 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply from: '../upload.gradle' + +android { + compileSdkVersion rootProject.ext.android["compileSdkVersion"] + + defaultConfig { + minSdkVersion rootProject.ext.android["minSdkVersion_16"] + targetSdkVersion rootProject.ext.android["targetSdkVersion"] + versionCode rootProject.ext.android["versionCode"] + versionName rootProject.ext.android["versionName"] + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +} + + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + if (needKotlinV14()) { + implementation rootProject.ext.dependencies["kotlin_v14"] + } else { + implementation rootProject.ext.dependencies["kotlin_v13"] + } + //高德导航 + compileOnly rootProject.ext.dependencies["amap_navi_v801"] + +} + diff --git a/Android/dokit-amap-no-privacy/gradle.properties b/Android/dokit-amap-no-privacy/gradle.properties new file mode 100644 index 000000000..d6a0f703f --- /dev/null +++ b/Android/dokit-amap-no-privacy/gradle.properties @@ -0,0 +1 @@ +ARTIFACT_ID=dokit-amap-no-privacy diff --git a/Android/dokit-amap-no-privacy/proguard-rules.pro b/Android/dokit-amap-no-privacy/proguard-rules.pro new file mode 100644 index 000000000..fed85b436 --- /dev/null +++ b/Android/dokit-amap-no-privacy/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original from file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml b/Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml new file mode 100644 index 000000000..04acf1e8f --- /dev/null +++ b/Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt b/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt new file mode 100644 index 000000000..679295365 --- /dev/null +++ b/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt @@ -0,0 +1,22 @@ +package com.didichuxing.doraemonkit.amap_api + +import android.app.Application +import com.amap.api.navi.AMapNavi + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object AMapWrapNoPrivacy { + + fun createAMapNavi(application: Application): AMapNavi { + return AMapNavi.getInstance(application) + } + +} diff --git a/Android/dokit-amap-no-privacy/upload.sh b/Android/dokit-amap-no-privacy/upload.sh new file mode 100755 index 000000000..c0fd63445 --- /dev/null +++ b/Android/dokit-amap-no-privacy/upload.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo -n "please enter bintray userid ->" +read userid_bintray +echo -n "please enter bintray apikey ->" +read apikey_bintray +../gradlew clean build --stacktrace --info bintrayUpload -PbintrayUser=${userid_bintray} -PbintrayKey=${apikey_bintray} -PdryRun=false \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/.gitignore b/Android/dokit-amap-with-privacy/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/dokit-amap-with-privacy/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/build.gradle b/Android/dokit-amap-with-privacy/build.gradle new file mode 100644 index 000000000..5d3932cb1 --- /dev/null +++ b/Android/dokit-amap-with-privacy/build.gradle @@ -0,0 +1,47 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply from: '../upload.gradle' + +android { + compileSdkVersion rootProject.ext.android["compileSdkVersion"] + + defaultConfig { + minSdkVersion rootProject.ext.android["minSdkVersion_16"] + targetSdkVersion rootProject.ext.android["targetSdkVersion"] + versionCode rootProject.ext.android["versionCode"] + versionName rootProject.ext.android["versionName"] + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +} + + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + if (needKotlinV14()) { + implementation rootProject.ext.dependencies["kotlin_v14"] + } else { + implementation rootProject.ext.dependencies["kotlin_v13"] + } + //高德导航 + compileOnly rootProject.ext.dependencies["amap_navi_v810"] + +} + diff --git a/Android/dokit-amap-with-privacy/gradle.properties b/Android/dokit-amap-with-privacy/gradle.properties new file mode 100644 index 000000000..22f5e7d31 --- /dev/null +++ b/Android/dokit-amap-with-privacy/gradle.properties @@ -0,0 +1 @@ +ARTIFACT_ID=dokit-amap-with-privacy diff --git a/Android/dokit-amap-with-privacy/proguard-rules.pro b/Android/dokit-amap-with-privacy/proguard-rules.pro new file mode 100644 index 000000000..fed85b436 --- /dev/null +++ b/Android/dokit-amap-with-privacy/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original from file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml b/Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml new file mode 100644 index 000000000..68a9ff25e --- /dev/null +++ b/Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt b/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt new file mode 100644 index 000000000..1671f8003 --- /dev/null +++ b/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt @@ -0,0 +1,26 @@ +package com.didichuxing.doraemonkit.amap_api + +import android.app.Application +import com.amap.api.navi.AMapNavi +import com.amap.api.navi.NaviSetting + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object AMapWrapWithPrivacy { + + fun createAMapNavi(application: Application): AMapNavi { + //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 + //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 + NaviSetting.updatePrivacyShow(application, true, true) + NaviSetting.updatePrivacyAgree(application, true) + return AMapNavi.getInstance(application) + } +} diff --git a/Android/dokit-amap-with-privacy/upload.sh b/Android/dokit-amap-with-privacy/upload.sh new file mode 100755 index 000000000..c0fd63445 --- /dev/null +++ b/Android/dokit-amap-with-privacy/upload.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo -n "please enter bintray userid ->" +read userid_bintray +echo -n "please enter bintray apikey ->" +read apikey_bintray +../gradlew clean build --stacktrace --info bintrayUpload -PbintrayUser=${userid_bintray} -PbintrayKey=${apikey_bintray} -PdryRun=false \ No newline at end of file diff --git a/Android/dokit-util/build.gradle b/Android/dokit-util/build.gradle index 4148553b8..0b6418844 100644 --- a/Android/dokit-util/build.gradle +++ b/Android/dokit-util/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' apply from: '../upload.gradle' android { @@ -36,10 +37,14 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + testImplementation rootProject.ext.dependencies["junit"] + androidTestImplementation rootProject.ext.dependencies["junit"] if (needKotlinV14()) { implementation rootProject.ext.dependencies["kotlin_v14"] + testImplementation rootProject.ext.dependencies["kotlin_junit_v14"] } else { implementation rootProject.ext.dependencies["kotlin_v13"] + testImplementation rootProject.ext.dependencies["kotlin_junit_v13"] } implementation rootProject.ext.dependencies["annotation"] implementation rootProject.ext.dependencies["fragment"] diff --git a/Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt b/Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt new file mode 100644 index 000000000..6eed8c2b8 --- /dev/null +++ b/Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt @@ -0,0 +1,67 @@ +package com.didichuxing.doraemonkit.util + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object VersionUtils { + + /** + * Compare two string version + * + * @param version1 + * @param version2 + * @return 0, 1, -1 + * + * 0: version1 = version2 + * 1: version1 > version2 + * -1: version1 < version2 + */ + @JvmStatic + fun compareVersion(version1: String, version2: String): Int { + return Version(version1).compareTo(Version(version2)) + } + + class Version(val version: String) : Comparable { + + init { + require(version.matches("[0-9]+(\\.[0-9]+)*".toRegex())) { "Invalid version format" } + } + + override fun compareTo(other: Version): Int { + if (other.version.isBlank()) return 1 + val thisParts = this.version.split(".").toTypedArray() + val thatParts = other.version.split(".").toTypedArray() + val length = thisParts.size.coerceAtLeast(thatParts.size) + for (i in 0 until length) { + val thisPart = if (i < thisParts.size) thisParts[i].toInt() else 0 + val thatPart = if (i < thatParts.size) thatParts[i].toInt() else 0 + if (thisPart < thatPart) return -1 + if (thisPart > thatPart) return 1 + } + return 0 + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null) return false + return if (this.javaClass != other.javaClass) false + else this.compareTo(other as Version) == 0 + } + + override fun hashCode(): Int { + return version.hashCode() + } + + + } +} + + + diff --git a/Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt b/Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt new file mode 100644 index 000000000..7c6deddc2 --- /dev/null +++ b/Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt @@ -0,0 +1,51 @@ +package com.didichuxing.doraemonkit.util + +import org.junit.Assert +import org.junit.Test +import java.util.* + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +class VersionUtilsTest { + + @Test + fun testCompareVersion() { + val v1 = VersionUtils.Version("1.1") + val v2 = VersionUtils.Version("1.1.1") + val result1 = v1.compareTo(v2) // return -1 (v1 < v2) + Assert.assertEquals(-1, result1) + + val v3 = VersionUtils.Version("2.0") + val v4 = VersionUtils.Version("1.9.9") + val result2 = v3.compareTo(v4) // return -1 (v3 > v4) + Assert.assertEquals(1, result2) + + val v5 = VersionUtils.Version("1.0") + val v6 = VersionUtils.Version("1") + val result3 = v5.compareTo(v6) // return 0 (v5 = v6) + Assert.assertEquals(0, result3) + + val versions: MutableList = ArrayList() + versions.add(VersionUtils.Version("2")) + versions.add(VersionUtils.Version("1.0.5")) + versions.add(VersionUtils.Version("1.01.0")) + versions.add(VersionUtils.Version("1.00.1")) + val min = Collections.min(versions) // return min version + val max = Collections.max(versions) // return max version + Assert.assertEquals(VersionUtils.Version("1.00.1"), min) + Assert.assertEquals(VersionUtils.Version("2"), max) + + // WARNING + val v7 = VersionUtils.Version("2.06") + val v8 = VersionUtils.Version("2.060") + val result5 = v7 == v8 // return false + Assert.assertFalse(result5) + } +} diff --git a/Android/dokit/build.gradle b/Android/dokit/build.gradle index 3494f1ca8..0029301c0 100644 --- a/Android/dokit/build.gradle +++ b/Android/dokit/build.gradle @@ -59,8 +59,8 @@ android { dependencies { //implementation fileTree(include: ['*.jar'], dir: 'libs') //noinspection GradleCompatible - testImplementation 'junit:junit:4.12' - androidTestImplementation 'junit:junit:4.12' + testImplementation rootProject.ext.dependencies["junit"] + androidTestImplementation rootProject.ext.dependencies["junit"] if (needKotlinV14()) { implementation rootProject.ext.dependencies["kotlin_v14"] } else { @@ -122,6 +122,8 @@ dependencies { compileOnly rootProject.ext.dependencies["amap_location"] //高德导航 compileOnly rootProject.ext.dependencies["amap_navi"] + //amap wrap + implementation project(':dokit-amap-api') //腾讯地图定位 compileOnly rootProject.ext.dependencies["tencent_location"] // compileOnly rootProject.ext.dependencies["tencent_map"] diff --git a/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt b/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt index d5a3756f0..ec15e756e 100644 --- a/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt +++ b/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt @@ -13,9 +13,9 @@ import androidx.core.view.children import com.amap.api.navi.AMapNavi import com.didichuxing.doraemonkit.DoKit import com.didichuxing.doraemonkit.R +import com.didichuxing.doraemonkit.amap_api.AMapWrap import com.didichuxing.doraemonkit.kit.core.AbsDokitView import com.didichuxing.doraemonkit.kit.core.DokitViewLayoutParams -import com.didichuxing.doraemonkit.kit.core.DokitViewManager import com.didichuxing.doraemonkit.kit.gpsmock.GpsMockManager import com.didichuxing.doraemonkit.util.ConvertUtils import com.didichuxing.doraemonkit.util.LogHelper @@ -40,7 +40,8 @@ class AMapRealNavMockView : AbsDokitView() { private var mAMapNavi: AMapNavi? = null override fun onCreate(context: Context?) { - mAMapNavi = AMapNavi.getInstance(activity.application) + //AMapWrap 类用于适配高德地图隐私合规接口 + mAMapNavi = AMapWrap.createAMapNavi(activity.application) } override fun onCreateView(context: Context?, rootView: FrameLayout?): View { @@ -157,4 +158,4 @@ class AMapRealNavMockView : AbsDokitView() { } } -} \ No newline at end of file +} diff --git a/Android/settings.gradle b/Android/settings.gradle index a9264e5e9..48dc182cd 100644 --- a/Android/settings.gradle +++ b/Android/settings.gradle @@ -7,6 +7,9 @@ include ':dokit-mc' include ':dokit-okhttp-v3' include ':dokit-okhttp-v4' include ':dokit-okhttp-api' +include ':dokit-amap-no-privacy' +include ':dokit-amap-with-privacy' +include ':dokit-amap-api' include ':dokit-weex' include ':dokit-no-op' include ':dokit-plugin' diff --git a/Android/upload_didi.sh b/Android/upload_didi.sh index 2706fbdec..9df1cdc67 100755 --- a/Android/upload_didi.sh +++ b/Android/upload_didi.sh @@ -20,10 +20,13 @@ RES="\033[0m" ./gradlew :dokit-okhttp-api:publish ./gradlew :dokit-okhttp-v3:publish ./gradlew :dokit-okhttp-v4:publish +./gradlew :dokit-amap-api:publish +./gradlew :dokit-amap-no-privacy:publish +./gradlew :dokit-amap-with-privacy:publish ./gradlew :dokit-plugin:publish ./gradlew :dokit-rpc:publish ./gradlew :dokit-rpc-mc:publish ./gradlew :dokit-util:publish ./gradlew :dokit-weex:publish ./gradlew :dokit-dmap:publish -echo -e "${GREEN_COLOR} 打包上传到滴滴内部仓库完成!!!${RES}" \ No newline at end of file +echo -e "${GREEN_COLOR} 打包上传到滴滴内部仓库完成!!!${RES}" diff --git a/Android/upload_local.sh b/Android/upload_local.sh index 68cb145f8..1822b6fac 100755 --- a/Android/upload_local.sh +++ b/Android/upload_local.sh @@ -19,6 +19,9 @@ RES="\033[0m" ./gradlew :dokit-okhttp-api:publish ./gradlew :dokit-okhttp-v3:publish ./gradlew :dokit-okhttp-v4:publish +./gradlew :dokit-amap-api:publish +./gradlew :dokit-amap-no-privacy:publish +./gradlew :dokit-amap-with-privacy:publish ./gradlew :dokit-plugin:publish ./gradlew :dokit-rpc:publish ./gradlew :dokit-rpc-mc:publish diff --git a/Android/upload_maven.sh b/Android/upload_maven.sh index fd05fe0e0..a6a373320 100755 --- a/Android/upload_maven.sh +++ b/Android/upload_maven.sh @@ -20,9 +20,12 @@ RES="\033[0m" ./gradlew :dokit-okhttp-api:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-okhttp-v3:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-okhttp-v4:publishReleasePublicationToMavenCentralRepository +./gradlew :dokit-amap-api:publishReleasePublicationToMavenCentralRepository +./gradlew :dokit-amap-no-privacy:publishReleasePublicationToMavenCentralRepository +./gradlew :dokit-amap-with-privacy:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-plugin:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-rpc:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-rpc-mc:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-util:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-weex:publishReleasePublicationToMavenCentralRepository -echo -e "${GREEN_COLOR} 打包上传到MavenCenter()仓库完成!!! ${RES}" \ No newline at end of file +echo -e "${GREEN_COLOR} 打包上传到MavenCenter()仓库完成!!! ${RES}"