Android studio 的 AppcompatActivity 错误
AppcompatActivity Error with Android studio
我在使用 Android studio 构建 android 应用程序时遇到此错误:
24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;)
08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 I/dalvikvm﹕ Could not find method android.support.v7.app.AppCompatActivity.onCreate, referenced from method com.mkapp.apps.demo1.TourActivity.onCreate
08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 8393: Landroid/support/v7/app/AppCompatActivity;.onCreate (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V
08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
我的依赖项:
compile 'com.android.support:support-v4:22.2.1'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0+'
compile 'com.android.support:multidex:1.0.1'
非常感谢您的帮助
继承自 AppcompatActivity 的旧活动运行良好。但是如果我创建一个新的,它就会出错。
这是我的 gradle.build :
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.mkapp.apps.demo1"
minSdkVersion 10
targetSdkVersion 22
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
multiDexEnabled true
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':photocollage')
compile project(':gWFacebookSDK')
// compile project(':listViewAnimation')
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'com.android.support:multidex:1.0.1'
compile files('libs/aws-android-sdk-2.1.0-core.jar')
compile files('libs/aws-android-sdk-2.1.0-sns.jar')
compile files('libs/dexmaker-1.1.jar')
compile files('libs/dexmaker-mockito-1.1-custom.jar')
// compile files('libs/listviewanimations_lib-core_3.1.0.jar')
compile files('libs/signpost-commonshttp4-1.2.1.1.jar')
compile files('libs/signpost-core-1.2.1.1.jar')
compile files('libs/signpost-jetty6-1.2.1.1.jar')
compile files('libs/twitter4j-core-4.0.1.jar')
compile files('libs/universal-image-loader-1.9.3.jar')
}
首先,将您的库更新到最新版本。
接下来,清理并重建您的项目。
此外,如果这是您包含的库的完整列表:
compile 'com.android.support:support-v4:22.2.1'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0+'
compile 'com.android.support:multidex:1.0.1'
那你其实不需要包括这个
compile 'com.android.support:multidex:1.0.1'
在 build.gradle 中将您的支持库更新为 23
,将您的 compileSdkVersion
更新为 23
。
compileSdkVersion 23
...
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
然后将您的项目与 gradle 个文件同步。
此外,Google Play 服务现在 7.8.0
问题是您的 TourActivity
使用的 class 只能从 API 级别 21 PersistableBundle 获得。这里的问题是为什么要这样做。
记住你的新 activity 也必须继承自 AppCompatActivity
。
快速提问,您是否在有问题的 activity 中覆盖了 public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
?如果您正在这样做,您可能正在保存对 PersistableBundle
的引用,这在 device/emulator 中不可用。如果您在那里什么都不做,请尝试将其删除或对其进行评论以尝试...
您遇到此问题是因为您正在尝试使用 onCreate (Bundle savedInstanceState, PersistableBundle persistentState),但此方法仅适用于 API 级别 21。
我能够在 Android 4.4:
上使用此示例代码重现该问题
public class TourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, new PersistableBundle());
}
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
}
问题已解决,删除了所有出现的 PersistableBundle
:
public class TourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
检查您在 TourActivity
中使用 PersistableBundle
的位置并将其删除或使用 activity.
的代码更新您的答案
您需要像这样更改您的应用 build.gradle
:
compile 'com.android.support:appcompat-v7:22.1.0+'
至
compile 'com.android.support:appcompat-v7:20.0.0'
这是一个俗气的解决方案,但它确实对我有用!我手动创建了缺少库的所需路径:
C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\android\support\v7\appcompat\libs
并添加了 here and here 中丢失的两个 .jar 文件。 Android工作室终于找到了执行Java需要的依赖。
1.Just 更改您的依赖项以显示在 build.gradle--
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:support-v4:23.4.0'
implementation 'com.android.support:appcompat-v7:23.4.0'
implementation 'com.android.support:support-annotations:27.1.1'
}
2.Then 它将显示同步 gradle,然后同步 build.gradle 以更新更改。
简单
, 转到 文件-> 使缓存无效并重新启动。
谢谢
我在使用 Android studio 构建 android 应用程序时遇到此错误:
24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;)
08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 I/dalvikvm﹕ Could not find method android.support.v7.app.AppCompatActivity.onCreate, referenced from method com.mkapp.apps.demo1.TourActivity.onCreate
08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 8393: Landroid/support/v7/app/AppCompatActivity;.onCreate (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V
08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
我的依赖项:
compile 'com.android.support:support-v4:22.2.1'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0+'
compile 'com.android.support:multidex:1.0.1'
非常感谢您的帮助
继承自 AppcompatActivity 的旧活动运行良好。但是如果我创建一个新的,它就会出错。 这是我的 gradle.build :
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.mkapp.apps.demo1"
minSdkVersion 10
targetSdkVersion 22
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
multiDexEnabled true
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':photocollage')
compile project(':gWFacebookSDK')
// compile project(':listViewAnimation')
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'com.android.support:multidex:1.0.1'
compile files('libs/aws-android-sdk-2.1.0-core.jar')
compile files('libs/aws-android-sdk-2.1.0-sns.jar')
compile files('libs/dexmaker-1.1.jar')
compile files('libs/dexmaker-mockito-1.1-custom.jar')
// compile files('libs/listviewanimations_lib-core_3.1.0.jar')
compile files('libs/signpost-commonshttp4-1.2.1.1.jar')
compile files('libs/signpost-core-1.2.1.1.jar')
compile files('libs/signpost-jetty6-1.2.1.1.jar')
compile files('libs/twitter4j-core-4.0.1.jar')
compile files('libs/universal-image-loader-1.9.3.jar')
}
首先,将您的库更新到最新版本。 接下来,清理并重建您的项目。
此外,如果这是您包含的库的完整列表:
compile 'com.android.support:support-v4:22.2.1'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.android.support:appcompat-v7:22.1.0+'
compile 'com.android.support:multidex:1.0.1'
那你其实不需要包括这个
compile 'com.android.support:multidex:1.0.1'
在 build.gradle 中将您的支持库更新为 23
,将您的 compileSdkVersion
更新为 23
。
compileSdkVersion 23
...
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
然后将您的项目与 gradle 个文件同步。
此外,Google Play 服务现在 7.8.0
问题是您的 TourActivity
使用的 class 只能从 API 级别 21 PersistableBundle 获得。这里的问题是为什么要这样做。
记住你的新 activity 也必须继承自 AppCompatActivity
。
快速提问,您是否在有问题的 activity 中覆盖了 public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
?如果您正在这样做,您可能正在保存对 PersistableBundle
的引用,这在 device/emulator 中不可用。如果您在那里什么都不做,请尝试将其删除或对其进行评论以尝试...
您遇到此问题是因为您正在尝试使用 onCreate (Bundle savedInstanceState, PersistableBundle persistentState),但此方法仅适用于 API 级别 21。
我能够在 Android 4.4:
上使用此示例代码重现该问题public class TourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, new PersistableBundle());
}
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
}
问题已解决,删除了所有出现的 PersistableBundle
:
public class TourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
检查您在 TourActivity
中使用 PersistableBundle
的位置并将其删除或使用 activity.
您需要像这样更改您的应用 build.gradle
:
compile 'com.android.support:appcompat-v7:22.1.0+'
至
compile 'com.android.support:appcompat-v7:20.0.0'
这是一个俗气的解决方案,但它确实对我有用!我手动创建了缺少库的所需路径:
C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\android\support\v7\appcompat\libs
并添加了 here and here 中丢失的两个 .jar 文件。 Android工作室终于找到了执行Java需要的依赖。
1.Just 更改您的依赖项以显示在 build.gradle--
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:support-v4:23.4.0'
implementation 'com.android.support:appcompat-v7:23.4.0'
implementation 'com.android.support:support-annotations:27.1.1'
}
2.Then 它将显示同步 gradle,然后同步 build.gradle 以更新更改。
简单 , 转到 文件-> 使缓存无效并重新启动。 谢谢