扩展 AppCompatActivity 会使应用崩溃

Extending AppCompatActivity crashes the app

我正在创建一个简单的应用程序来测试 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

在app的gradls中没有解决问题

更新:

完整 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"
}

Activity:

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>

检查您是否使用 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,27appcompat 27.1.1但仍然没有运气,然后尝试使用 android SDK 25appcompat 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 中为扩展 AppCompatActivity 的 Activity 应用此主题:

    <activity android:name=".LoadGameActivity"
    android:theme="@style/AppTheme.NoActionBar"
    android:label="@string/label_LoadGameActivity"></activity>