Android使用proguard,栈跟踪



我测试了我的应用程序,在模拟器和我的设备上,它工作没有错误。我导出启用了proguard选项的eclipse项目。当我打开一个自定义对话框http://code.google.com/p/dateslider/.

我尝试了所有类的-keep选项,但没有结果。

从我读到的,是我需要崩溃的痕迹。

它在哪里?,只显示一个对话框,告诉我应用程序已经崩溃。

乔斯

编辑

感谢Sean的建议,我将其缩小到方法"SetContentView"的调用。它试图从布局中加载数据。

<?xml version="1.0" encoding="utf-8"?>
<nl.zonneveld.pldkal_free.SliderContainer
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/nl.zonneveld.pldkal_free"
android:id="@+id/dateSliderContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<nl.zonneveld.pldkal_free.ScrollLayout
    style="@style/Scroller"
    app:labelerClass="nl.zonneveld.pldkal_free.YearLabeler"
    app:labelerFormat="%tY"
    app:childWidth="150dp"/>
<nl.zonneveld.pldkal_free.ScrollLayout
    style="@style/Scroller"
    app:labelerClass="nl.zonneveld.pldkal_free.MonthLabeler"
    app:labelerFormat="%tB"
    app:childWidth="200dp"/>
<include layout="@layout/dialogbuttons"/>
</nl.zonneveld.pldkal_free.SliderContainer>

编辑在

触发未知异常
Class<?> klazz = Class.forName(className);
Constructor<?> ctor = klazz.getConstructor(String.class);

className ="nl.zonneveld.pldkal_free.YearLabeler"。

yearlabel的构造函数:

public YearLabeler(String formatString)

我尝试了以下保护选项,没有成功。

-keep public class * extends nl.zonneveld.pldkal_free.YearLabeler{
 public <init>(java.lang.String);
}
-keep public class * extends nl.zonneveld.pldkal_free.MonthLabeler{
    public <init>(java.lang.String);
}
-keep public class * extends nl.zonneveld.pldkal_free.Labeler{
    public <init>(int, int);
}

错误是什么——ClassNotFoundError ?意思是,你认为Proguard优化了那个类?您可以通过将-dontshrink设置为start来轻松地进行测试。如果这不能解决问题,那么Proguard不是问题所在。

可以在命令行中使用adb logcat获取所有日志输出。与eclipse集成的工具可能有类似的工具,但我不知道它是什么。您也可以使用aLogcat应用程序在Android上查看日志

经过大量的挖掘,这是解决方案。谢谢Sean的建议。

-keep public class * extends nl.zonneveld.pldkal_free.YearLabeler
-keepclassmembers class nl.zonneveld.pldkal_free.YearLabeler{
 public <init>(java.lang.String);
}
-keep public class * extends nl.zonneveld.pldkal_free.MonthLabeler
-keepclassmembers class nl.zonneveld.pldkal_free.MonthLabeler{
    public <init>(java.lang.String);
}
-keep public class * extends nl.zonneveld.pldkal_free.Labeler
-keepclassmembers class nl.zonneveld.pldkal_free.Labeler{
    public <init>(int, int);
}

相关内容

  • 没有找到相关文章

最新更新