android studio 导入模块SDK 以及该模块中继承application的类与原工程继承application的类存在冲突 解决方法
新导入的工程可能存在路径问题,不太懂,后续明白会补充。总之需要先Rebuild Project然后可正常运行。
导入某修改后的海康视频SDK(老师给的),并修改相关文件
-
选择准备好的模块:File-New-import Module导入模块
给新模块改新名字,本例用video
引入依赖关系:File-Project Structure-app-Dependencies-Module dependency
选择video,然后点击两个OK -
分别找到APP和video模块的 清单文件AndroidManifest.xml和 build.gradle文件
准备修改这四个文件
-
修改本工程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重复的地方
-
修改video模块的AndroidManifest.xml
注释代码<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
现在的版本已经不支持把它写在清单文件,应写在build.gradle中,本例不用改动其他只需注释该部分
-
修改本工程APP的build.gradle文件
在dependencies中加入模块的依赖关系compile project(':video')
-
修改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没有初始化
- 找不到包
**解决方法:**让主程序的类不再继承application,去继承video模块中的继承了application的类,清单文件不变,还是先调用主程序的类,这样video模块中的类也会自动执行
简言之:原本applicationOne和applicationTwo 继承application,现在applicationOne继承applicationTwo,applicationTwo还是继承application,主清单中不变还是调applicationOne
- 改正后出现了找不到.so文件的问题
**解决方法:**把video模块中的三个.so文件复制到主程序libs中
D:\Android\newnewnew\HTDJC3.41\video\src\main\jniLibs\armeabi-v7a
D:\Android\newnewnew\HTDJC3.41\app\libs\x86
rebuild工程 重新运行