当通过Eclipse通过USB安装应用程序时,我的应用程序将在目标设备(HTC Desire HD)上调试并运行良好。
但是,当我导出到.APK,然后在我的Desire HD上安装此.APK(首先手动卸载我的应用程序的先前安装)时,它崩溃。
检查了Logcat中的错误后,我可以看到我的自定义扩展View名(在布局XML文件中使用其完全限定名称引用)显然找不到,并导致了.classNotFoundException。
Logcat错误跟踪的两行内容是:
04-09 21:29:01.101: E/AndroidRuntime(2157): Caused by:
android.view.InflateException: Binary XML file line #12: Error inflating class
com.trevp.myAppName.DashboardLayout
并在下面:
04-09 21:29:01.101: E/AndroidRuntime(2157): Caused by:
java.lang.ClassNotFoundException: com.trevp.myAppName.DashboardLayout in
loader dalvik.system.PathClassLoader[/data/app/com.trevp.myAppName-1.apk
从Eclipse安装应用程序时,只有从导出的.APK安装时,才不会发生此崩溃。
万一这可能是Proguard的问题,这是我的Proguard配置文件。我并不是真的很喜欢默认设置,因为我是使用Proguard的新手。我的Proguard版本是4.7。
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native ;
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
膨胀的XML文件。(Merge之所以使用标记,是因为其中的元素作为子代添加到父代中FrameLayout。)
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top|left"
android:scaleType="centerCrop"
android:id="@+id/dashLayoutImage"
android:src="@drawable/background2" android:drawingCacheQuality="high"/>
android:clipChildren="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/dashLayout"
android:layout_gravity="top|left" />
android:layout_gravity="top|left"
layout="@layout/status_bar"
android:id="@+id/statusBar" />
android:layout_gravity="bottom|left"
android:id="@+id/pollRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
在此先感谢您提供任何提示。如果需要其他摘要或配置信息,请大声喊叫。