android studio 导入模块SDK 以及该模块中继承application的类与原工程继承application的类存在冲突 解决方法


新导入的工程可能存在路径问题,不太懂,后续明白会补充。总之需要先Rebuild Project然后可正常运行。
在这里插入图片描述

导入某修改后的海康视频SDK(老师给的),并修改相关文件

  1. 选择准备好的模块:File-New-import Module导入模块
    在这里插入图片描述
    在这里插入图片描述
    给新模块改新名字,本例用video
    在这里插入图片描述
    引入依赖关系:File-Project Structure-app-Dependencies-Module dependency
    在这里插入图片描述
    在这里插入图片描述
    选择video,然后点击两个OK在这里插入图片描述

  2. 分别找到APP和video模块的 清单文件AndroidManifest.xml和 build.gradle文件
    准备修改这四个文件
    在这里插入图片描述

  3. 修改本工程APP的AndroidManifest.xml
    添加语句xmlns:tools="http://schemas.android.com/tools"在这里插入图片描述
    添加语句tools:replace="android:icon,android:theme,android:name" 也可能添加tools:replace=“android:icon,android:theme”
    具体要看和video demo重复的地方
    在这里插入图片描述

  4. 修改video模块的AndroidManifest.xml
    注释代码<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />现在的版本已经不支持把它写在清单文件,应写在build.gradle中,本例不用改动其他只需注释该部分
    在这里插入图片描述

  5. 修改本工程APP的build.gradle文件
    在dependencies中加入模块的依赖关系compile project(':video')
    在这里插入图片描述

  6. 修改video模块的build.gradle文件

注释apply plugin: 'com.android.application'
更正为apply plugin: 'com.android.library'
注释applicationId "com.hikvision.sdk.demo"
原代码:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {``
        applicationId "com.hikvision.sdk.demo"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //  compile project(':ivms_8700_sdk_library')
}

更正后:

//apply plugin: 'com.android.application'
apply plugin: 'com.android.library'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        //applicationId "com.hikvision.sdk.demo"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    //  compile project(':ivms_8700_sdk_library')
}

问题1:错误:需要常量表达式

Compilation failed; see the compiler error output for details.
在这里插入图片描述
在这里插入图片描述
**解决方法:**点击错误,进入代码,按Alt + Enter选择Replace ‘switch ’with 'if解决
在这里插入图片描述

问题2:video模块中的继承application的类与主工程中继承application的类发生冲突

此时程序只调用主APP的继承application的类,而video中的没有调用,导致视频SDK没有初始化

  1. 找不到包

在这里插入图片描述
**解决方法:**让主程序的类不再继承application,去继承video模块中的继承了application的类,清单文件不变,还是先调用主程序的类,这样video模块中的类也会自动执行
简言之:原本applicationOne和applicationTwo 继承application,现在applicationOne继承applicationTwo,applicationTwo还是继承application,主清单中不变还是调applicationOne

  1. 改正后出现了找不到.so文件的问题
    在这里插入图片描述
    **解决方法:**把video模块中的三个.so文件复制到主程序libs中
    D:\Android\newnewnew\HTDJC3.41\video\src\main\jniLibs\armeabi-v7a
    D:\Android\newnewnew\HTDJC3.41\app\libs\x86
    rebuild工程 重新运行
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值