2012-04-09 72 views
4

我试图通过包浏览器中的内置Proguard支持使用Proguard导出>导出Android应用程序。主项目使用一个库项目,该项目反过来使用android兼容库,它也使用这个兼容库。基本上,像这样:与Android项目使用(兼容性)库的Proguard

BaseLibraryProject BaseActitivity 库:Android的支持,v4.jar MainProject 使用库BaseLibraryProject 库:Android的支持,v4.jar

这个应用程序同时运行的设备和simluators OK 。 然而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. 

正如你看到的:它无法找到兼容性库。

这是既-libraryjars和-dontskipnonpubliclibraryclassmembers的proguard.cfg文件的开始包括:

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontskipnonpubliclibraryclassmembers 
-dontpreverify 
-verbose 
-libraryjars libs/android-support-v4.jar 

不有所作为。我尝试了将库添加到BaseLibrary项目/ MainProject,完全限定路径名的各种组合。似乎没有任何帮助。

关于proguard的大多数stackoverflow问题似乎涉及设置Ant。 任何想法可能导致这个问题,以及如何让Proguard在这个使用多个库的项目上工作?

由于事先

回答

16

ADT 17的发布带来了诸多方面的改进Proguard的工程,包括更好的违约,我认为应该解决您的支持库问题的方式。

参见 - http://tools.android.com/recent/proguardimprovements

蚀(project.properties)

作为ADT 17的project.properties现在文件的默认包括以下行它引用标准Proguard的配置文件(proguard的-机器人。 TXT)和项目的具体Proguard的配置文件(proguard的-project.txt)...

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

我建议创建一个新的Android项目怎么看呢布置并使用这些新文件。由于Proguard和默认配置有所改进,因此您的应用程序将长期受益。

更新

摇篮(的build.gradle)

下面将同时使用默认的标准的ProGuard配置&本地项目proguard的规则。

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

只需添加行proguard.config = $ {sdk。dir} \ tools \ proguard \ proguard-android.txt:proguard-project.txt并删除proguard.cfg使其工作 – 2012-04-10 11:40:07