アプリケーションをビルドしようとしているときに「不適切または誤ったコア クラスの使用法」というエラーを受け取ったとき、Stackoverflow を検索し、いくつかの提案に従って、ant と jarjar を使用してアプリケーションをビルドしました。
Ant ビルドは dx ステップで失敗し、以下に報告されたエラーが発生しました。
「強制できません」エラー (以下を参照) を修正する方法に関する提案を Web で検索しましたが、役立つものは何も見つかりませんでした。
ant ビルドの jarjar ステップが機能しているように見えたことに注意してください。bin/repackagedclasses.jar の Java ディレクトリの内容を確認したところ、それらは空で、すべての内容が名前が変更された同等のディレクトリ (/java) に転送されました。
私が従った (ant と jarjar を使用した) 提案は 2 年以上前のものであり、Android 2.x に適用されたことにも注意してください。Android 4 および関連するインフラストラクチャでは機能しない可能性があります (おそらく?)。
最後に 1 点。sdk/platform-tools の dx を次のように変更しました。
exec java $javaOpts -jar "$jarpath" "$@"
exec java $javaOpts -jar "$jarpath" --core-library "$@"
上記の変更の有無にかかわらず、ant ビルドまたは Eclipse ビルドに違いはありません。
-dex:
[dex] Converting compiled files and external libraries into /home/adonnini/workspace3/CommManagerN6/bin/classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] com.android.dx.util.ExceptionWithContext: can't coerce string{"android.permission.ACCESS_CACHE_FILESYSTEM"} to Lcommmanager/java/lang/String;
[dx] at com.android.dx.util.ExceptionWithContext.withContext(ExceptionWithContext.java:46)
[dx] at com.android.dx.dex.cf.CfTranslator.processFields(CfTranslator.java:176)
[dx] at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:133)
[dx] at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:87)
[dx] at com.android.dx.command.dexer.Main.processClass(Main.java:483)
[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 com.android.dx.command.dexer.Main.main(Main.java:174)
[dx] at com.android.dx.command.Main.main(Main.java:91)
[dx] Caused by: java.lang.UnsupportedOperationException: can't coerce string{"android.permission.ACCESS_CACHE_FILESYSTEM"} to Lcommmanager/java/lang/String;
[dx] at com.android.dx.dex.cf.CfTranslator.coerceConstant(CfTranslator.java:210)
[dx] at com.android.dx.dex.cf.CfTranslator.processFields(CfTranslator.java:160)
[dx] ... 14 more
[dx] ...while processing ACCESS_CACHE_FILESYSTEM Lcommmanager/java/lang/String;
[dx] ...while processing android/commmanager/Manifest$permission.class
[dx]
[dx] 1 error; aborting
BUILD FAILED
/home/adonnini/workspace3/CommManagerN6/build.xml:964: The following error occurred while executing this line:
/home/adonnini/workspace3/CommManagerN6/build.xml:376: null returned: 1