9

プロジェクトを Android Studio / Gradle に移行しようとしていますが、 Ant を使用して正常に動作する jar に奇妙な問題が発生しています。RとBuildConfigがjarに含まれているようで、それらのパッケージ名は大文字で宣言されていますが、実際にはパッケージ構造では小文字として定義されています。(開発者の匿名性を保護するためにパッケージ名を変更しました。問題ないことを願っています)

予期しないトップレベルの例外:
com.android.dx.cf.iface.ParseException:クラス名 (com/companyname/UI/BuildConfig) がパス (com/companyname/ui/BuildConfig.class) と一致しません com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520) で com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) で com.android.dx.cf .direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) で com.android.dx.command.dexer.Main.processClass(Main .java:665) com.android.dx.command.dexer.Main.processFileBytes(Main.java:634) で com.android.dx.command.dexer.Main.access$600(Main.java:78) で.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572) com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) com.android.dx.cf. direct.ClassPathOpener.processOne(ClassPathOpener.java:166) com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) で com.android.dx.command.dexer.Main.processOne(Main.java:596) で com.android.dx .command.dexer.Main.processAllFiles(Main.java:498) com.android.dx.command.dexer.Main.runMonoDex(Main.java:264) で com.android.dx.command.dexer.Main.run (Main.java:230) com.android.dx.command.dexer.Main.main(Main.java:199) で com.android.dx.command.Main.main(Main.java:103) ... com/companyname/ui/BuildConfig.class の解析中com.android.dx.command.dexer.Main.run(Main.java:230) で runMonoDex(Main.java:264) com.android.dx.command.dexer.Main.main(Main.java:199) でcom.android.dx.command.Main.main(Main.java:103) で ... com/companyname/ui/BuildConfig.class の解析中com.android.dx.command.dexer.Main.run(Main.java:230) で runMonoDex(Main.java:264) com.android.dx.command.dexer.Main.main(Main.java:199) でcom.android.dx.command.Main.main(Main.java:103) で ... com/companyname/ui/BuildConfig.class の解析中

ここに私の質問があります:

  • GradleではなくAntで動作するのはなぜですか?
  • これは欠陥/バグと見なすべきですか、それとも設計上の決定ですか?
  • 他のjarでこの問題を抱えている人がインターネット上で見つからないのはなぜですか?
  • 問題を修正する方法について、開発者にどのようなアドバイスを与えることができますか?
4

2 に答える 2

5

ライブラリを再構築して /gen ディレクトリからすべてを除外すれば、すべて正常に動作するはずです。

于 2013-11-19T15:39:47.957 に答える
2

これは、Play のパッケージ名 (com.checkpoint.DocSec) がローカル ディレクトリ (com.checkpoint.docsec) と異なり、ローカル ファイル システムのファイル非依存性がビルド プロセスを台無しにしたときに発生しました。

thisによると、マニフェストのパッケージ名を com.checkpoint.capsule.docs に変更し (大文字と小文字が区別されない限り、実際には問題ではありません)、アプリケーション ID を設定できます。 build.gradle を com.checkpoint.DocSec に変更します (以前とまったく同じにすることが非常に重要です!!!)。

これで問題は解決しました。

于 2014-11-23T15:02:56.107 に答える