0

ANTを使用して Android アプリケーションを構築しています。最新のSDK ツール (Rev 21)プラットフォーム ツール (Rev 16)にアップグレードし、manifest.xml でandroid:targetSdkVersion="17"を設定すると、Ant ビルドがIllegalAccessErrorで失敗します。

不思議なことに、ダブルアリ リリースが成功します。

  • ant clean -> ビルド成功
  • ant リリース- > ビルドに失敗しました
  • ant リリース- >ビルド成功

明らかに、私たちが実際にやりたいことは次のことではありません。

  • ant クリーン リリース- > ビルドに失敗しました

android update project -pで build.xml を再生成しました。同じ動作になります。

以下の ANT 出力を参照してください。

release:

-pre-build:

-code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
[renderscript] No RenderScript files to compile.
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...

BUILD FAILED
/home/me/android-sdks/tools/ant/build.xml:645: The following error occurred while executing this line:
/home/me/android-sdks/tools/ant/build.xml:683: java.lang.IllegalAccessError: tried to access class com.google.common.base.Platform from class com.google.common.base.CharMatcher
    at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:684)
    at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:63)
    at com.google.common.base.Splitter.on(Splitter.java:129)
    at com.android.sdklib.internal.build.SymbolWriter.write(SymbolWriter.java:51)
    at com.android.ant.AaptExecTask.execute(AaptExecTask.java:711)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at com.android.ant.IfElseTask.execute(IfElseTask.java:120)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:809)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 2 seconds

雪に覆われた中央ヨーロッパから多くの感謝と敬意を表します

4

2 に答える 2

1

たぶん、これはこのエラーに遭遇したときに誰かを助けるでしょう:

同じ問題がありました。その理由は、Ant のクラスパスで JAR が重複していたためです。私の場合、上記のクラスを含む ANT_HOME\lib フォルダーに checkstyle-5.6-all.jar が追加されたため、重複したクラスとそれらの間のアクセスが原因でエラーが発生しました。

この場合、このライブラリを使用する Ant ターゲットのローカル クラスパス変数を追加し、ANT_HOME\lib をできるだけきれいに保つことをお勧めします。

于 2013-04-30T09:29:22.833 に答える