A Patch
modulról…
A patch az APK Editor Pro
1.6.0 változata óta támogatott. Általában ez egy zip fájl, amelyben a patch.txt
és egyéb szükséges fájlok kaptak helyet. A zip fájlban lévő patch.txt állomány
tartalmazza a szabályokat, és az egyéb fájlok által biztosított patch készleteket.
Ez a módszer még nincs teljesen
kiforrva, így legyen körültekintő, ha egyéb módosításokkal kombinálja.
Továbbá, van egy patch-szerkesztő (egy
nyílt forráskódú projekt), amely itt érhető el: https://github.com/SnowVolf/PCompiler
Patch
formátum
Egy patch főként szabályokból
áll. Jelenleg 8 patch szabályt támogat:
·
ADD_FILES
·
REMOVE_FILES
·
MATCH_REPLACE
·
MATCH_ASSIGN
·
MATCH_GOTO
·
GOTO
·
MERGE
·
EXECUTE_DEX
·
DUMMY
Egy szabályon belül minden
sor a ‘#’ karakterrel kezdődik, amely egy megjegyzés sort jelent,
és mindegyik konfiguráció egy új sorban kezdődik.
Kérjük, kövesse az alábbi
illusztrációkat és példákat a patch.txt létrehozásához. Patch példák is rendelkezésre
állnak, amelyeket menthet és beletekinthet.
[ADD_FILES]
(Fájlok hozzáadása)
A fájlok alkalmazáshoz való hozzáadására használható.
NAME:
a szabály nevét határozza meg.
SOURCE:
az archívumban lévő fájl nevét határozza meg, amelyet át kell másolni az alkalmazásba.
TARGET:
az elérési útvonalat határozza meg az alkalmazáson belül.
[REMOVE_FILES]
(Fájlok törlése)
Az alkalmazásban lévő fájlok
vagy mappák törlésére használható.
NAME:
a szabály nevét határozza meg.
TARGET:
az alkalmazáson belül törölni kívánt cél útvonalat határozza meg. Ha több
fájlt kell egyszerre törölni, meg kell adnia az összes fájl vagy mappa nevét,
és mindegyik névnek új sorban kell kezdődnie.
Például:
[REMOVE_FILES]
TARGET:
res/values-hu
[/REMOVE_FILES]
[MATCH_REPLACE] (Keresés és csere)
A talált eredmények keresésére
és cseréjére használható.
Name:
a szabály nevét határozza meg. (Üresen hagyhatja, de ha más helyekről szeretne
erre a szabályra ugrani, a név megadása kötelező)
TARGET:
a fájl elérési útvonalát határozza meg a keresés és csere művelet elvégzéséhez.
MATCH:
a keresendő szöveget határozza meg.
REGEX:
igaz vagy hamis. Az igaz azt jelenti, hogy a karakterlánc egyezés egy reguláris kifejezés.
REPLACE: a talált eredmények helyébe lépő szöveget határozza meg. (Az üresen
hagyott mezővel töröltetheti a találatot)
[MATCH_ASSIGN]
(Változók meghatározása)
A változók meghatározására szolgál.
Name:
a szabály nevét határozza meg. (Üresen hagyhatja, de ha más helyekről szeretne
erre a szabályra ugrani, a név megadása kötelező)
TARGET:
a fájl elérési útvonalát határozza meg az egyeztetési művelet elvégzéséhez.
MATCH:
a keresendő szöveget határozza meg.
REGEX:
igaz vagy hamis. Az igaz azt jelenti, hogy a karakterlánc egyezés egy reguláris kifejezés.
ASSIGN:
a változó nevét és értékét határozza meg. (Például: p1 = $ {GROUP1}) Ha egynél több
változó van, akkor minden további változónak új sorban kell
kezdődnie.
[MATCH_GOTO]
(Ha egyezik, akkor a cél szabályra lép)
Megadott fájlokban lévő bizonyos
szövegek megkeresésére használható, és sikeres egyezés esetén a "GOTO" mezőbe írt
szabály végrehajtására ugrik.
Ha a szöveg nem található,
akkor az azt követő szabály után végrehajtandó szabályt fogja végrehajtani.
Name:
a szabály nevét határozza meg.
TARGET:
a fájl elérési útvonalát határozza meg az egyeztetési művelet elvégzéséhez.
MATCH:
a keresendő szöveget határozza meg.
REGEX:
igaz vagy hamis. Az igaz azt jelenti, hogy a karakterlánc egyezés egy reguláris kifejezés.
GOTO:
a következő szabály nevét határozza meg. Ha egyezik, akkor végrehajtja ezt a
szabályt.
[GOTO] (Átirányítás bizonyos szabályra)
Más szabályra való átirányításra
használható.
GOTO:
a következő szabály nevét adja meg.
[MERGE]
(Hivatkozás források)
Ez egy erőteljes szabály,
amely egyesíti a meghatározott erőforrásokat a jelenlegi alkalmazással. Ez azt
jelenti, hogy az erőforrás hozzáadásra kerül, az AZONOSÍTÓK újratervezésével együtt, az erőforrásokkal való ütközés elkerülése érdekében.
NAME:
a szabály nevét határozza meg.
SOURCE:
az összevonni kívánt erőforrás fájl neve.
[EXECUTE_DEX]
(A dex parancsfájl végrehajtása)
Szabály egy testreszabott
parancsfájl végrehajtására.
SCRIPT:
A végrehajtandó zip állományon belüli cél parancsfájl.
javac -source 1.7 -target 1.7
test/AddDebugInfo.java
dx --dex --output=script.dex test/AddDebugInfo.class
SMALI_NEEDED: Azt jelzi, hogy a parancsfájlnak szüksége van-e smali kódra
vagy sem.
Ha
igaz (true), és a smali kód még nincs létrehozva,
akkor amikor a szabály végrehajtásra kerül, a patch létre fogja hozni a smali
kódot az első lépésként.
MAIN_CLASS: Az osztály elérési útvonala, amely tartalmazza a belépést
ENTRANCE: Végrehajtandó cél módja, a módszernek 4 karakterlánc paramétert
kell elfogadnia.
PARAM:
Az utolsó paraméter átadása a cél módba.
[DUMMY]
(Dummy szabály)
Dummy szabály. Ez inkább egy
címke, amely csak NÉV mezőt tartalmaz. A “MATCH_GOTO” vagy
“GOTO” szabályból, tudunk ugrani egy dummy szabályra.
És,
itt egy példa:
# Szükséges minimális modul verzió; a modul a 1.6.8-ban a 2-es verzió
[MIN_ENGINE_VER]
1
# Ez
a patch készítője
[AUTHOR]
apkeditor
# A
csomag neve
[PACKAGE]
*
# Fájlok
hozzáadása a cél helyhez
[ADD_FILES]
SOURCE:
layout.zip
TARGET:
res/layout
EXTRACT:
true
[/ADD_FILES]
# Fájlok eltávolítása
# Több
cél is megadható
[REMOVE_FILES]
TARGET:
res/values-xx
# Egyező tartalmak
lecserélése a cél fájlban. Legyen óvatos a REGEX=true beállítással.
# Az összes egyező előfordulás
lecserélődik
# REGEX=igaz állás esetén,
az EGYEZŐ tartalomnak egy sorban kell lennie
# A következő
példa törölni fogja az internet engedélyt
[MATCH_REPLACE]
TARGET:
AndroidManifest.xml
MATCH:
<uses-permission android:name="android.permission.INTERNET" />
REGEX:
false
REPLACE:
[/MATCH_REPLACE]
# A MERGE parancsot az
erőforrások és kód egyesítésére tervezték más apk fájlokból apk
#
# A források és a smali fájlok egyesítése
az extra.zip archívumon belül
# res/values/public.xml meg
kell adni az extra.zip archívumon belül
# A
patch motor megpróbálja újraírni a hozzáadott
azonosítók mindegyikét
# A
hozzáadott azonosítóknak különböznie kell a már meglévő azonosítóktól
[MERGE]
SOURCE:
extra.zip
[/MERGE]