ADT を 16 から 18 に更新して以来 (Proguard を 4.6 から 4.8 に更新する必要がありました)、Proguard は非常に奇妙な動作をしています (一貫性がありませんか?)。
このような最新の問題は、署名済み (リリース) APK をエクスポートしようとすると、次のエラーが表示されることです。
Proguard returned with error code 1. See console
Warning: com.bta.LibProj2: can't find referenced class com.bta.R$string
Warning: com.bta.MyDlg1: can't find referenced class com.bta.R$string
Warning: com.bta.MyMenu: can't find referenced class com.bta.R$menu
Warning: com.bta.R: can't find referenced class com.bta.R$attr
Warning: com.bta.R: can't find referenced class com.bta.R$drawable
Warning: com.bta.R: can't find referenced class com.bta.R$menu
Warning: com.bta.R: can't find referenced class com.bta.R$string
Warning: com.bta.myapp.MyAppActivity$1: can't find referenced class com.bta.myapp.MyAppActivity
Warning: com.bta.myapp.MyAppActivity$ELicenseResponse: can't find referenced class com.bta.myapp.MyAppActivity
Warning: com.bta.myapp.MyAppActivity$MyLicenseCheckerCallback$1: can't find referenced class com.bta.myapp.MyAppActivity$MyLicenseCheckerCallback
Warning: com.bta.myapp.MyAppActivity$MyLicenseCheckerCallback$1: can't find referenced class com.bta.myapp.MyAppActivity
Warning: com.bta.myapp.R$array: can't find referenced class com.bta.myapp.R
Warning: com.bta.myapp.R$layout: can't find referenced class com.bta.myapp.R
Warning: com.bta.myapp.R$xml: can't find referenced class com.bta.myapp.R
Warning: there were 49 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars').
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:212)
at proguard.ProGuard.execute(ProGuard.java:87)
at proguard.ProGuard.main(ProGuard.java:493)
proguard.cfgに追加するよう推奨されていること-libraryjars
に気付きましたが、以前はこれを行う必要がありませんでした (そして、コードを変更したわけではなく、Proguard を 4.6 から 4.8 に更新しただけでした)。これは、開発環境の構成に何か問題があることを示唆していますか?
また、Proguard のトラブルシューティング セクションで参照されているクラスが見つからないことを確認しました。これは、ライブラリを介して指定することを忘れたり無視したりすることを指します-libraryjars
(これは認めます) が、ライブラリを指定したことはなく、以前は常に機能していました! 何が変わったのですか?
私のproguard.cfgファイルBTWは次で始まります:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
何が起こっているのか分かりますか?Proguard が私に苦労を与え始めたのはなぜですか? (私は 1 年以上の間、非常にスムーズにそれを使っていました) システム構成に欠けている基本的なものはありますか?
ところで、使用しているライブラリをすべて-libraryjars
行で指定して追加しようとしましたが、Proguard の動作は悪化するだけでした。上記で引用したエラー ログが表示されずに失敗します。