构建良好

时间:2015-08-05 18:16:27

标签: java android facebook android-studio

我不是Android开发人员,但我正在尝试为Android Studio上的应用升级Facebook SDK。之前的SDK是3.5,我试图添加4.4.1

我已按照入门指南编写了登录类,但现在当我尝试在设备上启动应用程序时,虽然它编译得很好,但它在启动时崩溃。

我收到以下错误:

  

08-05 21:05:25.128 25207-25207 /? E / dalvikvm:找不到上课   'com.history.HistoryOrder',从方法中引用   com.service.Global。 08-05 21:05:25.138 25207-25207 /?   E / AndroidRuntime:致命异常:主要       java.lang.ExceptionInInitializerError               在com.imperautus.testProject.ActivitySplash.onCreate(ActivitySplash.java:61)               在android.app.Activity.performCreate(Activity.java:5326)               在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)               在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2218)               在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2309)               在android.app.ActivityThread.access $ 700(ActivityThread.java:157)               在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1289)               在android.os.Handler.dispatchMessage(Handler.java:99)               在android.os.Looper.loop(Looper.java:176)               在android.app.ActivityThread.main(ActivityThread.java:5317)               at java.lang.reflect.Method.invokeNative(Native Method)               在java.lang.reflect.Method.invoke(Method.java:511)               在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)               在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)               at dalvik.system.NativeStart.main(Native Method)        引起:java.lang.NoClassDefFoundError:com.history.HistoryOrder               在com.service.Global。(Global.java:113)   在com.imperautus.testProject.ActivitySplash.onCreate(ActivitySplash.java:61)   在android.app.Activity.performCreate(Activity.java:5326)   在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)   在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2218)   在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2309)   在android.app.ActivityThread.access $ 700(ActivityThread.java:157)   在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1289)   在android.os.Handler.dispatchMessage(Handler.java:99)   在android.os.Looper.loop(Looper.java:176)   在android.app.ActivityThread.main(ActivityThread.java:5317)   at java.lang.reflect.Method.invokeNative(Native Method)   在java.lang.reflect.Method.invoke(Method.java:511)   在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)   在dalvik.system.NativeStart.main(本地方法)

我看到它抱怨它无法找到类com.history.HistoryOrder但是这个类在这个确切的位置并且它在转换到新的Facebook SDK之前有效(我还没有触及类的代码)。

Global.java:113说:

public static ArrayList<HistoryOrder> historyOrderList = new ArrayList<HistoryOrder>(); 

public static HistoryOrder historyOrderItem = new HistoryOrder();

我还将我的代码中的所有引用从app.Fragment更改为support.v4.app.Fragment版本,因为我认为这导致了问题。

任何线索?

3 个答案:

答案 0 :(得分:6)

java.lang.NoClassDefFoundError 可能会被抛出,因为您已达到65k的限制http://developer.android.com/tools/building/multidex.html#about

如果您需要超过65k限制,则必须包含multidex支持

的gradle:

defaultConfig { 
...
multiDexEnabled true
}
...
dependencies {
compile 'com.android.support:multidex:1.0.1'
...
}

清单:

 <application
        ...
        android:name="android.support.multidex.MultiDexApplication">

如果您有自定义应用程序类:

extend MultiDexApplication MultiDex.install(getBaseContext());添加到 CustomApplication onCreate()

  

请注意,在某些低端设备上添加   {em>自定义应用 MultiDex.install(getBaseContext()); onCreate()   仍然可以抛出java.lang.NoClassDefFoundError

如果有,请尝试将MultiDex.install添加到attachBaseContext(Context base)

public class CustomApplication extends Application {
...
   @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(base);
    }
...

答案 1 :(得分:3)

好吧,似乎错误是由于一个非常不同的原因:

该应用已更新为使用Google Services 7.5,这使得方法超过65k,这使我将mutiDexEnabled添加到true。

我不知道代码是否需要更改以支持该代码,但似乎在进行此更改后,应用程序在随机点崩溃(当我评论历史记录调用时,可访问性类崩溃了,当删除可达性时,等等。

当编译器抱怨找不到它们时,当然所有类都在正确的位置 这让我想知道multidex是否导致了这一点,所以我删除了一些库,比如从7.5版本的google play到6.5

该应用程序现在编译并运行正常,允许我添加FB sdk 4 +

我在这里发布,所以它可以帮助其他人遇到问题而无法理解他们来自哪里。

答案 2 :(得分:0)

我认为您设置了错误class path所以请先检查您的class path 它将解决您的问题