À propos de la modification et de la réédition du package jar Android

arrière-plan:

Pour certains packages jar, il existe des bugs internes, et les solutions sont les suivantes :
(1) Modifier sa logique d'affectation par réflexion
(2) Réécrire ses méthodes par héritage
(3) Modifier Pour le code source du package jar, pour réparer le problème de la racine
, (1) et (2) sont plus adaptés au niveau de modification et au niveau de difficulté. Cependant, dans certains cas, les conditions de modification ne peuvent pas être remplies, il existe donc l'option 3. Sinon, attendez simplement le officiel version du package jar à mettre à jour.

environnement:

(1) win10
(2) jdk11 (3) téléchargement
de l'outil de visualisation jd (version jd-gui-1.6.6.jar)

Combat réel

Par exemple, prenez aliyun-vod-upload-android-sdk-1.6.5.jar. Parmi eux
, classe : AliyunVodAuth, ligne 181, il y a un jugement de pointeur nul qui n'est pas effectué, ce qui amène le programme à signaler une erreur. Le message d'erreur est le suivant :

com.alibaba.sdk.android.vod.upload.auth.AliyunVodAuth$2$1.onFailure(AliyunVodAuth.java:181)
com.aliyun.vod.qupaiokhttp.OkHttpTask.onPostExecute(OkHttpTask.java:279)
com.aliyun.vod.qupaiokhttp.OkHttpTask$2.run(OkHttpTask.java:228)
android.os.Handler.handleCallback(Handler.java:942)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loopOnce(Looper.java:211)
android.os.Looper.loop(Looper.java:300)
android.app.ActivityThread.main(ActivityThread.java:8152)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028)

Étant donné que l'emplacement actuel de ce package est déjà le dernier package jar officiel, nous ne savons pas combien de temps il faudra attendre la mise à jour officielle. Par conséquent, nous devons modifier manuellement le contenu du package jar.

(1) Extraire les fichiers, les modifier et les enregistrer

Le code source réel du code d'erreur est le suivant :

if (var1x == 1003) {
	AliyunVodAuth.this.vodAuthCallBack.onError(AliyunVodErrorCode.VODERRORCODE_HTTP_ABNORMAL, "http error response unknown.");
 }

On peut voir que cela est dû au fait que vodAuthCallBack n'est pas vide. Car, lors de notre processus de modification, il suffit d'ajouter un jugement nul.

Déterminez la classe du rapport d'erreurs. Le code source est comme indiqué ci-dessous :
Insérer la description de l'image ici
Sélectionnez ensuite la classe et cliquez sur FIle–Save. Enregistrez cette classe localement. Ensuite, il y aura un fichier Java enregistré dans le répertoire enregistré correspondant, puis modifiera le jugement dans le fichier, comme indiqué ci-dessous :
Insérer la description de l'image ici
Enregistrer après modification

(1) Compiler via Java C pour générer des fichiers de classe

Recherchez le package jar dépendant correspondant dans la classe. Dans cette classe, le package jar dépendant est :
gson.jar, okhttp.jar, ces deux packages sont donc nécessaires pour exécuter le
répertoire exécutable javac. Les dépendances sont les suivantes :
Insérer la description de l'image ici
Ensuite, dans le fenêtre de commande dos Entrez la commande suivante

Les instructions d'exécution sont les suivantes :
javac -cp aliyun-vod-upload-android-sdk-1.6.5.jar;E:\Android\sdk\platforms\android-30\android.jar;okhttp-4.5.0.jar ;gson- 2.10.1.jar *.java

Parmi eux, cp représente les fichiers dépendants impliqués lors de la compilation, qui sont séparés par ";" dans la fenêtre, tandis que *.java représente tous les fichiers au format .java du répertoire, et une certaine classe Java peut également être spécifiée.

Enfin, exécutez la commande pour générer les fichiers suivants :
Insérer la description de l'image ici
Ensuite, attribuez la valeur correspondant au fichier .class généré, écrasez le fichier d'origine et vous pourrez l'utiliser.

c'est tout------------------------------------------------ -------------------------------------------------- ----

Supongo que te gusta

Origin blog.csdn.net/motosheep/article/details/132150736
Recomendado
Clasificación