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

res/values-hz

res/values​​/strings.xml

[/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. Egy dex fájlnak kell lennie, amely a következő parancsokkal hozható létre:

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

res/values-yy

[/REMOVE_FILES]

# 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]