apk创建的Proguard问题

好的,这让我疯狂了一天。 我主要是一个iOS人,所以我不太了解Proguard和东西。 我制作了一个包含Dropbox和Google Drive API的Android应用。 如果我通过Eclipse在手机上部署它,该应用程序工作得很好但是当我尝试导出用于apk文件生成的应用程序时,我在控制台上收到了一个令人讨厌的错误。 我的project.properties文件是这样的……

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt:proguard-google-api-client.txt # Project target. target=android-17 android.library=false 

错误对话框是这样的… PROJECT_FOLDER_NAME / proguard-project.txt不存在或不是常规文件

所以我编辑了我的project.properties并删除了proguard-project.txt部分。

现在在创建apk时我在控制台上遇到这些错误…

 [2013-05-15 18:48:28 - BackMyAppUp] Proguard returned with error code 1. See console [2013-05-15 18:48:28 - BackMyAppUp] Note: there were 367 duplicate class definitions. [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.commons.logging.impl.ServletContextCleaner: can't find superclass or interface javax.servlet.ServletContextListener [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.http.entity.mime.FormBodyPart: can't find superclass or interface org.apache.james.mime4j.message.BodyPart [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.http.entity.mime.HttpMultipart: can't find superclass or interface org.apache.james.mime4j.message.Multipart [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.http.entity.mime.MinimalField: can't find superclass or interface org.apache.james.mime4j.parser.Field [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.http.entity.mime.content.AbstractContentBody: can't find superclass or interface org.apache.james.mime4j.message.SingleBody [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.http.entity.mime.content.ContentBody: can't find superclass or interface org.apache.james.mime4j.message.Body [2013-05-15 18:48:28 - BackMyAppUp] Warning: org.apache.http.entity.mime.content.ContentBody: can't find superclass or interface org.apache.james.mime4j.descriptor.ContentDescriptor [2013-05-15 18:48:28 - BackMyAppUp] Warning: library class android.net.http.AndroidHttpClient extends or implements program class org.apache.http.client.HttpClient [2013-05-15 18:48:28 - BackMyAppUp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced class com.google.android.gms.R [2013-05-15 18:48:28 - BackMyAppUp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced class com.google.android.gms.R$string [2013-05-15 18:48:28 - BackMyAppUp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced class com.google.android.gms.R$string [2013-05-15 18:48:28 - BackMyAppUp] Warning: com.google.android.gms.auth.GoogleAuthUtil: can't find referenced class com.google.android.gms.R$string 

和大约300条类似的线。

如果我使用从bin文件夹生成的apk,谷歌驱动器function在手机中不起作用,但如果我通过Ecipse部署它可以工作。 请帮帮我。

FWIW,在升级到ADT 22后,我有超过800个类似的错误,Proguard配置以前工作正常,该应用程序也在没有Proguard的情况下在ClassDefNotFound错误的设备上崩溃。

最后的解决方案是在我的主项目及其所有库项目的构建路径编辑器的Order and Export选项卡上勾选“Android Private Libraries”。

你想要使用Proguard(优化,混淆,……),或者你不想。

如果你不想要,只需注释(带#)指向project.properties中proguard配置的部分:

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

如果您愿意,解决方案是保持行,并创建以下文件:proguard-project.txt和proguard-google-api-client.txt

对于proguard-google-api-client.txt,您可以在此处找到一个示例: https ://google-api-java-client.googlecode.com/hg/google-api-client-assembly/proguard-google-api -client.txt

对于proguard-project.txt,它将取决于您在提交另一个错误后得到的错误。 您可能需要添加几个:

 -libjars  

和其他一些 – 警告,取决于你得到的警告……

好吧,这感觉有点愚蠢,3天我搞乱了proguard但问题是我在发布apk中使用了调试密钥库SHA1密钥,因此Google驱动程序应用程序崩溃,我在Google API控制台中使用了正确的SHA1密钥来解决它。