【问题标题】:Is there an example for getting Proguard working with Cocos2d-x? And twitter4j有没有让 Proguard 与 Cocos2d-x 一起工作的例子?和 twitter4j
【发布时间】:2014-10-02 00:40:11
【问题描述】:

我搜索了讨论.cocos 的示例,但没有。感觉这是一个与操作系统无关的平台,我在这里寻求启发。

通过写作打开它后我感到非常头疼

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

在我的项目基目录中的 project.properties 中。

我无法复制过去的文本,因为 Eclipse 中的控制台显示立即清除并显示为没有任何问题,但我反复收到“错误代码 1。请参阅控制台”类型的消息。

虽然问题似乎出在 twitter4j 上,但我敢肯定在此之前还有很多警告,好吧,我不确定,整个事情来得太突然了。

我已经在这个网站上搜寻了帮助,虽然大多数建议包括添加 dontwarn 行,但我觉得我需要导出库,而不是像我对 twitter4j 所做的那样,只是将 libjar 复制到我项目自己的 lib 文件夹中。

我已经尝试添加:

-dontwarn twitter4j.management.**
-dontwarn twitter4j.**
-dontwarn javax.management.**
-dontwarn com.google.api.client.googleapis.extensions.android.gms.**
-keep class javax.**  { *; }
-keep class org.**  { *; }
-keep class twitter4j.**  { *; }
-keep class java.lang.management.**  { *; }
-keep class com.google.code.**  { *; }
-keep class oauth.signpost.**  { *; }

-libraryjars /libs/twitter4j-core-3.0.3.jar

-keep class twitter4j.**
-keepclassmembers class twitter4j.** {
    <init>(...);
    <methods>;
    <fields>;
}

到 proguard-project.txt 但没有效果。我倾向于不想打扰 proguard,因为无论如何 C++ 更适合混淆。奇怪的是,我阅读的所有指南都没有推广,包括整个 twitter4j 项目。我更喜欢 300kb 的小型库。但如果它限制了其他方面的优化,则不会。

顺便说一下,我的 SDK 是 22.6 版。

____编辑____

在寻找完整示例时,我找到了 SDK/tools/proguard/examples/android.pro

我尝试复制粘贴该批次没有进一步的效果,但对该文件标题中的建议感到不安:

如果您使用的是 Android SDK(2.3 或更高版本),android 工具

已经在您的项目中创建了一个类似的文件,名为 proguard.cfg。

它应该包含这个文件的设置,减去输入和输出路径

(-injars、-outjars、-libraryjars、-printmapping 和 -printseeds)。

生成的 Ant 构建文件会自动设置这些路径。

安卓工具? proguard.cfg? proguard 肯定知道新文件只是被指示引用 SDK/tools/proguard 目录中的配置吗?

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

【问题讨论】:

    标签: android c++ eclipse proguard


    【解决方案1】:

    您说您正在更改 proguard-project.txt,但您实际上是在使用该文件吗?您是否将 project.properties 更改为指向您的文件而不是默认的 android 文件?

    proguard.config=proguard-project.txt
    

    【讨论】:

    • 我的第一步,添加 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt 导致 proguard 被调用并抱怨。我更新了我的问题以显示我使用的 SDK。我相信您的答案是指早期版本。不过我明天试试。
    • 我遇到了更多错误(376 个未解决的引用,而我的方式为 118 个)按照您的方式进行。那可能是在 SDK
    【解决方案2】:

    您的project.properties 文件应指向 Android 的默认配置和您自己的项目特定配置:

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

    这是 Android SDK 生成的属性文件中的标准行。

    在您的proguard-project.txt 文件中,您可以添加-keep 选项以避免执行反射的代码出现问题。在这种情况下,您还应该添加 -dontwarn 选项以向 ProGuard 保证缺少的依赖项在实践中不是问题。然后它将继续处理申请。

    您不应添加-libraryjars 选项,因为Android 构建过程已经自动为您指定了所有必要的-injars-outjars-libraryjars

    【讨论】:

    • 谢谢,我会试一试,如果我还没有,我个人打算放弃 twitter4j。​​
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2020-03-09
    • 1970-01-01
    • 2013-03-27
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多