baksmailの穴を埋める道



Road Filling Pits Baksmail



サードパーティのaarファイルを使用して360プラグインを解決するため、プラグインの独立バージョンのapkコンパイルに問題はなく、インストールを開いたときにエラーのみが報告されます。ここでは、360のプラグイン開発についてお話したいと思います。

java.lang.VerifyError: Verifier rejected class com.llvision.glass3.core.lcd.LCDService: void com.llvision.glass3.core.lcd.LCDService.onCreate() failed to verify: void com.llvision.glass3.core.lcd.LCDService.onCreate(): [0x66] register v1 has type Reference: java.lang.Object but expected Precise Reference: android.support.v4.content.LocalBroadcastManager (declaration of 'com.llvision.glass3.core.lcd.LCDService' appears in /data/app/com.example.llapplication-1/split_lib_dependencies_apk.apk) 11-11 20:30:10.693986 3761 3761 D AEE_AED : at java.lang.Class.newInstance(Native Method) 11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.app.ActivityThread.handleCreateService(ActivityThread.java:3233) 11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.app.ActivityThread.-wrap5(ActivityThread.java) 11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1617) 11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.os.Handler.dispatchMessage(Handle 11-11 20:30:10.694209 3761 3761 I AEE_AED : Process: com.example.llapplication:llvision

このバグを修正しませんでしたか?



360プラグインを使用してandroid.support.v4.content.LocalBroadcastManagerのtypeプロパティを取得すると、常にObj型が返され、正しい型が返されないため、逆コンパイルして変更する必要があります。

変更のインスピレーションは別のブロガーに触発されました、ここに感謝します:元のリンク https://juejin.im/post/5aa3571651882555635decdb



難しい話は抜きにして:

逆コンパイルのピットを記録します。

最初に、baksmailやsmailなどの逆コンパイルされたjarをダウンロードします。アドレス: https://bitbucket.org/JesusFreke/smali/downloads/



一般的な逆コンパイルツール:

バクスマリ: https://github.com/JesusFreke/smali

Apktool: https://ibotpeaches.github.io/Apktool/

dex2jar: https://sourceforge.net/projects/dex2jar/

同時に:

コンパイルプロセス中に、オンラインチュートリアルをステップバイステップで実行します。

最後に、エラーが発生し続けます。

Exception in thread 'main' com.beust.jcommander.MissingCommandException: Expected a command, got -o at com.beust.jcommander.JCommander.parseValues(JCommander.java:725) at com.beust.jcommander.JCommander.parse(JCommander.java:304) at com.beust.jcommander.JCommander.parse(JCommander.java:287) at org.jf.baksmali.Main.main(Main.java:90)

最終的な解決策は

1. Decompile classes.dex into .smali # java -jar baksmali-2.2.7.jar -o test baksmali-2.2.7.jar classes.dex Error: Exception in thread 'main' com.beust.jcommander.MissingCommandException: Expected a command, got -o at com.beust.jcommander.JCommander.parseValues(JCommander.java:725) at com.beust.jcommander.JCommander.parse(JCommander.java:304) at com.beust.jcommander.JCommander.parse(JCommander.java:287) at org.jf.baksmali.Main.main(Main.java:90) 2. Solve # java -jar baksmali-2.2.7.jar disassemble classes.dex

smailを使用して、生成されたsmailファイルをdexファイルに変換します。

d:sdkSdkSdk ools>java -jar smali-2.3.4.jar assemble out/ -o classes.dex

次に、classes.dexファイルを解凍パッケージに入れてapkに再パッケージします。

後で録音するレコードがたくさんあるので、今日ここに来てください。