首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改jar中的类: android构建失败

修改jar中的类: android构建失败
EN

Stack Overflow用户
提问于 2015-08-13 19:13:28
回答 3查看 375关注 0票数 7

我想更改用于cordova的条形码扫描插件jar文件中的一些内容,即CaptureActivity class中的CaptureActivity class

我用终端解压缩(我在mac上)。

然后,使用ClassEditor查找类CaptureActivity,并更改值。接下来,我使用jar cfv samenameasoriginal.jar *重新归档了它。然后,我把原来的jar文件换成了新的。

问题是,当我尝试使用离子型构建它时,我会得到一长串错误列表,其中包括:

意外的顶级异常: com.android.dx.cf.iface.ParseException:糟糕的属性长度;预期长度00000002 ...while解析

我注意到新的jar文件比原来的jar文件大7kb,虽然我只将1500更改为9500,所以这有点奇怪。

有人能帮我吗?在网上查了一下但什么也没发现。

EN

回答 3

Stack Overflow用户

发布于 2015-08-24 14:04:14

从类中扩展并调整值:

代码语言:javascript
复制
public class CustomCaptureActivity extends CaptureActivity {

    RESULT_DISPLAY_DURATION_MS = 9500; // wheras 9500 is your custom value
}

而不是现在调用CaptureActivity,而是使用您的自定义类。

如果RESULT_DISPLAY_DURATION_MS是只读的:将使用该变量的方法复制并粘贴到您的自定义类中,并用在您自己的类中定义的新常量替换该变量。只要CaptureActivity不是final,希望这能为您带来好处。

票数 1
EN

Stack Overflow用户

发布于 2015-08-25 12:33:40

我认为问题在于,当您创建JAR时,有一些链接可能与文件的旧版本有关(因为选择原因),而且所有的东西都崩溃了。

不确定,但我想这就是原因。

因此,您可以使用或装饰设计模式(如果可能的话)子类,而不是更改文件( pattern ),或者您可以使用反射直接修改库。

这里有一个如何更改私有最终字段的示例。你也可以做类似的事情:

代码语言:javascript
复制
import java.lang.reflect.*;

public class EverythingIsTrue {
     static void setFinalStatic(Field field, Object newValue) throws Exception {
         field.setAccessible(true);

         Field modifiersField = Field.class.getDeclaredField("modifiers");
         modifiersField.setAccessible(true);
         modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

         field.set(null, newValue);
     }

     public static void main(String args[]) throws Exception {      
         setFinalStatic(Boolean.class.getField("FALSE"), true);

         System.out.format("Everything is %s", false); // "Everything is true"
     }
}
票数 1
EN

Stack Overflow用户

发布于 2015-08-25 12:24:25

正确的答案是,有些jar文件没有编译。您应该进入项目中的构建路径(设置所有依赖路径)文件,并查看您的依赖项。

如果您只是导入一些jar文件,您可以尝试删除它们并一次添加它们。这将帮助您确定它们中的哪一个会导致错误。

在我的例子中,我就是这样做的,当我导入最后一个程序时,应用程序编译了。所以我认为真正的问题是我同时进口了太多。但现在一切都成功了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31996598

复制
相关文章

相似问题

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