Proguard与android项目一起使用(兼容性)库

Proguard与android项目一起使用(兼容性)库,android,proguard,Android,Proguard,我正试图通过PackageExplorer导出>导出Android应用程序中的内置Proguard支持来使用Proguard。主项目使用一个库项目,该库项目反过来使用android兼容性库,它也使用这个兼容性库本身。基本上是这样的: 基本图书馆项目 碱性活性 libs:android-support-v4.jar 主要项目 使用library BaseLibraryProject libs:android-support-v4.jar 此应用程序在设备和模拟机上都正常运行。 然而,Proguar

我正试图通过PackageExplorer导出>导出Android应用程序中的内置Proguard支持来使用Proguard。主项目使用一个库项目,该库项目反过来使用android兼容性库,它也使用这个兼容性库本身。基本上是这样的:

基本图书馆项目 碱性活性 libs:android-support-v4.jar 主要项目 使用library BaseLibraryProject libs:android-support-v4.jar

此应用程序在设备和模拟机上都正常运行。 然而,Proguard发出了很多警告,并与代码1一起存在

这是Proguard相关列表的最后一点:

[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView$OnQueryTextListener
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb$1: can't find referenced class android.widget.SearchView$OnQueryTextListener
[2012-04-09 14:19:49 - MainProject] Warning: android.support.v4.widget.SearchViewCompatHoneycomb$1: can't find referenced class android.widget.SearchView
[2012-04-09 14:19:49 - MainProject] Warning: there were 131 unresolved references to classes or interfaces.
[2012-04-09 14:19:49 - MainProject]          You may need to specify additional library jars (using '-libraryjars').
[2012-04-09 14:19:49 - MainProject] Warning: there were 29 unresolved references to program class members.
[2012-04-09 14:19:49 - MainProject]          Your input classes appear to be inconsistent.
[2012-04-09 14:19:49 - MainProject]          You may need to recompile them and try again.
[2012-04-09 14:19:49 - MainProject]          Alternatively, you may have to specify the option 
[2012-04-09 14:19:49 - MainProject]          '-dontskipnonpubliclibraryclassmembers'.
[2012-04-09 14:19:49 - MainProject] java.io.IOException: Please correct the above warnings first.
如您所见:它找不到兼容库

这是proguard.cfg文件的开头,其中包括-libraryjars和-dontskipnonPublicLibraryClass成员:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-libraryjars libs/android-support-v4.jar
没什么区别。我尝试了各种组合,将库添加到BaseLibrary项目/MainProject,使用完全限定的路径名。似乎没有什么帮助

proguard上的大多数stackoverflow问题似乎都是关于设置Ant的。 你知道是什么导致了这个问题,以及如何让Proguard在这个使用多个库的项目上工作吗


提前感谢,

ADT 17的发布为Proguard的工作方式带来了许多改进,包括更好的默认设置,我认为这应该可以解决您的支持库问题

见-

Eclipse(project.properties)

从ADT 17开始,默认的project.properties文件现在包括以下行,其中引用了标准的Proguard配置文件(Proguard android.txt)和特定于项目的Proguard配置文件(Proguard project.txt)

我建议创建一个新的Android项目,看看它是如何布局和使用这些新文件的。您的应用程序将长期受益,因为Proguard和默认配置有所改进

更新

Gradle(build.Gradle)

下面将使用默认的标准proguard配置和本地项目proguard规则

android {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
 }

只需添加行proguard.config=${sdk.dir}\tools\proguard\proguard android.txt:proguard-project.txt并删除proguard.cfg就可以了
android {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
 }