我在Eclipse上有一个项目,其中包含许多库项目。然后我将它们移至Android Studio。经过艰苦的努力,使得gradle build成功。现在我可以运行我的项目并将apk安装到设备上。但是当我打开一个扩展AppCompatActivity的活动时,我在运行时得到了一个NoClassDefFoundError。但是如果我使用Activity而不是AppCompatActivity,则不会发生错误。我在清单中定义了活动。NoClassDefFoundError使用AppCompatActivity时
这是logcat的输出:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.my.packagename.activities.MyActivity
at com.my.packagename.activities.LoginActivity$2.onClick(LoginActivity.java:163)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
这是我有活动的模块deoencencies:
compile 'com.google.android.gms:play-services-gcm:10.2.1'
compile 'com.android.support:support-v4:24.0.0'
compile 'com.android.support:appcompat-v7:24.0.0'
compile 'com.android.support:design:24.0.0'
我缺少什么?
编辑我的清单文件:
...
<activity
android:name=".activities.MyActivity"
android:theme="@style/MyTheme"
android:label="@string/title_activity_my_activity"/>
</application>
而且我的风格文件:
...
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"</style>
这里是我的活动扩展AppCompatActivity(actullaty一个非常简单的活动):
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
}
}
和我打开这个活动的代码。我只放置了onClick监听器代码,因为整个活动时间太长,无法放在这里:
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!getIsOnline()) {
toast.setText(R.string.no_network);
toast.show();
return;
}
Intent intent = new Intent(getApplicationContext(), MyActivity.class);
startActivity(intent);
}
});
好的。我删除了multidex。我把谷歌播放服务只有gcm包,这解决了我的方法数问题。 gradle构建文件被更新。之后,我运行'gradlew clean'并且'使缓存失效/重新启动'。但问题仍在继续。
显示您的清单..并请不要使用播放服务...只是不..它会导致你的应用程序dex问题..使用个人依赖关系,而不是 – ZeroOne
升级PlayService 7.8至9.8或以上和用户个人依赖 – Sach
尝试将'getApplicationContext()'更改为'CurrentActivity.this' –