1

经过测试,它可以在非 android 程序上运行,但在 Android 上初始化后立即崩溃。Log cat 也没有产生任何错误消息。我从CircularFifoBuffer找到了这个。

有什么明显的问题吗?

编辑:如果我将 jar 文件添加到 libs 文件夹(不是外部)然后将其添加到构建路径,我会收到此错误消息。但是,如果我在外部添加 jar 文件,则不会出现此错误。

[2012-08-05 20:56:03 - wifiCollection] Dx 警告:忽略不带有关联 EnclosureMethod 属性的匿名内部类 (org.apache.commons.collections.SequencedHashMap$1) 的 InnerClasses 属性。此类可能是由不针对现代 .class 文件格式的编译器生成的。推荐的解决方案是从源代码重新编译类,使用最新的编译器并且不指定任何“-target”类型选项。忽略此警告的后果是此类上的反射操作将错误地指示它不是内部类。

编辑2

08-05 21:12:48.837: I//system/bin/batteryd(1189): 1566474 v_bat 3.678 (3.677), i_supply 0.500, i_demand 0.282 => v_bat_idle 3.649 (3.649), 41% (41%, 41%) ),状态 5

08-05 21:12:50.837: I//system/bin/batteryd(1189): 1568477 v_bat 3.678 (3.677), i_supply 0.500, i_demand 0.282 => v_bat_idle 3.649 (3.649), 41% (41%, 41%) ),状态 5

08-05 21:12:51.267: I/ActivityManager(1291): 开始活动: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.jimmyc。 summer.wificollection/.WiFiLocationApp bnds=[245,418][355,553] }

08-05 21:12:51.337: I/dalvikvm(1374): Jit: 将 JitTable 的大小从 4096 调整为 8192

08-05 21:12:51.353:I/ActivityManager(1291):为活动 com.jimmyc.summer.wificollection/.WiFiLocationApp 启动 proc com.jimmyc.summer.wificollection:pid=1782 uid=10045 gids={1015}

08-05 21:12:51.634: D/dalvikvm(1782): GC_FOR_MALLOC 在 56 毫秒内释放了 1571 个对象/198264 个字节

08-05 21:12:51.751: V/LocationManagerService(1291):_removeUpdates: listener = Receiver{45a6e008 Listener android.os.BinderProxy@45a6e4b8}

08-05 21:12:51.774:V/标记(1782):应用程序启动

08-05 21:12:51.774:V/标记(1782):检查 wifi

08-05 21:12:51.774: V/Tagging(1782): 创建新的 wifiMode

08-05 21:12:51.782: E/dalvikvm(1782): 找不到类 'org.apache.commons.collections.buffer.CircularFifoBuffer',引用自方法 com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode。

08-05 21:12:51.782: W/dalvikvm(1782): VFY: 无法解析 Lcom/jimmyc/summer/wificollection/WiFiLocationApp$ 中的新实例 575 (Lorg/apache/commons/collections/buffer/CircularFifoBuffer;)无线模式;

08-05 21:12:51.782: D/dalvikvm(1782): VFY: 在 0x0032 处替换操作码 0x22

08-05 21:12:51.782: D/dalvikvm(1782): VFY: Lcom/jimmyc/summer/wificollection/WiFiLocationApp$wifiMode 中的死代码 0x0034-0041;。(Lcom/jimmyc/summer/wificollection/WiFiLocationApp;)V

08-05 21:12:51.790: I/dalvikvm(1782): 找不到方法 org.apache.commons.collections.buffer.CircularFifoBuffer.isFull,引用自方法 com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode.detectStableEnvironment

08-05 21:12:51.790: W/dalvikvm(1782): VFY: 无法解析虚拟方法 3504: Lorg/apache/commons/collections/buffer/CircularFifoBuffer;.isFull ()Z

08-05 21:12:51.790: D/dalvikvm(1782): VFY: 在 0x0006 处替换操作码 0x74

08-05 21:12:51.790: D/dalvikvm(1782): VFY: Lcom/jimmyc/summer/wificollection/WiFiLocationApp$wifiMode 中的死代码 0x0009-0230;.detectStableEnvironment ()Z

08-05 21:12:51.790: I/dalvikvm(1782): 找不到方法 org.apache.commons.collections.buffer.CircularFifoBuffer.size,引用自方法 com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode.match

08-05 21:12:51.790: W/dalvikvm(1782): VFY: 无法解析虚拟方法 3506: Lorg/apache/commons/collections/buffer/CircularFifoBuffer;.size ()I

08-05 21:12:51.790: D/dalvikvm(1782): VFY: 在 0x000f 处替换操作码 0x74

08-05 21:12:51.790: D/dalvikvm(1782): VFY: Lcom/jimmyc/summer/wificollection/WiFiLocationApp$wifiMode;.match ()Z 中的死代码 0x0012-0227

08-05 21:12:51.790: I/dalvikvm(1782): 找不到方法 org.apache.commons.collections.buffer.CircularFifoBuffer.add,引用自方法 com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode.processResults

08-05 21:12:51.790: W/dalvikvm(1782): VFY: 无法解析虚拟方法 3502: Lorg/apache/commons/collections/buffer/CircularFifoBuffer;.add (Ljava/lang/Object;)Z

08-05 21:12:51.790: D/dalvikvm(1782): VFY: 在 0x0020 处替换操作码 0x6e

08-05 21:12:51.790: D/dalvikvm(1782): VFY: Lcom/jimmyc/summer/wificollection/WiFiLocationApp$wifiMode 中的死代码 0x0023-0050;.processResults ()V

08-05 21:12:51.790: D/dalvikvm(1782): VFY: Lcom/jimmyc/summer/wificollection/WiFiLocationApp$wifiMode 中的死代码 0x0074-00f0;.processResults ()V

08-05 21:12:51.798: W/dalvikvm(1782): VFY: 无法找到签名中引用的类 (Lorg/apache/commons/collections/buffer/CircularFifoBuffer;)

08-05 21:12:51.798: I/dalvikvm(1782): 找不到方法 org.apache.commons.collections.buffer.CircularFifoBuffer.iterator,引用自方法 com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode.takeAverage

08-05 21:12:51.798: W/dalvikvm(1782): VFY: 无法解析虚拟方法 3505: Lorg/apache/commons/collections/buffer/CircularFifoBuffer;.iterator ()Ljava/util/Iterator;

08-05 21:12:51.798: D/dalvikvm(1782): VFY: 在 0x001b 处替换操作码 0x74

08-05 21:12:51.798: D/dalvikvm(1782): VFY: Lcom/jimmyc/summer/wificollection/WiFiLocationApp$wifiMode 中的死代码 0x001e-0419;.takeAverage (Lorg/apache/commons/collections/buffer/CircularFifoBuffer ;)Ljava/util/Map;

08-05 21:12:51.798: W/dalvikvm(1782): VFY: 无法找到签名中引用的类 (Lorg/apache/commons/collections/buffer/CircularFifoBuffer;)

08-05 21:12:51.798:V/标记(1782):启动 WiFi 模式

08-05 21:12:51.798: D/AndroidRuntime(1782): 关闭 VM

08-05 21:12:51.806: W/dalvikvm(1782): threadid=1: 线程以未捕获的异常退出 (group=0x4001d8a8)

08-05 21:12:51.806:E/AndroidRuntime(1782):致命异常:主要

08-05 21:12:51.806: E/AndroidRuntime(1782): java.lang.NoClassDefFoundError: org.apache.commons.collections.buffer.CircularFifoBuffer

08-05 21:12:51.806: E/AndroidRuntime(1782): at com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode.(WiFiLocationApp.java:182)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 com.jimmyc.summer.wificollection.WiFiLocationApp.onResume(WiFiLocationApp.java:1272)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.Activity.performResume(Activity.java:3823)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.ActivityThread.access$2300(ActivityThread.java:125)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.os.Handler.dispatchMessage(Handler.java:99)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.os.Looper.loop(Looper.java:123)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 android.app.ActivityThread.main(ActivityThread.java:4627)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 java.lang.reflect.Method.invokeNative(Native Method)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 java.lang.reflect.Method.invoke(Method.java:521)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

08-05 21:12:51.806: E/AndroidRuntime(1782): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

08-05 21:12:51.806:E/AndroidRuntime(1782):在 dalvik.system.NativeStart.main(本机方法)

08-05 21:12:51.814:W/ActivityManager(1291):强制完成活动 com.jimmyc.summer.wificollection/.WiFiLocationApp

08-05 21:12:52.009: D/dalvikvm(1291): GC_FOR_MALLOC 在 76 毫秒内释放了 11331 个对象/567768 个字节

08-05 21:12:52.314:W/ActivityManager(1291):HistoryRecord{457131f0 com.jimmyc.summer.wificollection/.WiFiLocationApp} 的活动暂停超时

08-05 21:12:52.314:D/传感器(1291):使用 MMA7660FC 加速度计(名称=MMA7660FC 加速度计)

08-05 21:12:52.321:D/传感器(1291):get_orientation 肖像设备

08-05 21:12:52.431: V/LocationManagerService(1291):_requestLocationUpdates: listener = Receiver{45711848 Listener android.os.BinderProxy@45a461c8}

08-05 21:12:52.840: I//system/bin/batteryd(1189): 1570480 v_bat 3.678 (3.677), i_supply 0.500, i_demand 0.282 => v_bat_idle 3.649 (3.649), 41% (41%, 41%) ),状态 5

public class test () {
    CircularFifoBuffer f1 = null;
    CircularFifoBuffer f2 = null;

    public test () {
        Log.v (TAG, "Starting...");
        try {
            f1 =  new CircularFifoBuffer(4);
            f2 = new CircularFifoBuffer(4);
        } catch (Exception e) {
            e.printStackTrace();
            Log.v (TAG, "Error: " +e);
        }
    }
}
4

2 回答 2

2

检查库的 jar 依赖项。你可能会遗漏一些东西。(怀疑你说你已经在Android之外测试过它)。

您可能需要从源代码构建以使其工作,因为 jar 可能是使用不同版本的 Java 构建的(Android 支持 Java 6 而不是 7)。

于 2012-08-06T03:59:11.763 回答
2

从 logcat 输出来看,您的 apk 中似乎没有包含该类:

08-05 21:12:51.782: E/dalvikvm(1782): Could not find class 'org.apache.commons.collections.buffer.CircularFifoBuffer', referenced from method com.jimmyc.summer.wificollection.WiFiLocationApp$wifiMode.<init>

Add 会说您最好的选择是获取源代码,将其包含在您的项目中,然后在您的构建环境中重新编译它。

于 2012-08-06T04:14:59.683 回答