活动介绍

dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:2.0.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30' implementation 'com.android.support:design:28.0.0' implementation 'com.github.bumptech.glide:glide:4.9.0' implementation 'com.android.support:multidex:1.0.3' //图片/视频选择、预览、编辑与拍照 implementation 'com.contrarywind:Android-PickerView:3.2.7' implementation 'com.github.guoxiaoxing:phoenix:1.0.15' implementation 'cn.yc:YCVideoPlayerLib:2.6.4' implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' //选填 - 图片压缩,开启功能:Phoenix.with().enableCompress(true),获取结果:MediaEntity.getCompressPath() implementation 'com.github.guoxiaoxing:phoenix-compress-picture:1.0.15' implementation 'de.hdodenhof:circleimageview:2.1.0' implementation 'com.zhy:okhttputils:2.6.2' api 'com.just.agentweb:agentweb:4.1.2' // (必选) api 'com.just.agentweb:filechooser:4.1.2' // (可选) api 'com.download.library:Downloader:4.1.2' api 'com.contrarywind:Android-PickerView:3.2.7' api 'com.github.PhilJay:MPAndroidChart:v3.0.0' implementation 'com.imusic.player:video-player:1.0.9' }迁移为新版本

时间: 2025-07-15 08:40:54 AIGC 浏览: 27
<think>嗯,用户的问题是关于如何将Gradle依赖从旧版本迁移到新版本的。他们列出了一堆依赖项,包括fileTree、com.android.support、junit等等。首先,我需要确认每个依赖项的当前状态和最新版本,然后提供升级步骤。不过,用户提到的引用内容似乎和Android依赖管理相关,特别是关于fileTree的使用,但有些引用可能不太相关,比如那个ali1024的开源项目链接,可能是个错误或者过时的信息。 首先,处理fileTree的依赖。用户现在的代码是implementation fileTree(include: ['*.jar'], dir: 'libs'),而引用中提到可以同时包含jar和aar文件,比如引用1、2、4都提到使用*.jar和*.aar。所以可能需要建议用户更新include参数,添加*.aar,但用户的问题是关于迁移到新版本,而fileTree本身可能不需要版本更新,除非他们指的是Gradle插件版本。不过用户的问题可能更多是关于依赖库的版本升级,比如Android Support库迁移到AndroidX,junit到JUnit 5等等。 接下来是com.android.support,这个需要迁移到AndroidX。用户需要将旧的支持库替换为对应的AndroidX包,可能需要使用Android Studio的迁移工具。例如,将com.android.support:appcompat-v7替换为androidx.appcompat:appcompat:1.6.1这样的版本。 对于junit,旧版本可能是junit:junit:4.x,而最新的是4.13.2,但用户可能想升级到JUnit 5,不过Android项目通常还是用JUnit 4,因为JUnit 5需要更多配置。需要确认用户的需求。 Android-PickerView这个库可能需要查看其GitHub仓库的最新版本,比如是否迁移到了Maven Central或新的Group ID。例如,原来的com.bigkoo:pickerview可能还在维护,或者有新的版本号。 phoenix库可能指的是某个图片选择库,需要查找最新版本。YCVideoPlayerLib可能是指YCPlayer或者某个特定的视频播放库,同样需要检查最新版本。 butterknife已经过时了,建议迁移到ViewBinding或DataBinding。但用户可能只是需要升级到最新Butterknife版本,不过要注意与Gradle插件的兼容性。 glide的最新版本是4.16.0,或者可能有更新的,需要确认。multidex在AndroidX中可能有新的依赖方式,比如androidx.multidex:multidex:2.0.1。 circleimageview可能还在维护,最新版本可能是3.1.0或更高。okhttputils可能已经被OkHttp的扩展库替代,或者需要替换为OkHttp本身的依赖,比如com.squareup.okhttp3:okhttp:4.12.0。 agentweb可能更新了Group ID或版本,需要查证。Downloader可能指的是某个特定的下载库,需要明确具体名称。MPAndroidChart的最新版本是3.1.0,或者更高。imusic和video-player可能是指特定库,需要更多信息。 另外,用户提供的引用中有关于fileTree的配置,比如同时包含jar和aar,可能用户需要将现有的fileTree从只包含jar扩展到aar,所以建议修改include参数。但用户的问题主要是依赖库的版本更新,而不是配置方式。 总结步骤:首先处理Android Support到AndroidX的迁移,然后逐个检查每个依赖项的最新版本和可能的替代方案。对于过时的库(如butterknife),建议替代方案。同时,注意Gradle插件版本是否兼容,以及是否需要使用新的仓库如Maven Central而不是jcenter。</think>### Gradle依赖迁移到新版本的分步指南 #### 一、基础依赖格式更新 1. **fileTree依赖**:当前写法可添加`.aar`支持 ```gradle implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) //同时支持JAR/AAR[^1][^2][^4] ``` #### 二、AndroidX迁移(替换旧版Support库) 2. **com.android.support** ```gradle // 旧版 implementation 'com.android.support:appcompat-v7:28.0.0' // 新版AndroidX implementation 'androidx.appcompat:appcompat:1.6.1' ``` #### 三、测试框架升级 3. **JUnit** ```gradle testImplementation 'junit:junit:4.13.2' //最新稳定版 ``` #### 四、第三方库更新建议 4. **Android-PickerView** ```gradle implementation 'com.contrarywind:Android-PickerView:4.1.9' //确认最新版 ``` 5. **ButterKnife迁移** 建议改用官方推荐的View Binding: ```gradle android { viewBinding { enabled = true } } ``` #### 五、媒体相关库 6. **Glide图片加载** ```gradle implementation 'com.github.bumptech.glide:glide:4.16.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' ``` 7. **MPAndroidChart图表** ```gradle implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' ``` #### 六、网络与工具库 8. **OkHttpUtils替换** 建议改用OkHttp原生库: ```gradle implementation 'com.squareup.okhttp3:okhttp:4.12.0' ``` 9. **AgentWeb** ```gradle implementation 'com.github.Justson.AgentWeb:agentweb-core:v5.0.6' ``` #### 完整示例配置 ```gradle dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.multidex:multidex:2.0.1' testImplementation 'junit:junit:4.13.2' implementation 'com.github.bumptech.glide:glide:4.16.0' implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' } ```
阅读全文

相关推荐

apply plugin: 'com.android.application' android { compileSdkVersion 34 defaultConfig { applicationId "com.hik.netsdk.SimpleDemo" minSdkVersion 21 targetSdkVersion 34 versionCode 11 versionName "3.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true multiDexEnabled true ndk { abiFilters "armeabi-v7a","arm64-v8a" } configurations.all { resolutionStrategy { // 强制使用统一版本的 OkHttp force 'com.squareup.okhttp3:okhttp:4.9.1' // 解决可能的冲突 eachDependency { details -> if (details.requested.group == 'com.squareup.okhttp3') { details.useVersion '4.9.1' } } } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { res.srcDirs = [ 'src/main/res', 'src/main/res/layout/DevMgtUI', 'src/main/res/layout/BusinessUI' ] jniLibs.srcDirs = ['libs'] } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildToolsVersion = '28.0.3' } dependencies { implementation files('libs/HCNetSDK.jar') // implementation files('libs/PlayerSDK_hcnetsdk.jar') implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' // 替代 design implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' // 替代 support-v4 testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'io.github.ezviz-open:ezviz-sdk:5.20' // implementation 'com.ezviz:sdk:4.19.5' implementation 'com.ezviz.sdk:ezuikit:2.2.1' // implementation files('libs/PlayerSDK.jar') implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation files('libs/ERTC_Android_SDK_1.5.0.1.aar') // 添加必要支持库 implementation 'com.google.code.gson:gson:2.8.5' // 海康SDK - 确保已添加 // implementation files('libs/hikvision-sdk.jar') implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation "androidx.media3:media3-exoplayer:1.3.1" implementation "androidx.media3:media3-exoplayer-hls:1.3.1" implementation "androidx.media3:media3-ui:1.3.1" implementation "androidx.media3:media3-datasource-okhttp:1.3.1" // 确保添加了基础库 implementation "androidx.media3:media3-common:1.3.1" }检查 build.gradle 文件,确认所有依赖项 移除不必要的 SDK 依赖(特别是旧版 Ezviz SDK)

会是因为Firebase那些依赖问题嘛,下面是我的launcherTemplate.gradle配置: apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' buildscript { // repositories { // google() // mavenCentral() // } repositories { google() mavenCentral() } dependencies { // Must be Android Gradle Plugin 3.6.0 or later. For a list of // compatible Gradle versions refer to: // https://developer.android.com/studio/releases/gradle-plugin // classpath 'com.android.tools.build:gradle:3.6.0' // For Unity2019.4.9, version of gradle:5.1.1, we use:3.4.3 // see https://android-developers.googleblog.com/2020/07/preparing-your-build-for-package-visibility-in-android-11.html // see https://developers.google.com/ar/develop/unity/android-11-build //classpath 'com.android.tools.build:gradle:7.4.2' classpath 'com.google.gms:google-services:4.4.3' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' //classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' } } dependencies { implementation project(':unityLibrary') // api 'com.alibaba:fastjson:1.2.73' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.3.0-alpha02' implementation 'com.google.android.material:material:1.3.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation 'com.android.billingclient:billing:7.0.0' } android { namespace "**NAMESPACE**" ndkPath "**NDKPATH**" compileSdkVersion **APIVERSION** buildToolsVersion '**BUILDTOOLS**' compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } defaultConfig { minSdkVersion **MINSDKVERSION** targetSdkVersion **TARGETSDKVERSION** applicationId '**APPLICATIONID**' ndk { abiFilters **ABIFILTERS** // abiFilters "armeabi-v7a" , "arm64-v8a", "x86" } versionCode **VERSIONCODE** versionName '**VERSIONNAME**' } aaptOptions { noCompress = ['.unity3d', '.ress', '.resource', '.obb', '.bundle', '.unityexp'] + unityStreamingAssets.tokenize(', ') ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" } signingConfigs { release { storeFile file('E:/Jenkins/workspace/girls/samsung/client/girlsumm.keystore') storePassword 'yinhe2077' keyAlias 'yinhe' keyPassword 'yinhe2077' } } lintOptions { abortOnError false } buildTypes { debug { minifyEnabled **MINIFY_DEBUG** // proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG** jniDebuggable true } release { minifyEnabled **MINIFY_RELEASE** // proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG** } }**PACKAGING_OPTIONS****SPLITS** **BUILT_APK_LOCATION** bundle { language { enableSplit = false } density { enableSplit = false } abi { enableSplit = true } } }**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP** task copyStringXML(type: Copy) { from("${project.rootDir}/unityLibrary/unity-android-resources/res/values") { include "**" } into "${project.projectDir}/src/main/res/values" include("${project.projectDir}/src/main/res/values/strings.xml") } preBuild.dependsOn(copyStringXML) task copyGoogleJson { copy { from "${project.rootDir}/../../Assets/Plugins/Android/google-services.json" into "${project.projectDir}/src/main" include("google-services.json") } } preBuild.dependsOn(copyGoogleJson) tasks.whenTaskAdded { task -> if (task.name.startsWith("bundle")) { def renameTaskName = "rename${task.name.capitalize()}Aab" def flavor = task.name.substring("bundle".length()).uncapitalize() tasks.create(renameTaskName, Copy) { def path = "${buildDir}/outputs/bundle/${flavor}/" from(path) include "launcher-release.aab" destinationDir file("${buildDir}/outputs/bundle/${flavor}/") rename "launcher-release.aab", "launcher.aab" } task.finalizedBy(renameTaskName) } } 以下是mainTemplate.gradle: // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN // plugins { // id 'com.android.library' // //id 'com.google.gms.google-services' // 启用 Firebase // //id 'com.google.firebase.crashlytics' // 启用 Crashlytics // } configurations { compileClasspath } apply plugin: 'com.android.library' //**APPLY_PLUGINS** dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation(platform("com.google.firebase:firebase-bom:33.4.0")) implementation "com.google.firebase:firebase-auth" implementation "com.google.firebase:firebase-firestore" // implementation 'com.google.android.gms:play-services-ads:23.3.0' // Android Resolver Dependencies Start implementation 'androidx.appcompat:appcompat:1.3.0-alpha02' // Assets/TradplusSDK/Networks/Android/n40/Editor/Dependencies.xml:8 implementation 'androidx.legacy:legacy-support-v4:1.0.0' // Assets/TradplusSDK/Networks/Android/n40/Editor/Dependencies.xml:6 implementation 'com.android.support:appcompat-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency implementation 'com.android.support:cardview-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency implementation 'com.android.support:customtabs:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency implementation 'com.android.support:support-v4:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency implementation 'com.applovin:applovin-sdk:13.0.0' // Assets/TradplusSDK/Networks/Android/n9/Editor/Dependencies.xml:10 implementation 'com.facebook.android:facebook-applinks:[17.0.0,18)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:6 implementation 'com.facebook.android:facebook-core:[17.0.0,18)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:5 implementation 'com.facebook.android:facebook-gamingservices:[17.0.0,18)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:9 implementation 'com.facebook.android:facebook-login:[17.0.0,18)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:7 implementation 'com.facebook.android:facebook-share:[17.0.0,18)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:8 implementation 'com.google.android.gms:play-services-ads:23.4.0' // Assets/TradplusSDK/Networks/Android/n2/Editor/Dependencies.xml:10 implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0' // Assets/TradplusSDK/Networks/Android/n19/Editor/Dependencies.xml:12 implementation 'com.google.android.gms:play-services-base:18.7.2' // Assets/Firebase/Editor/AppDependencies.xml:17 implementation 'com.google.code.gson:gson:2.8.6' // Assets/TradplusSDK/Networks/Android/n40/Editor/Dependencies.xml:10 implementation 'com.google.firebase:firebase-analytics:23.0.0' // Assets/Firebase/Editor/CrashlyticsDependencies.xml:15 implementation 'com.google.firebase:firebase-app-unity:13.0.0' // Assets/Firebase/Editor/AppDependencies.xml:22 implementation 'com.google.firebase:firebase-common:22.0.0' // Assets/Firebase/Editor/AppDependencies.xml:13 implementation 'com.google.firebase:firebase-crashlytics-ndk:20.0.0' // Assets/Firebase/Editor/CrashlyticsDependencies.xml:13 implementation 'com.google.firebase:firebase-crashlytics-unity:13.0.0' // Assets/Firebase/Editor/CrashlyticsDependencies.xml:20 implementation 'com.pangle.global:ads-sdk:6.2.0.7' // Assets/TradplusSDK/Networks/Android/n19/Editor/Dependencies.xml:14 implementation 'com.parse.bolts:bolts-android:1.4.0' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:4 implementation 'com.tradplusad:tp_exchange:40.12.1.10.1' // Assets/TradplusSDK/Networks/Android/n40/Editor/Dependencies.xml:12 implementation 'com.tradplusad:tradplus:12.7.10.1' // Assets/TradplusSDK/TradplusManager/Editor/TPEditorGradleDependencies.xml:3 implementation 'com.tradplusad:tradplus-applovin:9.12.7.10.1' // Assets/TradplusSDK/Networks/Android/n9/Editor/Dependencies.xml:12 implementation 'com.tradplusad:tradplus-googlex:2.12.7.10.1' // Assets/TradplusSDK/Networks/Android/n2/Editor/Dependencies.xml:12 implementation 'com.tradplusad:tradplus-pangle:19.12.7.10.1' // Assets/TradplusSDK/Networks/Android/n19/Editor/Dependencies.xml:10 implementation 'com.tradplusad:tradplus-unity:5.12.7.10.1' // Assets/TradplusSDK/Networks/Android/n5/Editor/Dependencies.xml:10 implementation 'com.unity3d.ads:unity-ads:4.12.3' // Assets/TradplusSDK/Networks/Android/n5/Editor/Dependencies.xml:12 implementation 'com.unity3d.mediation:mediation-sdk:[1.0,2.0[' // Assets/Editor/MediationAdapterDependencies.xml:8 implementation 'com.unity3d.mediation:unityads-adapter:[1.0,2.0[' // Assets/Editor/MediationAdapterDependencies.xml:10 // Android Resolver Dependencies End **DEPS**} // Android Resolver Exclusions Start android { ndkPath "**NDKPATH**" packagingOptions { exclude ('/lib/armeabi/*' + '*') exclude ('/lib/mips/*' + '*') exclude ('/lib/mips64/*' + '*') exclude ('/lib/x86/*' + '*') exclude ('/lib/x86_64/*' + '*') } } // Android Resolver Exclusions End android { namespace "**NAMESPACE**" compileSdkVersion **APIVERSION** buildToolsVersion '**BUILDTOOLS**' compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } defaultConfig { minSdkVersion **MINSDKVERSION** targetSdkVersion **TARGETSDKVERSION** ndk { abiFilters **ABIFILTERS** } versionCode **VERSIONCODE** versionName '**VERSIONNAME**' consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** } lintOptions { abortOnError false } aaptOptions { noCompress = ['.unity3d', '.ress', '.resource', '.obb', '.bundle', '.unityexp'] + unityStreamingAssets.tokenize(', ') ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" }**PACKAGING_OPTIONS** }**REPOSITORIES****SOURCE_BUILD_SETUP** **EXTERNAL_SOURCES**

build.gradle(project):// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } // 其他仓库 jcenter() maven { url 'https://jitpack.io' } mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' // 对应 Android Studio 2020.3.1 // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { // 添加 Google Maven 仓库 google() // 保留现有仓库 jcenter() maven { url 'https://jitpack.io' } maven { url 'https://www.jitpack.io' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/public' } flatDir { dirs 'app/libs' // 指定 aar 文件位置 } } } task clean(type: Delete) { delete rootProject.buildDir } build.gradle(app):apply plugin: 'com.android.application' android { compileSdkVersion 34 defaultConfig { applicationId "com.hik.netsdk.SimpleDemo" minSdkVersion 21 targetSdkVersion 34 versionCode 11 versionName "3.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true multiDexEnabled true ndk { abiFilters "armeabi-v7a","arm64-v8a" } configurations.all { resolutionStrategy { // 强制使用统一版本的 OkHttp force 'com.squareup.okhttp3:okhttp:4.9.1' // 解决可能的冲突 eachDependency { details -> if (details.requested.group == 'com.squareup.okhttp3') { details.useVersion '4.9.1' } } } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { res.srcDirs = [ 'src/main/res', 'src/main/res/layout/DevMgtUI', 'src/main/res/layout/BusinessUI' ] jniLibs.srcDirs = ['libs'] } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildToolsVersion = '28.0.3' } dependencies { // implementation files('libs/HCNetSDK.jar') // implementation files('libs/PlayerSDK_hcnetsdk.jar') implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' // 替代 design implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' // 替代 support-v4 testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'io.github.ezviz-open:ezviz-sdk:5.20' implementation 'com.ezviz.sdk:ezuikit:2.2.1' // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) // implementation files('libs/ERTC_Android_SDK_1.5.0.1.aar') // 添加必要支持库 implementation 'com.google.code.gson:gson:2.8.5' // 海康SDK - 确保已添加 // implementation files('libs/hikvision-sdk.jar') implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation "androidx.media3:media3-exoplayer:1.3.1" implementation "androidx.media3:media3-exoplayer-hls:1.3.1" implementation "androidx.media3:media3-ui:1.3.1" implementation "androidx.media3:media3-datasource-okhttp:1.3.1" coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' // 确保添加了基础库 implementation "androidx.media3:media3-common:1.3.1" } 依据上述依赖解决rebuild project后的报错:Duplicate class org.MediaPlayer.PlayM4.Player$MP_DECODE_TYPE found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$PRIVATE_RENDER found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$PTZ_PARAM found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$SESSION_INFO found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$SRTRANS_ELEMENT found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$SRTRANS_PARAM found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.Player$TEM_FLAG found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerAdditionalCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerAudioDataCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDecodeCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDecodeCBEx found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDisplayCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerDisplayCBEx found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerEncTypeChgCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerEncryptTypeCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerFECDisplayCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerFileRefCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerHSDetectCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerIVSDrawFunCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerPlayEndCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerPreRecordCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerPreRecordCBEx found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.PlayerCallBack$PlayerRunTimeInfoCB found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.SurfaceCallBack found in modules jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Duplicate class org.MediaPlayer.PlayM4.TimeStruct found in the following modules: jetified-PlayerSDK_hcnetsdk (PlayerSDK_hcnetsdk.jar), jetified-ezviz-sdk-4.9.1.1-runtime (com.ezviz.sdk:ezviz-sdk:4.9.1.1) and jetified-ezviz-sdk-5.20-runtime (io.github.ezviz-open:ezviz-sdk:5.20) Go to the documentation to learn how to Fix dependency resolution errors.

plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "com.example.mapdemo" compileSdk = 33 defaultConfig { applicationId = "com.example.mapdemo" minSdk = 24 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" ndk { abiFilters.add("armeabi-v7a") abiFilters.add("arm64-v8a") } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } sourceSets { main { jniLibs.srcDirs = ['libs'] // 指定.so库路径 jni.srcDirs = [] // 禁用默认NDK编译 } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { // 必须包含这行代码(添加在dependencies闭包内) implementation fileTree(dir: 'libs', include: ['*.jar']) // 如果同时使用远程仓库依赖,需要排除重复库 implementation ('com.baidu.lbsyun:BaiduMapSDK_Map:7.5.6') { exclude group: 'com.android.support'} implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.8.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") }是这样子吗,报错呀

plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "com.example.mapdemo" compileSdk = 33 defaultConfig { applicationId = "com.example.mapdemo" minSdk = 24 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" ndk { abiFilters.add("armeabi-v7a") abiFilters.add("arm64-v8a") } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } sourceSets { main { jniLibs.srcDirs = ['libs'] // 指定.so库路径 jni.srcDirs = [] // 禁用默认NDK编译 } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { // 必须包含这行代码(添加在dependencies闭包内) implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) implementation("com.baidu.lbsyun:BaiduMapSDK_Map:7.5.6") { exclude(group = "com.android.support") // 或改为 androidx 相关组 } implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.8.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") }完整修正建议

ext { //android开发版本配置 android = [ compileSdkVersion : 34, buildToolsVersion : "30.0.3", applicationId : "com.kotei.overseas.navi", minSdkVersion : 28, targetSdkVersion : 28, versionCode : 1, versionName : "1.0", buildNavigateVersion: 1 ] //version配置 versions = [ "support-v4" : "1.0.0", "appcompat-v7" : "1.6.1", "recyclerview-v7" : "1.2.0", "constraintlayout" : "2.1.4", "junit-version" : "4.13.2", "multidex" : "2.0.1", "AndroidAutoSize" : "1.2.1", "hutool-all" : "5.8.1", "SVGAPlayer" : "2.6.1", "protobuf" : "3.8.0", "BaseRecyclerViewAdapterHelper" : "3.0.7", "zip4j" : "2.11.4", "gson" : "2.8.6", "eventbus" : "3.1.1", "annotations" : "15.0", "arouter-api" : "1.5.2", "core-ktx" : "1.12.0", "androidsvg" : "1.4", "guava" : "31.1-android", //test "test-core" : "1.6.1", "test-extJUnit" : "1.2.1", "test-runner" : "1.6.1", "test-espresso-core" : "3.6.1", "test-espresso-contrib" : "3.6.1", "test-truth" : "1.1.3", "test-jacoco" : "0.8.7", "skin-support" : "4.0.5", "skin-support-design" : "4.0.5", "skin-support-cardview" : "4.0.5", "skin-support-constraint-layout": "4.0.5", "viewmodel" : "2.6.0", "livedata" : "2.6.0", "databinding" : "7.0.0", "material" : "1.6.0", "gpx" : "1.0.3", "cardview" : "1.0.0", "fragment" : "1.5.0", "glide" : "4.11.0", "mmkv" : "1.3.4", ] //support配置 support = [ 'support-v4' : "androidx.legacy:legacy-support-v4:${versions["support-v4"]}", 'appcompat-v7' : "androidx.appcompat:appcompat:${versions["appcompat-v7"]}", 'multidex' : "androidx.multidex:multidex:${versions["multidex"]}", 'constraintlayout': "androidx.constraintlayout:constraintlayout:${versions["constraintlayout"]}", 'junit' : "junit:junit:${versions["junit-version"]}", 'recyclerview-v7' : "androidx.recyclerview:recyclerview:${versions["recyclerview-v7"]}", "viewmodel" : "androidx.lifecycle:lifecycle-viewmodel:${versions["viewmodel"]}",// ConstraintLayout 控件支持[可选] "livedata" : "androidx.lifecycle:lifecycle-livedata:${versions["livedata"]}",// ConstraintLayout 控件支持[可选] "databinding" : "androidx.databinding:databinding-runtime:${versions["databinding"]}",// ConstraintLayout 控件支持[可选] "material" : "com.google.android.material:material:${versions["material"]}",// ConstraintLayout 控件支持[可选] "cardview" : "androidx.cardview:cardview:${versions["cardview"]}",// ConstraintLayout 控件支持[可选] "fragment" : "androidx.fragment:fragment:${versions["fragment"]}",// ConstraintLayout 控件支持[可选] ] //依赖第三方配置 dependencies = [ "SVGAPlayer" : "com.github.yyued:SVGAPlayer-Android:${versions["SVGAPlayer"]}", "hutool-all" : "cn.hutool:hutool-all:${versions["hutool-all"]}", "AndroidAutoSize" : "me.jessyan:autosize:${versions["AndroidAutoSize"]}", "protobuf" : "com.google.protobuf:protobuf-javalite:${versions["protobuf"]}", "BaseRecyclerViewAdapterHelper" : "com.github.CymChad:BaseRecyclerViewAdapterHelper:${versions["BaseRecyclerViewAdapterHelper"]}", "zip4j" : "net.lingala.zip4j:zip4j:${versions["zip4j"]}", "gson" : "com.google.code.gson:gson:${versions["gson"]}", "eventbus" : "org.greenrobot:eventbus:${versions["eventbus"]}", "annotations" : "org.jetbrains:annotations:${versions["annotations"]}", "arouter-api" : "com.alibaba:arouter-api:${versions["arouter-api"]}", "core-ktx" : "androidx.core:core-ktx:${versions["core-ktx"]}", "gpx" : "com.codebutchery.android:gpx_lib:${versions["gpx"]}", "androidsvg" : "com.caverock:androidsvg-aar:${versions["androidsvg"]}", "guava" : "com.google.guava:guava:${versions["guava"]}", "skin-support" : "skin.support:skin-support:${versions["skin-support"]}", "skin-support-appcompat" : "skin.support:skin-support-appcompat:${versions["skin-support"]}", "skin-support-design" : "skin.support:skin-support-design:${versions["skin-support-design"]}",// skin-support-design material design 控件支持[可选] "skin-support-cardview" : "skin.support:skin-support-cardview:${versions["skin-support-cardview"]}",//skin-support-cardview CardView 控件支持[可选] "skin-support-constraint-layout": "skin.support:skin-support-constraint-layout:${versions["skin-support-constraint-layout"]}",// ConstraintLayout 控件支持[可选] "glide_compiler" : "com.github.bumptech.glide:compiler:${versions["glide"]}", "glide" : "com.github.bumptech.glide:glide:${versions["glide"]}", "mmkv" : "com.tencent:mmkv:${versions["mmkv"]}", ] } plugins { id 'com.android.application' id 'jacoco' } android { namespace "com.kotei.overseas.navi" compileSdkVersion rootProject.ext.android["compileSdkVersion"] defaultConfig { applicationId "com.kotei.overseas.navi" minSdkVersion rootProject.ext.android["minSdkVersion"] targetSdkVersion rootProject.ext.android["targetSdkVersion"] versionCode 1 versionName "S3_Naviapp_V0.8.4.0819_${releaseTime()}" //versionName "M18_Naviapp_V0.8.4.0819_${releaseTime()}" multiDexEnabled true manifestPlaceholders = [ useSystemUid: project.properties["USE_SYSTEM_UID"] == "true" ? "android.uid.system" : "" ] } signingConfigs { releaseConfig { keyAlias 'platform' keyPassword 'android' storeFile file(rootDir.getAbsolutePath() + '/KeyStore/kotei_navi.jks') storePassword 'android' v1SigningEnabled true v2SigningEnabled true } debugConfig { keyAlias 'platform' keyPassword 'android' storeFile file(rootDir.getAbsolutePath() + '/KeyStore/kotei_navi.jks') storePassword 'android' v1SigningEnabled true v2SigningEnabled true } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } sourceSets { main { res.srcDirs = ['src/main/res' ] java.srcDirs = ['src/main/java', 'src/main/javaGson'] // 直接移除 androidTest 的源码目录 androidTest { java.srcDirs = [] } } } buildFeatures { aidl true dataBinding true buildConfig true } buildTypes { def buildConfigCommon = { type -> def currentVersionName = android.defaultConfig.versionName type.buildConfigField("String", "VERSION_INFO", "\"${type.name.toUpperCase()}; ${currentVersionName}; \"") // 日志模式配置 def logMode = type.name == "debug" ? 1 : 28 // debug模式=1,其他=28 type.buildConfigField("int", "LOG_MODE", "${logMode}") } release { ndk { abiFilters 'arm64-v8a' // 正式包只保留64位 } minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.releaseConfig buildConfigCommon(it) buildConfigField "String", "BUILD_TYPE", "\"release\"" } debug { //testCoverageEnabled true signingConfig signingConfigs.debugConfig buildConfigCommon(it) versionNameSuffix "-debug" buildConfigField "String", "BUILD_TYPE", "\"debug\"" } } android.applicationVariants.all { variant -> variant.outputs.all { //这里修改apk文件名 def buildType = variant.buildType.name def suffix = buildType == "debug" ? "debug" : "release" // 根据构建类型添加后缀 outputFileName = "${getAppName().replace(' ', '_')}_${suffix}_${releaseLongTime()}.apk" } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation "androidx.viewpager2:viewpager2:1.0.0" // implementation 'net.lingala.zip4j:zip4j:1.8.0' implementation 'net.lingala.zip4j:zip4j:2.9.1' // ✅ JDK 17+ 兼容版本 api rootProject.ext.dependencies["gson"] implementation rootProject.ext.support["appcompat-v7"] implementation rootProject.ext.support["viewmodel"] implementation rootProject.ext.support["livedata"] implementation rootProject.ext.support["databinding"] implementation rootProject.ext.support["material"] implementation rootProject.ext.support["fragment"] implementation rootProject.ext.dependencies["hutool-all"] implementation rootProject.ext.dependencies["mmkv"] implementation rootProject.ext.dependencies["AndroidAutoSize"] implementation rootProject.ext.dependencies["annotations"] implementation rootProject.ext.dependencies["eventbus"] implementation 'com.google.ar.sceneform:filament-android:1.17.1' annotationProcessor rootProject.ext.dependencies["glide_compiler"] implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' api 'com.github.bumptech.glide:glide:4.11.0' api 'com.google.zxing:core:3.3.0' implementation project(':sdk_here_navigate') if (getLocalProperty("isSdkModuleUiS31a", true)) { implementation(project(":sdk_module_uiskin")) implementation project(':sdk_module_ui_s31a') } if (getLocalProperty("isSdkModuleDistribute", true)) { implementation project(':sdk_module_distribute') } implementation project(':sdk_external_Interface') implementation rootProject.ext.dependencies["androidsvg"] implementation rootProject.ext.dependencies["core-ktx"] implementation rootProject.ext.dependencies["skin-support"] implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3" // Latest stable //协程 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3" // For Android //协程 implementation rootProject.ext.dependencies["guava"] implementation 'org.bouncycastle:bcprov-jdk15on:1.70' implementation 'org.bouncycastle:bcpkix-jdk15on:1.70' implementation 'com.squareup.okhttp3:okhttp:4.9.3' testImplementation rootProject.ext.support["junit"]; androidTestImplementation "androidx.test:core:" + rootProject.versions["test-core"]; androidTestImplementation "androidx.test.ext:junit:" + rootProject.versions["test-extJUnit"]; androidTestImplementation "androidx.test:runner:" + rootProject.versions["test-runner"]; androidTestImplementation "androidx.test.espresso:espresso-core:" + rootProject.versions["test-espresso-core"]; androidTestImplementation "androidx.test.espresso:espresso-contrib:" + rootProject.versions["test-espresso-contrib"]; androidTestImplementation "com.google.truth:truth:" + rootProject.versions["test-truth"]; } /** * 从根目录下的 local.properties 中提取指定的属性,若无则返回默认值 */ def getLocalProperty(String keyName, Object defaultValue) { File file = rootProject.file("local.properties") if (!file.exists() || keyName == null || keyName.length() == 0) { print("指定文件(local.properties)或者属性 $keyName 不存在") return defaultValue } InputStream inputStream = file.newDataInputStream() Properties properties = new Properties() properties.load(inputStream) def localKeys = properties.keys() for (String propertyName : localKeys) { if (keyName != propertyName) { continue } def localPropertyValue = properties.getProperty(keyName) if (defaultValue instanceof Integer) { return Integer.parseInt(localPropertyValue) } else if (defaultValue instanceof Double) { return Double.parseDouble(localPropertyValue) } else if (defaultValue instanceof Boolean) { return Boolean.parseBoolean(localPropertyValue) } else if (defaultValue instanceof String) { return localPropertyValue } else { println("未知类型属性$propertyName,请检查后重试") } } println("获取 $keyName 失败,返回默认值: $defaultValue") return defaultValue } /** * 更新项目根目录下 local.properties 的属性值 */ def updateLocalProperty(String keyName, String value) { def comment = """ ## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. """ println("updateLocalProperty with: $keyName=$value") File file = rootProject.file("local.properties") if (!file.exists()) { file.createNewFile() } if (keyName == null || keyName.length() == 0) { println("指定文件(local.properties)或者属性 $keyName 不存在,设置属性失败") return } InputStream inputStream = file.newDataInputStream() Properties properties = new Properties() properties.load(inputStream) properties.setProperty(keyName, value) properties.store(file.newWriter(), comment) } static def getGitCommitDate() { Date date = new Date(); String formattedDate = date.format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("UTC")); println("getGitCommitDate -> " + formattedDate) return formattedDate } static def getVersionName() { return versionName; } static def getAppName() { return "M18 Naviapp" //return "S31 Naviapp"; } def static releaseLongTime() { return new Date().format("yyyyMMdd_HHmmss", TimeZone.getTimeZone("Asia/Shanghai")) + "_CN" } def static releaseTime() { return new Date().format("MMddHHmm", TimeZone.getTimeZone("Asia/Shanghai")) }

plugins { id 'com.android.application' id 'jacoco' } android { namespace "com.kotei.overseas.navi" compileSdkVersion rootProject.ext.android["compileSdkVersion"] defaultConfig { applicationId "com.kotei.overseas.navi" minSdkVersion rootProject.ext.android["minSdkVersion"] targetSdkVersion rootProject.ext.android["targetSdkVersion"] versionCode 1 versionName "S3_Naviapp_V0.8.4.0819_${releaseTime()}" //versionName "M18_Naviapp_V0.8.4.0819_${releaseTime()}" multiDexEnabled true manifestPlaceholders = [ useSystemUid: project.properties["USE_SYSTEM_UID"] == "true" ? "android.uid.system" : "" ] } signingConfigs { releaseConfig { keyAlias 'platform' keyPassword 'android' storeFile file(rootDir.getAbsolutePath() + '/KeyStore/kotei_navi.jks') storePassword 'android' v1SigningEnabled true v2SigningEnabled true } debugConfig { keyAlias 'platform' keyPassword 'android' storeFile file(rootDir.getAbsolutePath() + '/KeyStore/kotei_navi.jks') storePassword 'android' v1SigningEnabled true v2SigningEnabled true } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } sourceSets { main { res.srcDirs = ['src/main/res' ] java.srcDirs = ['src/main/java', 'src/main/javaGson'] // 直接移除 androidTest 的源码目录 androidTest { java.srcDirs = [] } } } buildFeatures { aidl true dataBinding true buildConfig true } buildTypes { def buildConfigCommon = { type -> def currentVersionName = android.defaultConfig.versionName type.buildConfigField("String", "VERSION_INFO", "\"${type.name.toUpperCase()}; ${currentVersionName}; \"") // 日志模式配置 def logMode = type.name == "debug" ? 1 : 28 // debug模式=1,其他=28 type.buildConfigField("int", "LOG_MODE", "${logMode}") } release { ndk { abiFilters 'arm64-v8a' // 正式包只保留64位 } minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.releaseConfig buildConfigCommon(it) buildConfigField "String", "BUILD_TYPE", "\"release\"" } debug { //testCoverageEnabled true signingConfig signingConfigs.debugConfig buildConfigCommon(it) versionNameSuffix "-debug" buildConfigField "String", "BUILD_TYPE", "\"debug\"" } } android.applicationVariants.all { variant -> variant.outputs.all { //这里修改apk文件名 def buildType = variant.buildType.name def suffix = buildType == "debug" ? "debug" : "release" // 根据构建类型添加后缀 outputFileName = "${getAppName().replace(' ', '_')}_${suffix}_${releaseLongTime()}.apk" } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation "androidx.viewpager2:viewpager2:1.0.0" implementation 'net.lingala.zip4j:zip4j:1.8.0' api rootProject.ext.dependencies["gson"] implementation rootProject.ext.support["appcompat-v7"] implementation rootProject.ext.support["viewmodel"] implementation rootProject.ext.support["livedata"] implementation rootProject.ext.support["databinding"] implementation rootProject.ext.support["material"] implementation rootProject.ext.support["fragment"] implementation rootProject.ext.dependencies["hutool-all"] implementation rootProject.ext.dependencies["mmkv"] implementation rootProject.ext.dependencies["AndroidAutoSize"] implementation rootProject.ext.dependencies["annotations"] implementation rootProject.ext.dependencies["eventbus"] implementation 'com.google.ar.sceneform:filament-android:1.17.1' annotationProcessor rootProject.ext.dependencies["glide_compiler"] implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' api 'com.github.bumptech.glide:glide:4.11.0' api 'com.google.zxing:core:3.3.0' implementation project(':sdk_here_navigate') if (getLocalProperty("isSdkModuleUiS31a", true)) { implementation(project(":sdk_module_uiskin")) implementation project(':sdk_module_ui_s31a') } if (getLocalProperty("isSdkModuleDistribute", true)) { implementation project(':sdk_module_distribute') } implementation project(':sdk_external_Interface') implementation rootProject.ext.dependencies["androidsvg"] implementation rootProject.ext.dependencies["core-ktx"] implementation rootProject.ext.dependencies["skin-support"] implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3" // Latest stable //协程 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3" // For Android //协程 implementation rootProject.ext.dependencies["guava"] implementation 'org.bouncycastle:bcprov-jdk15on:1.70' implementation 'org.bouncycastle:bcpkix-jdk15on:1.70' implementation 'com.squareup.okhttp3:okhttp:4.9.3' testImplementation rootProject.ext.support["junit"]; androidTestImplementation "androidx.test:core:" + rootProject.versions["test-core"]; androidTestImplementation "androidx.test.ext:junit:" + rootProject.versions["test-extJUnit"]; androidTestImplementation "androidx.test:runner:" + rootProject.versions["test-runner"]; androidTestImplementation "androidx.test.espresso:espresso-core:" + rootProject.versions["test-espresso-core"]; androidTestImplementation "androidx.test.espresso:espresso-contrib:" + rootProject.versions["test-espresso-contrib"]; androidTestImplementation "com.google.truth:truth:" + rootProject.versions["test-truth"]; } /** * 从根目录下的 local.properties 中提取指定的属性,若无则返回默认值 */ def getLocalProperty(String keyName, Object defaultValue) { File file = rootProject.file("local.properties") if (!file.exists() || keyName == null || keyName.length() == 0) { print("指定文件(local.properties)或者属性 $keyName 不存在") return defaultValue } InputStream inputStream = file.newDataInputStream() Properties properties = new Properties() properties.load(inputStream) def localKeys = properties.keys() for (String propertyName : localKeys) { if (keyName != propertyName) { continue } def localPropertyValue = properties.getProperty(keyName) if (defaultValue instanceof Integer) { return Integer.parseInt(localPropertyValue) } else if (defaultValue instanceof Double) { return Double.parseDouble(localPropertyValue) } else if (defaultValue instanceof Boolean) { return Boolean.parseBoolean(localPropertyValue) } else if (defaultValue instanceof String) { return localPropertyValue } else { println("未知类型属性$propertyName,请检查后重试") } } println("获取 $keyName 失败,返回默认值: $defaultValue") return defaultValue } /** * 更新项目根目录下 local.properties 的属性值 */ def updateLocalProperty(String keyName, String value) { def comment = """ ## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. """ println("updateLocalProperty with: $keyName=$value") File file = rootProject.file("local.properties") if (!file.exists()) { file.createNewFile() } if (keyName == null || keyName.length() == 0) { println("指定文件(local.properties)或者属性 $keyName 不存在,设置属性失败") return } InputStream inputStream = file.newDataInputStream() Properties properties = new Properties() properties.load(inputStream) properties.setProperty(keyName, value) properties.store(file.newWriter(), comment) } static def getGitCommitDate() { Date date = new Date(); String formattedDate = date.format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("UTC")); println("getGitCommitDate -> " + formattedDate) return formattedDate } static def getVersionName() { return versionName; } static def getAppName() { return "M18 Naviapp" //return "S31 Naviapp"; } def static releaseLongTime() { return new Date().format("yyyyMMdd_HHmmss", TimeZone.getTimeZone("Asia/Shanghai")) + "_CN" } def static releaseTime() { return new Date().format("MMddHHmm", TimeZone.getTimeZone("Asia/Shanghai")) }

最新推荐

recommend-type

电流三段式保护与后加速重合闸在Matlab Simulink中的仿真研究:模拟不同位置故障下断路器的动作及故障电流分析

内容概要:本文探讨了电流三段式保护与后加速重合闸在电力系统中的应用,利用MATLAB/Simulink建立了详细的仿真模型。通过对模拟线路50%和90%处发生的瞬时性、永久性故障以及下级线路开关拒动情况进行建模,展示了不同故障条件下断路器的动作行为及其对电力系统的影响。研究表明,这种仿真方法能够帮助更好地理解和优化电流保护机制,从而提升电力系统的安全性和稳定性。 适合人群:从事电力系统设计、维护的技术人员,以及对电力系统保护机制感兴趣的科研人员。 使用场景及目标:适用于电力系统故障分析、保护装置性能评估、电网规划等领域。目标是通过仿真实验验证电流三段式保护与后加速重合闸的有效性,为实际工程应用提供理论依据和技术支持。 其他说明:文中详细介绍了电流三段式保护的具体构成(过载保护、短延时保护和瞬时速断保护),并通过具体案例演示了后加速重合闸的操作流程。此外,还讨论了下级线路开关拒动时的应对策略,强调了多层级保护机制的重要性。
recommend-type

注浆渗流球形结果解析 · 多孔介质

内容概要:本文详细探讨了利用COMSOL Multiphysics软件模拟注浆渗流过程中的球形结果。首先介绍了COMSOL作为一种强大的多物理场仿真工具,在多个领域的广泛应用背景。然后具体讲解了注浆技术在建筑和土木工程中的重要性,特别是注浆液在多孔介质中的流动行为。文章进一步解释了球形结果产生的原因,包括物理模型的设置、材料属性的选择、参数的合理性(如渗透率、孔隙率)以及边界条件的设定。最后,强调了球形结果形成的物理机制,即流体在多孔介质中的稳定分布状态,并指出通过调整流体的物理性质可以影响其流动和分布情况。 适合人群:从事建筑、土木工程及相关领域的研究人员和技术人员,尤其是那些需要借助仿真工具优化注浆工艺的人群。 使用场景及目标:适用于希望深入了解注浆渗流机理的研究人员,以及希望通过仿真手段提高工程设计精度的技术人员。目标是掌握COMSOL在注浆渗流模拟中的应用方法,从而为实际工程项目提供技术支持。 其他说明:文章不仅提供了理论分析,还涉及具体的建模步骤和参数选择,有助于读者将理论应用于实践。同时,通过对不同参数的敏感性分析,可以帮助读者更好地理解各因素对注浆渗流行为的影响。
recommend-type

8-项目质量控制.doc

8-项目质量控制.doc
recommend-type

C中Actor模型的开源实现_An Open Source Implementation of the Actor Mo

C中Actor模型的开源实现_An Open Source Implementation of the Actor Model in C++.zip
recommend-type

孤岛模式下双台逆变器下垂控制:实现电网频率与电压有效值稳定维持在50.15-50.18Hz和380V左右 - 逆变器 (2025年)

内容概要:本文深入探讨了孤岛模式下双台逆变器下垂控制技术的应用与优化。孤岛模式是指电网发生故障或停电时,局部电网独立运行的状态。在这种状态下,电网频率(50.15-50.18Hz)和电压有效值(约380V)的稳定至关重要。双台逆变器下垂控制通过模拟传统同步发电机的机械特性,使逆变器输出功率时产生与输出功率成比例的电压降,从而实现对电网频率和电压的有效控制。文中还介绍了逆变器选型与配置、下垂系数设定以及实时监控与调整的具体实施策略,并提出了通过先进控制算法和智能控制系统来优化这一技术的可能性。 适合人群:从事电力系统研究、设计和运维的技术人员,尤其是关注孤岛模式下电力供应稳定性的专业人士。 使用场景及目标:适用于需要确保电网在孤岛模式下稳定运行的场合,如偏远地区、应急电源系统等。主要目标是通过双台逆变器下垂控制技术,确保电网频率和电压在规定范围内,保障电力系统的安全和高效运行。 其他说明:本文不仅提供了理论依据,还给出了具体的实施策略和技术优化方向,有助于提升电力系统的可靠性和能效比。
recommend-type

清华大学袁春与华为李航合著的统计学习课件

统计学习方法是机器学习领域的重要分支,它将统计学的原理和方法应用在数据分析和模型构建上,尤其适用于解决那些不确定性和复杂性的数据问题。在本次分享的课件中,袁春和李航作为来自清华大学深圳研究生院和华为诺亚方舟实验室的专家,将为我们展示统计学习方法的理论与实践。 课件内容可能涵盖了以下几个主要知识点: 1. 统计学习的基本概念:首先,课件可能会介绍统计学习的定义,包括它是如何从统计学中独立出来,并与机器学习相结合,形成一套独立的理论体系的。同时,解释统计学习的核心思想,即利用数据来发现知识,并构建预测模型。 2. 常见统计学习模型:课程内容可能会包括线性回归、逻辑回归、决策树、随机森林、支持向量机(SVM)、神经网络等模型,这些模型是统计学习方法中经常使用到的。对于每一种模型,课件可能会详细讲解其数学原理、优缺点、适用场景以及如何在实际中应用。 3. 模型评估与选择:统计学习中的模型评估是确保模型性能和泛化能力的关键。课件可能会介绍交叉验证、AIC、BIC、ROC曲线、混淆矩阵等评估指标和方法。此外,还会讲解如何根据业务需求和评估结果选择合适的模型。 4. 正则化与模型优化:为防止过拟合,提升模型的泛化能力,统计学习方法中常常使用正则化技术。课件可能会涉及L1和L2正则化、岭回归(Ridge Regression)、套索回归(Lasso Regression)等技术,并展示如何通过正则化调整模型复杂度。 5. 统计学习在机器学习中的应用:统计学习方法不仅仅是一个理论体系,它在实际中也有广泛应用。例如,金融风险评估、生物信息学、推荐系统、自然语言处理等领域,课件可能会选取一些实际案例来说明统计学习方法的应用。 6. 统计学习前沿发展:课件可能会介绍统计学习领域的最新研究动态,包括最新算法的提出、统计学习与深度学习的结合等。 7. 课件中的实践操作:通常在理论学习之后,都会有实际操作环节,这可能包括使用R、Python等数据分析工具进行数据处理和模型构建。通过实际数据操作,学生可以更加深刻地理解统计学习方法的应用。 8. 与传统统计方法的区别:尽管统计学习方法和传统统计方法在很多方面是相通的,但它们在处理大数据、复杂数据结构以及预测模型构建方面存在明显差异。课件可能会明确指出这些差异,并突出统计学习方法的优势。 以上内容是根据标题、描述、标签以及文件名称列表推测的课件可能包含的知识点。学习这些内容,不仅能帮助学生掌握统计学习方法,而且能为学生在未来从事相关领域的工作和研究打下坚实的基础。
recommend-type

概率空间中的监督分类与文档分类方法探索

### 概率空间中的监督分类与文档分类方法探索 #### 1. 监督分类概述 在文档分类中,监督分类方法具有重要地位。这里主要聚焦于统计方法中的似然比方法。该方法通过不同类别依赖的统计模型来估计给定文档的概率,并利用这些概率的比率确定文档最可能所属的类别。 #### 2. 似然比框架 对于一个给定数据集划分为两个互斥类别A和B的情况,根据贝叶斯规则,给定观察文档D时每个类别的发生概率可表示为: - \(p(A|D) = p(D|A)× p(A)/p(D)\) (11.32a) - \(p(B|D) = p(D|B)× p(B)/p(D)\) (11.32b) 两式相除可得: \(p(
recommend-type

永磁同步电机矢量控制PID闭环函数

在永磁同步电机矢量控制中,PID(比例 - 积分 - 微分)控制器是常用的闭环控制方法,用于调节电机的各种参数,如电流、速度和位置等。以下是不同控制环中PID闭环函数的详细介绍: ### 电流环PID闭环函数 电流环主要用于控制电机的定子电流,通常分为直轴($d$轴)和交轴($q$轴)电流控制。PID控制器的输出是电压指令,用于控制逆变器的输出电压。 PID控制器的一般公式为: $$u(t) = K_p e(t) + K_i \int_{0}^{t} e(\tau) d\tau + K_d \frac{de(t)}{dt}$$ 在离散系统中,PID控制器的公式可以表示为: $$u(k)
recommend-type

GitHub新手入门:创建并发布您的第一个网站

标题所指的"emvillanueva.github.io"是一个网站地址,该地址使用GitHub Pages服务创建,它是GitHub提供的一项功能,允许开发者直接通过GitHub托管和发布静态网站。这一服务特别受那些希望简化网站部署流程的开发者欢迎,因为它无需传统服务器配置即可将网站上线。 从描述中,我们可以了解到几个关键知识点: 1. GitHub是一个为数百万开发人员共用的代码托管平台,支持版本控制和协作。它广泛用于开源项目,同时也有私有项目的服务,为开发人员提供了代码仓库、问题追踪、代码审查以及一系列其他功能。 2. GitHub Pages是GitHub提供的静态网站托管服务,允许用户通过特定的仓库来发布网站。用户可以通过简单地推送HTML、CSS、JavaScript文件到指定的分支(通常是master或main分支),而GitHub Pages将会自动发布这些文件到一个由GitHub分配的URL上。 3. 在GitHub中,"仓库"(repository)相当于项目的虚拟文件夹或容器,它包含项目的全部文件,包括源代码、文档、图像、数据等。此外,仓库还负责记录所有文件的更改历史,以及对这些文件进行版本控制。这种变更追踪机制意味着开发人员可以回滚到任何之前的状态,便于错误修复和版本迭代。 4. 在上述描述中,提到的一个项目仓库里包含三个关键文件:HTML文件、CSS文件和README文件。这些文件共同构成一个基本的网站结构: - HTML文件是网页的骨架,负责定义网页的结构和内容; - CSS文件负责网页的样式,包括颜色、字体以及其他视觉表现形式; - README文件通常用来描述项目的信息,例如项目的目的、使用说明和作者信息等。它通常以纯文本格式编写,但也可以用Markdown格式,以便于排版和展现更丰富的文档信息。 5. 描述中还提到了“JavaScript”,这是一种广泛应用于网页开发的编程语言,负责实现网页上的交互性和动态效果。虽然在这个上下文中并未明确指出JavaScript文件,但考虑到一个功能齐全的网站通常需要JavaScript来增加其功能性,因此可以推测仓库中可能还包含一个或多个JavaScript文件。 标签“JavaScript”强调了这一语言在现代网页开发中的重要性。它常用于网页的客户端脚本,可以操作文档对象模型(DOM),处理用户输入,制作动画效果,发送和接受服务器数据等。 压缩包子文件的文件名称列表中提到的"emvillanueva.github.io-master",意味着存在一个GitHub项目仓库的压缩包文件。通常,这种文件可以用来备份或传输仓库内容。在GitHub上,"master"或"main"分支是默认的主分支,存放着项目的最新稳定代码。 总结上述知识点,我们可以了解GitHub Pages服务的使用方法和优势、仓库的概念、文件类型对网站构成的重要性以及JavaScript在网页开发中的核心作用。这对于任何希望开始使用GitHub进行项目协作和网站发布的IT专业人士或爱好者都是非常重要的基础概念。
recommend-type

电影评论内容的极性分析与信息提取

### 电影评论内容的极性分析与信息提取 #### 1. 极性分析结论与方法概述 从相关结果中我们可以得出一些重要结论。首先,利用基于词频和分布的数学模型,特别是这里使用的向量空间模型方法,确实能够区分有观点内容的极性。而且,模型生成的面向领域和面向极性的表示维度的判别能力似乎相互独立。此外,结果还表明,至少对于本节所考虑的特定类型文本数据,极性判别比领域判别更具挑战性。 在极性估计方面,分析有观点内容的重要任务包括极性检测、强度估计、主观性检测和情感测量。这里我们主要关注前两项任务。极性检测是识别正负两个极性类别,而强度估计则是衡量给定内容的正负程度。从统计角度来看,我们采用基于似然比方