AndroidAPKを逆コンパイルしてテーマを設定する方法



次に[すべて置換]をクリックすると、すべての@android:color / whiteが変更されて代わりにbackground_holo_darkが使用されます。次に、.xml全体をスクロールし続け、16進値(#fffffff)または先ほど置き換えたもの以外のものを使用しているandroid:background文字列を検索します。見つけたものについては、新しいもの(abs__background_holo_dark)を使用するように文字列を変更します。

背景を変更したので、テキストの色を変更します。したがって、今行ったのと同じ手順に従いますが、今回は「android:textColor」に対してCTRL + Fを実行します。約166行が見つかります。



「android:textColor =」#ffbbbbbb」などが表示されます。Colors.xmlの内部をもう一度見て、テキストの色を置き換える行を見つける必要があります。



android:textColor =”#ffbbbbbb”、“ #ffffffff”、“#ff717171”、および“ #ffcccccc”は、スクリーンショットとNote ++の検索結果に表示されます。ここでColors.xmlをもう一度開いて、テキストの色に使用する行を見つけます。



したがって、最初の.xmlに戻り、[置換]ダイアログでもう一度CTRL + Hを実行します。次に、「android:textColor =」#ffbbbbbb」文字列を上部と下部にコピーして貼り付け、下部の行を「android:textColor =」@ color / text」に変更します。

ここでも、android:textColorのすべての行を検索し、文字列に16進値が含まれているものをすべて変更します。最後に、styles.xmlファイルにアクセスしたら、260行目から数行下に向かって、数行から逆を削除します。したがって、これらの文字列から「逆」を削除します。

次に、行527、536、573、579、585、601、およびその他のいくつかの行にいくつかの16進値が表示されます。 from(#ffffffff)を(@ color / text)に置き換えます。



Ctrl + Fキーを押して、Notepad ++で検索します。 cacheColorHint仕切り@ * android:color / 、および

cacheColorHintはスクロールする背景であるため、背景色を使用していることを確認する必要があります。仕切りは一目瞭然で、必要に応じて16進値を変更できます。唯一のことは、@ drawableを指すものに触れてはならないということです。これらは通常、.apkフォルダーの他の場所に.pngファイルとして保存されている画像です。

「」を検索すると 逆」 、textAppearanceInverseへの参照が表示されます。これらのそれぞれをダブルクリックして、それらの文字列から逆を削除する必要があります。

最後に、@ * android:color /の検索では、フレームワークの編集を見逃していないかどうかを再確認します。 「android:popupBackground」> @ * android:color / white」と表示されているものを見つけた場合は、「android:popupBackground」> @ color / abs__background_holo_darkに変更する必要があります。これには911行が含まれますが、これはすでにandroid:color / blackを指しているため、混乱する可能性があります。

次に、res / values / colors.xmlを開き、次のように変更します。

次のres / values / styles.xmlで、328行目までスクロールダウンします。次のように変更します。

()は()に変更する必要があります

行479についても同じことを行い、「 光'黒'

次に、res / values-v11 / styles.xmlに移動し、「 光'Holo.Light」

次に、res / values-v14 / stylesを開きます。これには、多くの文字列が含まれています。したがって、最初の46行で、「 光' および「 逆」 参照してから、53行目と54行目の親を「@ * android:style /Theme.Holo」に変更します。

行69の右側の親で、@ * android:style /Theme.Holo.Light.Dialog親からLightを削除します。

これは大変な作業ですよね?たぶん、これからはアプリのテーマとスキンにもっと感謝するでしょう!

次に、 解像度/色 フォルダ。黒を指しているテキストファイルがいくつかあります。 res / colors /action_mode_item_text_color_state_list.xmlを開きます

それが在庫の見た目です。以下はあなたがそれを作る必要がある方法です。

/ res / colorsフォルダー内の次のxmlファイルにも同じ変更を加える必要があります:Bottom_button.xml、Button_update.xml、Filelist_text_name.xml、Filelist_text_small.xml、Link_button.xml、Local_filelist_text_name.xml、Local_filelist_text_small.xml、ss_bottom_bottom_text_color_dark。 xml、ss_bottom_bottom_text_color_light.xml、tab_text_foreground.xml。

それらが終了したら、/ res / drawableを開くと、背景色を制御するxmlがあります。したがって、それらを調べて、次のように表示します。

他のすべてのdrawable.xmlファイルに同じ変更を適用します。

次に、test.apkを開き、Ctrlキーを押しながら左クリックしてsmaliとAndroidManifestを強調表示し、右クリックしてもう一度「Notepad ++で編集」します。 1999年のすべてのsmaliファイルに同意します。ロードしたら、CTRL + Fで-0x100(黒)を検索します

約8ヒットが得られます。必要なのは、599行目のsmali / com / dropbox / android / activity /TextEditActivity.smaliです。その行をダブルクリックします。

行599には-0x100が含まれ、行601には「SetTextColor」が含まれています。行599に一致する変数もあります。簡単に説明すると、-0x100、-0x1000000、さらには0x0は黒を意味し、-0x1000000も黒であり、0x0ですらあります。 100から2つの0を削除し、次のように/ high16を削除して、行599を変更します。

次に、@ * android:styleを検索しますが、smaliで検索します。 xmlにはxの後に余分な「0」が含まれますが、smaliでは使用しません。 「0x0103004f」ではなく「0x103004f」にする必要があります。

Notepad ++で0x103を含む@ * android:style /を検索します。

2番目のヒットは「constv7、0x1030073」です。それをframework-res.apkからpublic.xmlでもう一度検索します。これが「Theme.Holo.Light.Dialog」のIDであることがわかります。反対のテーマスタイルのパブリックIDに変更する必要があります。

これはTheme.Holo.Light.Dialogなので、Theme.Holo.Dialogにします。 Theme.Holo.DialogのIDは「0x103006f」です。これにより、ポップアップダイアログのアラートボックスが変更され、明るいHolo.Lightベースのテーマではなく暗いHoloベースのテーマが使用されるようになります。

次に変更する必要があるのは、Theme.Holo.Lightである「0x103006e」です。だから先に進んで、それを反対のテーマスタイルにしてください。 Framework-res.apkのpublic.xmlに、Theme.HoloのIDが0x0103006bであることがわかります。その行を次のように変更しましょう。

これらのうち、通過するのはあと2つだけです。次は「0x103000c」です。これはpublic.xmlのTheme.Light用です。その反対は、ThemeHoloではなくTheme.Blackです。したがって、public.xmlには、Theme.BlackのIDが「0x01030008」であることが表示されます。次のように変更します。

他のアプリでは、編集や変更が必要なものが他にもあります。十分に練習すれば、ほぼすべてのテーマを再作成できます。しかし今のところ、すべてのコードビットは完了しています( 最終的に!)

これで、APKマルチツールからスクリプトを開き、12を押してアプリをコンパイルできます。エラーが表示された場合は、エラーログ内で問題がないか調べることができますが、コードの編集中にタイプミスやその他の間違いを犯した可能性があります。

ビルドが完了したら、2を押してから13を押して、アプリに再署名します。

ストックアプリには「テンプレート」という名前のフォルダーが含まれています。7zipなどを使用して署名されていないapkにドラッグする必要があります。 unsigned.apkをAPKマルチツール内の「place-apk-here-for-signing」フォルダーにコピーします。次に、ターミナルスクリプトで18を押して、そのフォルダー内のアプリにバッチ署名します。完了すると、スクリプトは自動的に終了します。これで、.apkをデバイスにロードできます。

読んだ6分