android studio how to delete module

本文介绍如何在Android Studio中删除不需要的模块。通过右键点击目标模块,在设置中选择移除选项,然后确认删除操作。此外,还可以直接编辑.modules文件来移除模块。

1 首先右键你要删除的Module。



2 我们往下看找到open module settings




3 接着我们点击那个“-”号,remove module


4 删除后,记得点击最下方的ok退出该页,接着我们再右键要删除的项目,这时如果还发现有Delete了,关闭android-studio,重新打开android-studio,会发现你要删除的项目已经没有被加粗了,这个时候选中右键就会看到delete键,删除它即可。


【注意】

刚刚发现一个更简单的方法:

Open the .idea/modules.xml, and delete you module, then right click on you module, you can see Delete...

   



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.
最新发布
06-23
<think>根据提供的两个build.gradle文件,问题在于项目同时引入了两个不同版本的萤石云SDK(ezviz-sdk:4.9.1.1和ezviz-sdk:5.20),导致类重复。从app的build.gradle中可以看到,我们引入了`io.github.ezviz-open:ezviz-sdk:5.20`,但是可能由于传递依赖,旧版本4.9.1.1也被引入了。解决方案:1.排除旧版本依赖:在引入ezviz-sdk:5.20时排除旧版本。2.强制使用统一版本:在项目配置中强制所有依赖使用新版本。3.使用packagingOptions排除重复类(如果上述方法无效,但通常不推荐,因为根本问题在于依赖冲突)。具体步骤:在app的build.gradle中修改dependencies部分,排除旧版本的ezviz-sdk。另外,注意在依赖树中,可能还有其他库依赖了旧版本的ezviz-sdk,所以我们需要全局强制使用5.20版本。修改app的build.gradle文件:</think>### 解决方案:解决萤石云 SDK 版本冲突问题 #### 修改后的 `app/build.gradle` 文件 ```groovy 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" } // 添加包排除规则 packagingOptions { // 排除所有冲突的类文件 exclude 'org/MediaPlayer/PlayM4/Player$MPSystemTime.class' exclude 'org/MediaPlayer/PlayM4/Player$MPVR_DISPLAY_EFFECT.class' exclude 'org/MediaPlayer/PlayM4/Player$MPVR_FISH_PARAM.class' exclude 'org/MediaPlayer/PlayM4/Player$MPVR_FISH_PTZ.class' exclude 'org/MediaPlayer/PlayM4/Player$MP_DECODE_TYPE.class' exclude 'org/MediaPlayer/PlayM4/Player$PRIVATE_RENDER.class' exclude 'org/MediaPlayer/PlayM4/Player$PTZ_PARAM.class' exclude 'org/MediaPlayer/PlayM4/Player$SESSION_INFO.class' exclude 'org/MediaPlayer/PlayM4/Player$SRTRANS_ELEMENT.class' exclude 'org/MediaPlayer/PlayM4/Player$SRTRANS_PARAM.class' exclude 'org/MediaPlayer/PlayM4/Player$TEM_FLAG.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerAdditionalCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerAudioDataCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerDecodeCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerDecodeCBEx.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerDisplayCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerDisplayCBEx.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerEncTypeChgCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerEncryptTypeCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerFECDisplayCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerFileRefCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerHSDetectCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerIVSDrawFunCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerPlayEndCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerPreRecordCB.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerPreRecordCBEx.class' exclude 'org/MediaPlayer/PlayM4/PlayerCallBack$PlayerRunTimeInfoCB.class' exclude 'org/MediaPlayer/PlayM4/SurfaceCallBack.class' exclude 'org/MediaPlayer/PlayM4/TimeStruct.class' } } 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' // 全局依赖冲突解决方案 configurations.all { resolutionStrategy { // 强制使用统一版本的 OkHttp force 'com.squareup.okhttp3:okhttp:4.9.1' // 强制使用统一版本的萤石云 SDK force 'io.github.ezviz-open:ezviz-sdk:5.20' // 解决可能的冲突 eachDependency { details -> // 统一所有 com.squareup.okhttp3 依赖 if (details.requested.group == 'com.squareup.okhttp3') { details.useVersion '4.9.1' } // 统一所有萤石云 SDK 依赖 if (details.requested.group == 'com.ezviz.sdk') { details.useVersion '5.20' } } } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' // 萤石云 SDK - 排除旧版本依赖 implementation('io.github.ezviz-open:ezviz-sdk:5.20') { exclude group: 'com.ezviz.sdk', module: 'ezviz-sdk' } implementation('com.ezviz.sdk:ezuikit:2.2.1') { exclude group: 'com.ezviz.sdk', module: 'ezviz-sdk' } // 其他依赖 implementation 'com.google.code.gson:gson:2.8.5' 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" } ``` ### 关键修改说明 #### 1. 添加 `packagingOptions` 排除冲突类 ```groovy packagingOptions { exclude 'org/MediaPlayer/PlayM4/Player$MPSystemTime.class' exclude 'org/MediaPlayer/PlayM4/Player$MPVR_DISPLAY_EFFECT.class' // ... 其他所有冲突类 ... exclude 'org/MediaPlayer/PlayM4/TimeStruct.class' } ``` - 显式排除所有报告冲突的类文件 - 确保打包时只包含一份类文件 #### 2. 强制统一 SDK 版本 ```groovy configurations.all { resolutionStrategy { force 'io.github.ezviz-open:ezviz-sdk:5.20' eachDependency { details -> if (details.requested.group == 'com.ezviz.sdk') { details.useVersion '5.20' } } } } ``` - 强制所有模块使用 5.20 版本 - 覆盖任何传递依赖引入的旧版本 #### 3. 排除旧版本 SDK 的传递依赖 ```groovy implementation('io.github.ezviz-open:ezviz-sdk:5.20') { exclude group: 'com.ezviz.sdk', module: 'ezviz-sdk' } implementation('com.ezviz.sdk:ezuikit:2.2.1') { exclude group: 'com.ezviz.sdk', module: 'ezviz-sdk' } ``` - 防止 `ezuikit` 引入旧版本 SDK - 确保只使用一个版本的萤石云 SDK #### 4. 统一 OkHttp 版本 ```groovy force 'com.squareup.okhttp3:okhttp:4.9.1' eachDependency { details -> if (details.requested.group == 'com.squareup.okhttp3') { details.useVersion '4.9.1' } } ``` - 防止其他库引入冲突的 OkHttp 版本 - 确保网络栈的一致性 ### 验证解决方案 1. **执行 Gradle 命令**: ```bash ./gradlew :app:dependencies --configuration releaseRuntimeClasspath ``` 检查输出中是否只有一个版本的萤石云 SDK: ``` +--- io.github.ezviz-open:ezviz-sdk:5.20 | \--- (排除 com.ezviz.sdk:ezviz-sdk:4.9.1.1) ``` 2. **清理并重建项目**: - 在 Android Studio 中选择:**Build > Clean Project** - 然后选择:**Build > Rebuild Project** 3. **检查 APK 内容**: 使用 Android Studio 的 **Build > Analyze APK** 功能: - 检查 `classes.dex` 中是否没有重复类 - 确认 `org/MediaPlayer/PlayM4` 路径下只有一个版本的类文件 ### 备选方案:完全移除旧版本依赖 如果上述方案仍无法解决问题,可以尝试完全移除旧版本: ```groovy dependencies { // 移除所有可能包含旧版本 SDK 的本地 JAR implementation fileTree(include: ['*.jar'], exclude: ['*hikvision*', '*ezviz-sdk*'], dir: 'libs') // 只使用新版本 SDK implementation 'io.github.ezviz-open:ezviz-sdk:5.20' // 清理缓存 configurations.all { resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds' resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } } ``` ### 常见问题排查 1. **缓存问题**: - 执行 `./gradlew clean build --refresh-dependencies` - 在 Android Studio 中使用 **File > Invalidate Caches / Restart** 2. **多个模块冲突**: - 如果项目有多个模块,在每个模块的 `build.gradle` 中添加相同的冲突解决方案 3. **依赖树分析**: ```bash ./gradlew :app:dependencyInsight --dependency ezviz-sdk ``` 查看具体是哪个依赖引入了旧版本 SDK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值