-
Notifications
You must be signed in to change notification settings - Fork 0
Home
kairi edited this page Sep 28, 2024
·
3 revisions
Welcome to the NarouReaderMod wiki!
必ずしもこのようにするべき、というわけではありませんが、参考情報として私の場合の本Modの開発手順を記載します。
より良い方法があるという提案や質問がある場合は Discussions でご報告ください。
参考情報として開発環境を記載しますが基本なんでもいいと思います。 apktoolのバージョンだけ注意です。
- OS: Windows (+WSL)
- Windows側のディスクをWSLから読み書きすると超遅いのでWSL側の領域にコピーして作業したほうが良い
- Editor:
- Android Studio (NarouReaderMod-source)
- VSCode (NarouReaderMod)
- Tool:
- 基本は jadx でデコンパイルしたJavaコードを参考情報にしてapktoolでデコードしたsmaliコードをいじってビルドする
- smali を直接変更するとすぐ不整合になるのでメソッド単位でインジェクションして、それを元処理から参照すると良い
- NarouReaderMod-source で必要なメソッドを定義
- apk をビルド
- apktool で ↑の apk をデコードしてインジェクション用の smali コードを入手
- 差分は基本 unified diff でとり、対応が難しければスクリプト等を書く
- jadx でデコンパイルされた Java コードを読む & それっぽい単語にあたりをつけて検索する
- apktool でデコードされた smali コード以下略
-
com.tscsoft.naroureader.utils.ReverseDebug
に定義した d メソッド(ログ)とか trace メソッド(スタックトレース)をインジェクションしてログから処理を追う
- 私は Android Studio のエミュレータと Log ツール使ってます
--- dec/origin2/smali_classes2/com/tscsoft/naroureader/utils/UpdateManager.smali 2024-02-11 23:02:36.020336145 +0900
+++ dec/origin/smali_classes2/com/tscsoft/naroureader/utils/UpdateManager.smali 2024-02-13 00:07:24.187959781 +0900
@@ -261,6 +261,14 @@
Ljava/text/ParseException;
}
.end annotation
+
+ invoke-static {}, Lcom/tscsoft/naroureader/utils/ReverseDebug;->trace()V
+ const-string v0, "checkAndUpdate: WorkMode"
+ invoke-static {v0}, Lcom/tscsoft/naroureader/utils/ReverseDebug;->d(Ljava/lang/String;)V
+ invoke-static {p4}, Lcom/tscsoft/naroureader/utils/ReverseDebug;->d(Ljava/lang/Object;)V
+
+ iget-object v8, p0, Lcom/tscsoft/naroureader/utils/UpdateManager;->mNovel:Lcom/tscsoft/naroureader/beans/ListBean;
+ iput-object p4, v8, Lcom/tscsoft/naroureader/beans/ListBean;->workMode:Lcom/tscsoft/naroureader/services/ServiceItem$WorkMode;
.line 473
new-instance v0, Ljava/util/ArrayList;