首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mobclix和Proguard

Mobclix和Proguard
EN

Stack Overflow用户
提问于 2011-08-10 06:23:58
回答 2查看 859关注 0票数 0

我正在尝试使用Proguard来混淆我的代码。我使用Mobclix做广告,当我构建我的APK时,它会显示一个错误:

代码语言:javascript
复制
org.eclipse.core.runtime.CoreException: Proguard returned with error code 1. See console
    at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:228)
    at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:290)
    at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:229)
    at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:214)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: Proguard Error 1 
Output: 
Warning: com.mobclix.android.sdk.MobclixContactsCursorEntityIterator: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsCursorEntityIterator: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5$EntityIteratorImpl: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5$EntityIteratorImpl: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5$EntityIteratorImpl: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5$EntityIteratorImpl: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5$EntityIteratorImpl: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsEntityIterator: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity$NamedContentValues 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity$NamedContentValues 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity$NamedContentValues 
Warning: com.mobclix.android.sdk.MobclixContactsSdk5: can't find referenced class android.content.Entity 
      You should check if you need to specify additional program jars. 
Warning: there were 17 unresolved references to classes or interfaces. 
         You may need to specify additional library jars (using '-libraryjars'), 
         or perhaps the '-dontskipnonpubliclibraryclasses' option. 
java.io.IOException: Please correct the above warnings first. 
    at proguard.Initializer.execute(Initializer.java:308) 
    at proguard.ProGuard.initialize(ProGuard.java:210) 
    at proguard.ProGuard.execute(ProGuard.java:85) 
    at proguard.ProGuard.main(ProGuard.java:499)
    at com.android.ide.eclipse.adt.internal.build.BuildHelper.runProguard(BuildHelper.java:527)
    at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:187)
    ... 4 more

现在,我已经将他们文档中的Mobclix推荐位放到了我的proguard.cfg中:

代码语言:javascript
复制
-keep public class com.mobclix.android.sdk.*
-keep class com.mobclix.android.sdk.MobclixJavascriptInterface

-keepclassmembers class com.mobclix.android.sdk.MobclixJavascriptInterface
{
    public void *(...);
    <methods>;
}

-keepclassmembernames class
com.mobclix.android.sdk.MobclixJavascriptInterface {
    public void *(...);
    <methods>;
}

还有什么我应该做的吗?万分感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-16 03:16:56

这些消息解释说,一些Mobclix类(如com.mobclix.android.sdk.MobclixContactsCursorEntityIterator)依赖于Android运行时类(如android.content.Entity),而这些类并不存在于您的输入jars或库jars中。通常,这可能是一个严重问题的迹象:如果这部分代码被执行,它将会因为NoClassDefFoundError而失败(即使没有混淆)。

看起来实体类是在Android SDK7中引入的,所以我假设您是在一个较旧的SDK上构建的。同样,假设您的代码可以正常运行,尽管缺少这个类,您可以让ProGuard接受与

代码语言:javascript
复制
-dontwarn android.content.Entity*

请注意,-keep选项在这里不起作用。在考虑任何-keep选项之前,ProGuard会执行一致性检查。

另请参阅ProGuard manual > Troubleshooting > Warning:找不到引用的类

票数 0
EN

Stack Overflow用户

发布于 2011-08-10 06:32:27

也许会有所改变

代码语言:javascript
复制
-keep public class com.mobclix.android.sdk.*

代码语言:javascript
复制
-keep public class com.mobclix.android.sdk.**
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7003785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档