Я создаю простое приложение для тестирования AppCompat
, когда я расширяю AppCompatActivity
, приложение вылетает, и когда я запускаю приложение без AppCompat
(расширяю android.app.Activity
, и все остается прежним),
MainActivity extends Activity
- работает
MainActivity extends AppCompat Activity
- вылетает
Тестирование на android 4.4
LogCat:
------------------------------------------------
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 0
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 15301176
05-01 23:03:44.966 E/dalvikvm(23031): Could not find class 'android.arch.core.internal.FastSafeIterableMap', referenced from method android.arch.lifecycle.LifecycleRegistry.<init>
05-01 23:03:44.986 E/AndroidRuntime(23031): FATAL EXCEPTION: main
05-01 23:03:44.986 E/AndroidRuntime(23031): Process: com.android.xDrawer, PID: 23031
05-01 23:03:44.986 E/AndroidRuntime(23031): java.lang.NoClassDefFoundError: android.arch.core.internal.FastSafeIterableMap
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.arch.lifecycle.LifecycleRegistry.<init>(LifecycleRegistry.java:59)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.SupportActivity.<init>(SupportActivity.java:47)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.BaseFragmentActivityApi14.<init>(BaseFragmentActivityApi14.java:28)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.BaseFragmentActivityApi16.<init>(BaseFragmentActivityApi16.java:34)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v4.app.FragmentActivity.<init>(FragmentActivity.java:68)
05-01 23:03:44.986 E/AndroidRuntime(23031): at android.support.v7.app.AppCompatActivity.<init>(AppCompatActivity.java:61)
05-01 23:03:44.986 E/AndroidRuntime(23031): at com.android.xDrawer.MainActivity.<init>(MainActivity.java:49)
05-01 23:03:44.986 E/AndroidRuntime(23031): at java.lang.Class.newInstanceImpl(Native Method)
05-01 23:03:44.986 E/AndroidRuntime(23031): at java.lang.Class.newInstance(Class.java:1208)
-----------------------------------------
Добавление
vectorDrawables.useSupportLibrary = true
В приложении градиенты не решили проблему
Обновлять:
Полный файл gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.mycompany.myapp"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.android.support:appcompat-v7:27.1.1"
}
Мероприятия:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
XML:
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:gravity = "center">
<TextView
android:text = "@string/hello_world"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content" />
</LinearLayout>
Стили:
<resources>
<style name = "AppTheme" parent = "@style/Theme.AppCompat.Light">
</style>
</resources>
Я не использую ни Android Studio, ни Eclipse, я использую AIDE для ОС Android.
Проверить, пользуетесь ли вы Proguard? Если это так, вы можете настроить конфигурацию правил Proguard, как показано ниже:
-keep class android.arch.** { *; }
Или выключить полностью:
debug {
minifyEnabled false
useProguard false
}
Надеюсь, это сработает для тебя
Пробовал оба, но все еще не работает и дает ту же ошибку
Решена, проблема заключалась в том, что у меня был android SDK 21
(android.jar) с appcompat 27.1.1
, я попробовал Android SDK 24,25,26,27
с appcompat 27.1.1
, но все равно не повезло, затем попробовал android SDK 25
с appcompat 25.0.0
, и это сработало как шарм.
Надеюсь, это поможет кому-нибудь с той же проблемой.
У меня та же проблема: приложение вылетало при запуске Activity, которое расширяет AppCompatActivity.
Решение:
Базовая тема приложения:
<!-- Base application theme. -->
<style name = "AppTheme" parent = "android:Theme.Material.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name = "android:windowBackground">@drawable/windows_background</item>
</style>
Я добавил тему:
<style name = "AppTheme.NoActionBar">
<item name = "windowActionBar">false</item>
<item name = "windowNoTitle">true</item>
</style>
И примените эту тему в AndroidManifest.xml для Activity, которая расширяет AppCompatActivity:
<activity android:name = ".LoadGameActivity"
android:theme = "@style/AppTheme.NoActionBar"
android:label = "@string/label_LoadGameActivity"></activity>
можно отключить мгновенный запуск?
Settings -> Build, Execution, Deployment -> Instant Run -> uncheck "Enable Instant Run"
и попробовать еще раз?