Jarパッケージが混同された後、引用が間違っています.

2160 ワード

引用後に間違ったロゴを貼り付けます.
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.
ProcessException: Return code 1 for dex process

Jarパッケージのclassをdexに変換する過程でエラーが発生しました.
このjarパッケージを参照するエンジニアリング構成は、次のとおりです.
buildTypes {
    debug {
        minifyEnabled true
        useProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

キー:minifyEnabled true useProgurad false
発生原因:
パッケージが必要なクラスに内部クラス、TimerTaskが多すぎて、パッケージが混同されたa.class b.class..多すぎて26文字を超え、最後にA.classが現れた. 
リファレンスエンジニアリングは、上記の構成を使用すると、Aがa.classのようなエラーに一致しないことを示します.
a.class b.classのようなクラスは、混同時に内部クラスを個別に処理して生成され、同じパッケージのjavaクラスに26以上の内部クラスがあると、上記のバグが発生します.
私がよく理解できないのは、Androidがa.class A.classのような状況を生み出す以上、なぜ圧縮混同時に認識できないのかということです.
解決方法:
1.同じパッケージの内部クラス数を26を超えないように減らす.そうでなければ複数のバッグの下に置く
2.混同ルールにルールを追加し、内部クラスをa.class$の前にクラス名、後に特定の内部クラス名を混同しないように内部クラスを処理します.*の場合、すべての内部クラスを表します.
    
-keep class com.ihealth.communication.manager.iHealthDevicesManager$*{
    *;
}

以上は私個人が直面した状況と最終的な解決策にすぎません.
間違いがあれば、指摘を歓迎します.