我有Proguard的问题和使用外部库.我的项目编译没有错误,并在真实设备上成功运行,但只有当我从Eclipse运行它时.现在我想制作一个混淆版本,所以我做了以下内容:运行"android update project -p ./"添加
proguard.dir=/home/stoned/android-sdk-linux_86/proguard4.5.1/lib
proguard.config=/home/stoned/workspace/Fidoo/proguard.cfg
Run Code Online (Sandbox Code Playgroud)
当我运行"ant release"时,我得到以下内容:
... skipped many irrelevant messages ...
-obfuscate:
[mkdir] Created dir: /home/stoned/workspace/Fidoo/bin/proguard
[jar] Building jar: /home/stoned/workspace/Fidoo/bin/proguard/original.jar
[proguard] ProGuard, version 4.4
[proguard] ProGuard is released under the GNU General Public License. The authors of all
[proguard] programs or plugins that link to it (com.android.ant, ...) therefore
[proguard] must ensure that these programs carry the GNU General Public License as well.
[proguard] Reading input...
[proguard] Reading program jar [/home/stoned/workspace/Fidoo/bin/proguard/original.jar]
[proguard] Reading program jar [/home/stoned/workspace/Fidoo/libs/exapi-1.16.jar] …Run Code Online (Sandbox Code Playgroud) 当我在Eclipse中创建一个新项目时,会立即发生这种情况.
我在项目中只有1个jar文件,我试图将其删除,然后重复添加几次,并在此之后清理项目.
我更新了ProGuard(我认为),下载了新版本,并将lib文件夹替换为此处的线程说.
我的default.properties文件如下所示:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-8
Run Code Online (Sandbox Code Playgroud)
因此无法评论ProGuard的任何内容,这也是另一个线程中提到的.我觉得我已经尝试了一切,但仍然存在这个错误.如果我去,我注意到的一件事:
window -> preferences -> android -> build.并取消选中"当外部jar包含本机库时强制错误".然后我得到:"无法解决R" …
我更新到最新的Android ADT,现在我工作区中的每个项目都显示错误,尽管实际文件中没有任何内容.即使是一个干净的Android项目也会出现错误,即使我已经仔细检查了所有首选项,但我没有找到任何修复程序,尽管我已多次调查每个可能的帮助论坛.
我收到了很多随机错误消息,这里只是一些:"当前文件与给定配置不匹配.","转换为Dalvik格式失败,错误1"(不再是),"无效的首选项页面路径:XML语法","无法加载项目的属性文件*"等.
我的所有项目在更新前都有效.
以下都不起作用:清理项目,删除项目并再次导入,删除库和临时文件以及修复项目属性,取消选中Is Library,更新ProGruad,更新Eclipse,将Eclipse移动到C:\ Eclipse,更改API级别和支持的Android版本等...
我已经和这个问题斗争了一段时间了.
编辑:以下的东西也不起作用:删除LibraryName_src文件(我的项目没有).
编辑:我取消选中常规首选项中的一个复选框,使Eclipse延迟打包(我稍后会检查该复选框的名称),当前错误消失但现在它说"找不到*.apk!"
我在导出我的应用程序时看到'转换为dalvik格式失败,错误1'但我在控制台输出中没有看到任何内容来帮助我解决它
我重新启动了eclipse并检查了控制台,我什么都看不到?
proguard日志存储在哪里?
当没有proguard运行应用程序时,一切正常
我在将apache xerces.jar放入构建路径时得到以下错误.
我之前搜索过错误..并且描述的解决方案是针对冲突的罐子..但这不是这里的情况..我得到一些ParserException因为坏的utf-8
我试过了(但没有运气):
来自这里的解决方案
删除xerces运行项目
几个月前我通常通过构建路径导入xerces并且它已经工作了.任何帮助赞赏!
[2013-12-24 12:21:44 - tryout] Dx意外顶级异常:com.android.dx.cf.iface.ParseException:错误的utf-8字节a0,偏移00000004,位于 com.android.dx.cf .cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:374)位于com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262)的com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser) .java:294)com的com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150)com的com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124). android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115)位于com.android.dx.cf.direct的com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482). DirectClassFile.parse(DirectClassFile.java:406)位于com.android.dx.cf.direct.DirectClassFile.getMagic的com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)(DirectClassFile.java: 251)在com.android.dx.command.dexer.M ain.processClass(Main.java:665)at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)at com.android.dx.command.dexer.Main.access $ 600(Main.java :78)com.android下的com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)的com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:572)位于com.android.dx.command.dexer.Main的com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)中的.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) .processOne(Main.java:596)位于com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)的com.android.dx.command.dexer.Main.runMonoDex(Main.java:264) )在sun.reflect的sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)中的com.android.dx.command.dexer.Main.run(Main.java:230) .在com.android.ide.eclipse.a上的java.lang.reflect.Method.invoke(未知来源)中删除了MetAccessorImpl.invoke(未知来源)dt.internal.build.DexWrapper.run(DexWrapper.java:187)位于com.android.ide.eclipse的com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:786). adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:597)org.eclipse.core.internal.events.BuildManager $ 2.run(BuildManager.java:733)org.eclipse.core.runtime.SafeRunner .run(SafeRunner.java:42)org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328) )org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403)org.eclipse.core.internal.resources.Project $ 1.run(Project.java:618)org.eclipse.core .internal.resources.Workspace.run(Workspace.java:2345)位于org.eclipse.core.internal.resources.Project.build的org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) (Project.java:124)com.android.ide.eclipse.adt.internal.project.ProjectHelper.doF ullIncrementalDebugBuild(ProjectHelper.java:1116)位于org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.)的com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147). java:858)org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707)atg.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018)org.eclipse .debug.internal.ui.DebugUIPlugin $ 8.run(DebugUIPlugin.java:1222)org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)引起:java.lang.IllegalArgumentException:bad utf -8字节a0,偏移00000004,位于com.android.dx.rop.cst.CstString.throwBadUtf8(CstString.java:171)的com.android.dx.rop.cst.CstString.utf8BytesToString(CstString.java:143)at com.android.dx.rop.cst.CstString.(CstString.java:200)在com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371)... 43更多......解析时cst 012c在偏移00000afe ...而p arsing cst 00a5在偏移00000316 ...解析 > org/apache/xerces/impl/xpath/regex/ParserForXMLSchema.class
> [2013-12-24 12:21:44 - 试用] Dx 1错误; aborting [2013-12-24 12:21:44 - tryout]转换为Dalvik格式失败,错误1
我正在使用Html Unit转到网页,填写一些表格,然后单击按钮进入下一个网页.那个新的网页(在我的代码中称为newPage)是我从中提取html源代码的.
这种方法在Netbeans中完美运行(虽然它确实提供了过多的警告)
import org.jsoup.Jsoup;
/* Regular (textview, button, etc) imports */
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
String username = "USERNAME", school = "SCHOOL", userpassword = "PASSWORD";
HtmlElement loginName = null;
HtmlElement password = null;
//HtmlPage newPage;
HtmlAnchor anchorByHref = null;
try {
WebClient webClient = new WebClient();
final HtmlPage page = webClient
.getPage("https://cupertino.schoolloop.com/portal/login?d=x&return_url=1325402408153");
loginName = page.getElementByName("login_name");
password = page.getElementByName("password");
loginName.setTextContent(username);
loginName.setAttribute("value", username);
password.setAttribute("value", userpassword);
password.setTextContent(userpassword);
anchorByHref …Run Code Online (Sandbox Code Playgroud) 虽然有很多类似标题的问题,但我找不到解决这个问题的方法.
我在Eclipse中有一个Android项目,它引用ActionBarSherlock 4.0.2作为Android库.此外,我在/ libs文件夹中添加了ACRA和Google Analytics的JAR.支持v4 jar取自ABS库.
项目的Java Build Path看起来像这样

通过向导导出时,出现"转换为Dalvik格式失败,错误1"错误.
清除,删除所有Android依赖项并单击修复项目属性和清除都不起作用.
任何的想法?
编辑:
我错过了一些信息:我在Mac OS 10.6.8,Eclipse Indigo,Android SDK Tools r19和ADT插件v18上这样做.
project.properties文件包含proguard.cfg文件:注释它确实避免了这个问题.
我在使用Proguard和一些库的Android项目上遇到了一些麻烦.具体来说,我有一个XmlPullParser碰撞,无论我做什么,我似乎无法解决它.这是我正在使用的库:
JacksonParser,包括:
XStream,包括:
还有其他人,但他们不是问题.这些似乎是我们问题的罪魁祸首.
具体来说,问题是:
优化
如果我进行优化,我会"转换为dalvik失败1".在外部JAR的"转换为Dalvik格式失败并出现错误1"中有一篇专门的帖子,这使我指出了重复的XmlPullParser类的方向.这是有道理的,因为XStream使用app3_min-1.1.4c.jar,其中包含一个XmlPullParser,它具有比android.jar中包含的功能更好/更多的功能.因此,我尝试从android.jar中删除通配符xmlpull**:
-libraryjars <java.home>/lib/rt.jar;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/**)
Run Code Online (Sandbox Code Playgroud)
我也试过明确删除它们:
-libraryjars <java.home>/lib/rt.jar;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/XmlPullParser.class,!org/xmlpull/v1/XmlPullParserException.class,!org/xmlpull/v1/XmlPullParserFactory,!org/xmlpull/mxp1/MXParser)
Run Code Online (Sandbox Code Playgroud)
但这两种方法都没有帮助.
但等等,还有更多(尽管所有问题都集中在同一个问题上,所以我想如果我解决了这个问题,那么其他问题就会消失).
困惑
如果我尝试混淆,我得到以下运行时错误:
java.lang.NoSuchMethodError: android.content.res.XmlResourceParser.s
looking this up in the mapping, i get: .s = abstract int next()
Run Code Online (Sandbox Code Playgroud)
所以它缺少next()方法.那么为什么这种方法丢失了?我不明白.我甚至试过这样做:
-keep class android.content.res.XmlResourceParser { int next(); }
Run Code Online (Sandbox Code Playgroud)
确保方法得到保留,但我仍然遇到同样的问题.
收缩
萎缩似乎也失败了.应用程序启动但永远不会到达任何地方,它只是不断尝试一遍又一遍地启动第一个活动并给我一个无用的错误.我不是很担心这个,但是,如果我可以进行模糊处理和优化工作,我可以不受畏缩地生活.
更多信息
作为参考,我试图以两种方式引用我的库,第一种是使用injars:
-injars ReferencedAssemblies/XStream/xpp3_min-1.1.4c.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/JacksonParser/jackson-all-1.6.4.jar(!META-INF/MANIFEST.MF,!META-INF/ASL2.0,!META-INF/LICENSE,!META-INF/NOTICE)
-injars ReferencedAssemblies/JacksonParser/joda-time-1.6.2.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/JacksonParser/jsr311-api-1.0.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/JacksonParser/stax2-api-3.0.0.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/XStream/xstream-for-android-1.0.0.jar(!META-INF/MANIFEST.MF)
Run Code Online (Sandbox Code Playgroud)
这甚至不会建立.
我也这样做了:
-libraryjars <java.home>/lib/rt.jar
;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/**)
#;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/XmlPullParser.class,!org/xmlpull/v1/XmlPullParserException.class,!org/xmlpull/v1/XmlPullParserFactory,!org/xmlpull/mxp1/MXParser)
;ReferencedAssemblies/JacksonParser/jackson-all-1.6.4.jar(!META-INF/MANIFEST.MF,!META-INF/ASL2.0,!META-INF/LICENSE,!META-INF/NOTICE)
;ReferencedAssemblies/JacksonParser/joda-time-1.6.2.jar(!META-INF/MANIFEST.MF)
;ReferencedAssemblies/JacksonParser/jsr311-api-1.0.jar(!META-INF/MANIFEST.MF)
;ReferencedAssemblies/JacksonParser/stax2-api-3.0.0.jar(!META-INF/MANIFEST.MF)
;ReferencedAssemblies/XStream/xpp3_min-1.1.4c.jar(!META-INF/MANIFEST.MF)
Run Code Online (Sandbox Code Playgroud)
这让我走得最远,如果我不优化,我可以导出APK.
我也这样做了:
-dontwarn org.xmlpull.v1.** …Run Code Online (Sandbox Code Playgroud) 我只添加了一个现有的完全工作项目,该文件 com/android/vending/billing/IMarketBillingService.aidl
(我没有添加任何其他内容(来自market_billing样本),因为我甚至没有尝试使用该服务)
它编译和构建完美,但当我尝试运行它时,我在控制台中收到以下内容:
java.lang.IllegalArgumentException: already added: Lcom/android/vending/billing/IMarketBillingService$Stub$Proxy;
Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
Dx at com.android.dx.command.dexer.Main.processClass(Main.java:486)
Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
Dx at com.android.dx.command.dexer.Main.access$400(Main.java:67)
Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
Dx at com.android.dx.command.dexer.Main.processOne(Main.java:418)
Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
Dx at com.android.dx.command.dexer.Main.run(Main.java:206)
Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Dx at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
Dx at java.lang.reflect.Method.invoke(Unknown Source)
Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:745)
Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:634)
Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
Dx at …Run Code Online (Sandbox Code Playgroud) 自从我安装了新的SDK以来,我遇到了这个问题.当我尝试将同一个类链接到构建两次时,我已经读到过这种情况.
但这是一个特殊的事情:
发生错误时.但是,当我执行以下任一操作时:
我似乎陷入了一些无法解决的范式.也许有建立规则来规避这个?
任何帮助将不胜感激!