Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apk创建的Proguard问题_Java_Android_Eclipse_Duplicates_Proguard - Fatal编程技术网

Java apk创建的Proguard问题

Java apk创建的Proguard问题,java,android,eclipse,duplicates,proguard,Java,Android,Eclipse,Duplicates,Proguard,好吧,这让我一天都快发疯了。我主要是一个iOS的家伙,所以我对Proguard和其他东西不太了解。我制作了一个Android应用程序,它包括dropbox和Google Drive API。如果我通过Eclipse将应用程序部署到手机上,它会工作得很好,但当我尝试导出应用程序以生成apk文件时,控制台上会出现严重错误。 我的project.properties文件是这样的 # To enable ProGuard to shrink and obfuscate your code, uncomm

好吧,这让我一天都快发疯了。我主要是一个iOS的家伙,所以我对Proguard和其他东西不太了解。我制作了一个Android应用程序,它包括dropbox和Google Drive API。如果我通过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\u FOLDER\u 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,googledrive功能在手机中不起作用,但如果我通过Ecipse部署,它就起作用了。
请帮助我。

要么你想使用Proguard(优化、模糊处理等),要么你不想

如果不需要,只需在项目中对指向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,您可以在此处找到一个示例:

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

-libjars <path_to_a_jar_used_in_app>
-libjars

还有一些其他错误-dontwarn,取决于您收到的警告…

FWIW,升级到ADT 22后,我在Proguard配置中遇到了800多个类似的错误,该配置以前工作正常,但在没有Proguard的情况下构建时,该应用程序也在存在ClassDefNotFound错误的设备上崩溃


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

这感觉有点愚蠢,我和proguard混了三天,但问题是我在发布版apk中使用了调试密钥库SHA1键,因此,Google drive应用程序崩溃,我在Google API控制台中使用了正确的SHA1键来解决它。

如果我不在project txt中通过注释使用proguard,dropbox部分工作正常,但Google drive部分工作不正常。好吧,那又是一个猜测。在project.properties中尝试以下行:proguard.config=${sdk.dir}/tools/proguard/proguard android.txt:proguard-google-api-client.txt,并在proguard-google-api-client.txt(如果需要,请创建它)中复制我在前面的答案中给出的proguard配置。如果它不工作,请指定它在构建、在模拟器上执行或在物理手机上不工作。只需简单说明:您的
-libjars
提示帮助我解决了很多问题,但正确的命令是
-librayjars
。也许这有助于其他人避免几分钟的混乱和搜索:-)它已经被勾选了,我添加了一些-dontwarn的东西,现在apk被创建了,但应用程序在Google Drive上载部分崩溃。类似: