Обновить приложение Holo до Material – INSTALL_FAILED

У меня есть приложение для Android 4.x со стилем Holo. Теперь я хочу добавить поддержку стиля материала, и я хотел бы иметь стиль материала как на Android 5, так и на Android 4.x (я читал, что это возможно с AppCompat v21). Я прочитал этот пост о «миграции» с Holo на Material: http://android-developers.blogspot.sg/2014/10/appcompat-v21-material-design-for-pre.html

Итак, я изменил свой старый файл «build.grandle» с этого:

apply plugin: 'com.android.application'

android {
compileSdkVersion 19
buildToolsVersion '19.1.0'

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 19
    versionCode 18
    versionName "1.3.1"
}
buildTypes {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.1.0'
compile 'com.google.android.gms:play-services:4.4.52'
compile 'com.github.fernandodev.easyratingdialog:easyratingdialog:+'
}

к этому:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion '20.0.0'

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 19
    versionName "2.0.0"
}
buildTypes {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

repositories {
mavenCentral()
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.+'
compile 'com.google.android.gms:play-services:6.1.71'
compile 'com.github.fernandodev.easyratingdialog:easyratingdialog:+'
compile 'com.anjlab.android.iab.v3:library:1.0.+@aar'
}

Я изменил JDK6 на JDK7 (потому что это нужно SDK21), выбрал API21 как «скомпилировать версию SDK» и создать новый XML-файл «values/themes.xml»:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- Set AppCompat’s actionBarStyle -->


    <!-- Set AppCompat’s color theming attrs -->
    <item name="colorPrimary">#8bc34a</item>
    <item name="colorPrimaryDark">#259b24</item>

<!-- The rest of your attributes -->
</style>
</resources>

Теперь, когда я пытаюсь запустить свое приложение на своем устройстве (с Android 4.4, в данный момент у меня нет устройства с Android 5), Android Studio, прежде чем пытаться установить его, попросит меня удалить старую версию (но есть не старая версия.Я удалил ее и удалил всю папку). Когда я подтверждаю, я получаю сообщение об ошибке:

Uploading file
local path: C:\MYAPP\app\build\outputs\apk\app-debug.apk
remote path: /data/local/tmp/com.myname.myapp
Installing com.martinzone.topotafmobile
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myname.myapp"
pkg: /data/local/tmp/com.myname.myapp
Failure [INSTALL_FAILED_DEXOPT]

Я также пытался «очистить» свой проект, но в этом случае я получаю эту ошибку:

Uploading file
local path: C:\MYAPP\app\build\outputs\apk\app-debug.apk
remote path: /data/local/tmp/com.myname.myapp
Installing com.myname.myapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myname.myapp"
pkg: /data/local/tmp/com.myname.myapp
Failure [INSTALL_FAILED_UID_CHANGED]

Есть идеи? Как я могу это решить? Как я могу добавить поддержку Material Style, работающую на Android 4 и Android 5?


person Martin    schedule 23.11.2014    source источник
comment
stackoverflow.com/ вопросы/5153515/   -  person aga    schedule 23.11.2014
comment
@aga только что прочитал безуспешно. Спасибо в любом случае.   -  person Martin    schedule 23.11.2014
comment
Ваша проблема на самом деле не в материальном дизайне. Изменив проект на целевую версию 21, вы что-то изменили (например, используя java 7?), Что нарушает установку. PS: Как очистка проекта изменила идентификатор приложения на com.myname.myapp (или вы пытались убрать имя и однажды забыли его)? Вы изменили его в градле?   -  person zapl    schedule 23.11.2014
comment
@zapl У меня есть обновление Android Studio (я думаю, что оно также обновляет Gradle), поэтому я скомпилировал свое приложение без изменений, и все заработало. Затем я пытаюсь обновить свой проект до SDK21 и Material Style, но не могу его установить. com.myname.myapp — фиктивное имя. На моем проекте есть настоящее имя.   -  person Martin    schedule 23.11.2014
comment
FAILED_DEXOPT означает, что устройству не удалось использовать apk, вам нужно будет проверить logcat, чтобы выяснить, почему (logcat не отображается отфильтрованным для вашего приложения, вам нужно, чтобы он не был отфильтрован, чтобы увидеть). UID_CHANGED означает, что вы удалили приложение и переустановили его, но что-то из старого приложения сохранилось и блокирует чистую установку. В этом случае попробуйте удалить приложение из настроек устройства и, возможно, перезагрузиться. И очистка проекта будет stackoverflow .com/questions/16636848/ — это нужно сделать в любом случае, если есть странные сбои сборки.   -  person zapl    schedule 23.11.2014