我正在尝试开发一个适用于所有Android版本的应用程序,如API级别23以及API级别8.虽然调试应用程序,但它在最新版本的api上工作得很好,但不能在像Gingerbread这样的较低版本上工作。< / p>
我尝试更改minSdkVersion
,但这并没有解决问题。
在较低版本中调试时显示错误
“安装失败,因为设备可能有陈旧的dexed罐子 与当前版本不匹配(dexopt错误)。为了 继续,你必须卸载现有的应用程序。“
的build.gradle
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.google.android.gms:play-services:7.8.0'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v4:21.0.3'
}
android {
compileSdkVersion 22
buildToolsVersion "21.0.0"
defaultConfig {
applicationId "org.linphone"
minSdkVersion 9
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
sourceSets {
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
android {
defaultConfig {
multiDexEnabled = true
minSdkVersion
targetSdkVersion
}
}
configurations.all {
exclude group: 'com.android.support', module: 'support-annotations'
}
}
的Manifest.xml
<uses-sdk
android:minSdkVersion="9"
/>
答案 0 :(得分:0)
您正在使用gradle,因此您应该从manifest.xml中删除uses-sdk声明 - gradle将其自行添加。然后将build.gradle中的minSdkVersion更改为等于或低于所需的值。
答案 1 :(得分:0)
启用proguard
,它可能是由dex文件引起的。当dex文件大于缓冲区大小(即包含超过65k的方法)时会发生这种情况。
android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
答案 2 :(得分:0)
您的应用已达到65k方法限制。解决方案很少:
ProGuard工具通过删除未使用的代码并使用语义模糊的名称重命名类,字段和方法来缩小,优化和混淆代码。结果是较小的.apk文件,更难以进行逆向工程。由于ProGuard使您的应用程序更难以进行逆向工程,因此当您的应用程序使用对安全性敏感的功能(例如Licensing Your Applications时)时,请务必使用它。
在build.gradle
模块的app
上启用它:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
您可以添加自己的ProGuard自定义规则read here。
将SDK Build Tools更新到最新版本。
使用MultiDex technique构建您的应用。
此外,您的apply plugin: 'android'
必须更改为apply plugin: 'com.android.application'
。
答案 3 :(得分:0)
我遇到了这个尝试在模拟器上进行测试的问题。我的解决方案是为模拟器提供更多内存和存储空间。在使用新(ART)工具构建并部署到Dalvik时,这似乎是一个问题。