- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写我的第一个针对 ICS(4.0.3 - 级别 15)的应用程序。我得到了 Action Bars,我认为它们很棒。但我是第一次尝试 fragment ,我仍然不确定我是否喜欢它们。我目前正在开发的应用程序不需要 fragment ,因为它对屏幕的要求非常不动态。标准 Activity 运行良好。然而,最大的问题是我必须将 PreferenceActivity 与 PreferencFragment 和 Headers 一起使用。直接到首选项定义 xml 文件的 Activity 的旧形式已被弃用。所以我学会了在谷歌的强制下使用偏好 fragment 来显示偏好。 (顺便说一句,有没有人想出如何跳过显示标题。我用了两个作为学习经验。一个指向单个 fragment 类就足够了。但是只用一个标题进行双重选择看起来很糟糕.. .)
直到大约 3 天前,我一直在使用模拟器,一切正常。当我将测试移至设备时,我可以获得显示标题的首选项屏幕(PreferenceActivity 类)。但是,当我选择一个 header (调用 PreferencesFragment 类)时,我收到了“抱歉,你的应用程序已停止”消息。回到模拟器,一切正常。我终于明白我在生成 APK 时使用了 Proguard . 因为除了我的设置 Activity 之外,所有的 View 都是由标准 Activity 驱动的,大部分都有效。当我关闭 Proguard 时,一切都有效,包括设置。在我的 Crittercism 崩溃报告中,当 Proguard 打开时生成的错误是找不到类。类未找到内联 PreferenceFragment 类。
例如,使用标题
android:fragment="com.mycompany.projectname.FragmentPreferences$SettingsFragment"
设备上运行的 Android 操作系统找不到内联类 SettingsFragment。
关闭 Proguard 并重新安装 APK,上面的 header 工作正常。无论有没有 Proguard,PreferenceActivity 类 FragmentPreferences 总能找到并显示标题。选择显示的标题时失败(调用 SettingsFragment)...
我尝试了 -dontoptimize 和 -dontshrink,但我的应用程序仍然无法在 Proguard 上运行。我的 Proguard 设置是标准的;即,当我使用 Eclipse 向导(ADT R20 - 最新和最好的)创建新应用程序时生成。以下是我尝试运行的设置:
在项目属性中:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
target=Google Inc.:Google APIs:15
In proguard-project:
-keepattributes SourceFile, LineNumberTable
-dontshrink
-dontoptimize
所有标准 Activity (无 fragment )都可以在基本设置下正常工作。添加 -dont 是为了将 Proguard 限制为仅进行混淆。调用内联 fragment 类时设置仍然爆炸。
目前我在 Proguard 关闭的情况下生成 APK。当我准备好投入生产时,我想重新打开它。
(顺便说一句,我将 PreferenceFragment 类移到了外部类,但在调用 Proguard 时它们仍然不起作用。)
我已经在这里输入了足够多的内容,但仍然没有提出我的问题。好的,我会用这个问题结束这个:
有人知道使共享首选项 fragment 类可见所需的正确 Proguard 设置吗?如果此问题扩展到常规 fragment 使用,那么这些设置是什么?
最佳答案
我会使用 -keep class your.package.goes.here.** { *;
,以确保 ProGuard 不会删除您自己的任何类,包括布局或其他资源而不是代码引用的 fragment 。
请注意,我不是 ProGuard 专家,因此这可能是“用别克拍苍蝇”,但它对我有用,包括我的 PreferenceFragments
。
关于android - 带有 PreferenceFragment 的 PerferenceActivity 在有 proguard 的设备上失败,没有 proguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11584041/
我正在编写我的第一个针对 ICS(4.0.3 - 级别 15)的应用程序。我得到了 Action Bars,我认为它们很棒。但我是第一次尝试 fragment ,我仍然不确定我是否喜欢它们。我目前正在
我是一名优秀的程序员,十分优秀!