Добавление лого и изменение описания
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# Anixarty patcher
|
||||

|
||||
# Anixarts patcher
|
||||
|
||||
### Описание:
|
||||
Автоматический патчер для приложения anixart.
|
||||
@@ -8,11 +9,15 @@
|
||||
|
||||
### Структура проекта:
|
||||
- `main.py` Главный файл
|
||||
- `config.json` Глобальный конфиг
|
||||
- `configs` Конфигурации патчей
|
||||
- `patches` Модули патчей
|
||||
- `resources` Ресурсы, используемые патчами
|
||||
- `utils` Вспомогательные модули
|
||||
- `tools` Инструменты для модификации
|
||||
- `resources` Ресурсы, используемые патчами
|
||||
- `todo_drafts` Заметки для новых патчей(можно в любом формате)
|
||||
- `original` Оригинальные apk файлы
|
||||
- `decompiled` Декомпилированные файлы выбраного apk
|
||||
- `modified` Модифицированные apk файлы и отчёт сборки
|
||||
|
||||
### Схема
|
||||
|
||||
@@ -26,7 +31,7 @@ flowchart TD
|
||||
|
||||
B f2@==> p[Декомпиляция]
|
||||
|
||||
subgraph p["Применение патчей по возрастанию приоритета"]
|
||||
subgraph p["Применение патчей по убыванию приоритета"]
|
||||
C[Патч 1] --> D
|
||||
D[Патч 2] --...--> E[Патч n]
|
||||
end
|
||||
@@ -49,7 +54,7 @@ flowchart TD
|
||||
|
||||
1. Клонируйте репозиторий:
|
||||
```sh
|
||||
git clone https://git.wowlikon.tech/anixart-mod/patcher.git
|
||||
git clone https://git.0x174.su/anixart-mod/patcher.git
|
||||
```
|
||||
Требования:
|
||||
- Python 3.8+
|
||||
@@ -66,8 +71,8 @@ flowchart TD
|
||||
```
|
||||
Пароль от keystore нужно сохранить в `keystore.pass` для полностью автоматической сборки.
|
||||
|
||||
3. Измените настройки мода в файле `patches/config.json`. Если вы развернули свой [сервер](https://git.wowlikon.tech/anixart-mod/server), то измените `"server": "https://new.url"`
|
||||
4. Поместите оригинальный apk файла anixart в папку `original`
|
||||
3. Измените конфигурацию в файле `configs/change_server.json`. Если вы развернули свой [сервер](https://git.0x174.su/anixart-mod/server), то измените `"server": "https://new.url/patch"` на своё значение
|
||||
4. Поместите оригинальный apk файл anixart в папку `original`
|
||||
5. Запустите `main.py build` и выберите файл apk
|
||||
6. Установите приложение на ваше устройство.
|
||||
|
||||
@@ -76,6 +81,6 @@ flowchart TD
|
||||
Этот проект лицензирован под лицензией MIT. См. [LICENSE](./LICENSE) для получения подробной информации.
|
||||
|
||||
### Вклад в проект:
|
||||
- [Kentai Radiquum](https://git.0x174.su/Radiquum) - Значительный вклад в развитие патчера, разработка [anix](https://github.com/AniX-org/AniX) и помощь с API [[GitHub](https://github.com/adiquum) | [Telegram](https://t.me/radiquum)]
|
||||
- [wowlikon](https://git.0x174.su/wowlikon) - Создание и поддержка проекта [[GitHub](https://github.com/wowlikon) | [Telegram](https://t.me/wowlikon)]
|
||||
- [Kentai Radiquum](https://git.0x174.su/Radiquum) - Значительный вклад в развитие патчера, разработка [anix](https://github.com/AniX-org/AniX) и помощь с API [[GitHub](https://github.com/radiquum) | [Telegram](https://t.me/radiquum)]
|
||||
- [Seele](https://git.0x174.su/seele_archive) - Оригинальные патчи в начале разработки основаны на модификации от Seele
|
||||
- [ReCode Liner](https://git.0x174.su/ReCodeLiner) - Помощь в изучении моддинга приложения [[Telegram](https://t.me/recodius)]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"server": "https://anixarty.0x174.su/patch"
|
||||
}
|
||||
"server": "https://anixarts.0x174.su/patch"
|
||||
}
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
{
|
||||
"title": "Помочь проекту",
|
||||
"description": "Вы можете помочь нам с идеями, написанием кода или тестированием.",
|
||||
"url": "https://git.wowlikon.tech/anixart-mod",
|
||||
"url": "https://git.0x174.su/anixart-mod",
|
||||
"icon": "@drawable/ic_custom_crown",
|
||||
"icon_space_reserved": "false"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"title": "Anixarty",
|
||||
"title": "Anixarts",
|
||||
"title_color": "#FF252525",
|
||||
"title_bg_color": "#FFCFF04D",
|
||||
"body_bg_color": "#FF252525",
|
||||
@@ -11,4 +11,4 @@
|
||||
"link_text": "МЫ В TELEGRAM",
|
||||
"link_color": "#FFCFF04D",
|
||||
"link_url": "https://t.me/http_teapod"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ from utils.tools import (CONFIGS, DECOMPILED, MODIFIED, ORIGINAL, PATCHES,
|
||||
|
||||
console = Console()
|
||||
app = typer.Typer(
|
||||
name="anixarty-patcher",
|
||||
name="anixarts-patcher",
|
||||
help="Инструмент для модификации Anixarty APK",
|
||||
add_completion=False,
|
||||
)
|
||||
@@ -62,7 +62,7 @@ def generate_report(
|
||||
return info
|
||||
|
||||
lines = []
|
||||
lines.append(f"Anixarty {meta.version_name} (build {meta.version_code})")
|
||||
lines.append(f"Anixarts {meta.version_name} (build {meta.version_code})")
|
||||
lines.append("")
|
||||
|
||||
lines.append("## 📦 Информация о сборке")
|
||||
@@ -114,7 +114,7 @@ def generate_report(
|
||||
lines.append("---")
|
||||
lines.append("")
|
||||
lines.append(
|
||||
"*Собрано с помощью [anixarty-patcher](https://git.0x174.su/anixart-mod/patcher)*"
|
||||
"*Собрано с помощью [anixarts-patcher](https://git.0x174.su/anixart-mod/patcher)*"
|
||||
)
|
||||
|
||||
report_path.write_text("\n".join(lines), encoding="utf-8")
|
||||
@@ -467,7 +467,7 @@ def config():
|
||||
@handle_errors
|
||||
def version():
|
||||
"""Показать версию инструмента"""
|
||||
console.print(f"[cyan]anixarty-patcher[/cyan] v{__version__}")
|
||||
console.print(f"[cyan]anixarts-patcher[/cyan] v{__version__}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
"change_server": {
|
||||
"enabled": true,
|
||||
"server": "https://anixarty.0x174.su/patch"
|
||||
"server": "https://anixarts.0x174.su/patch"
|
||||
}
|
||||
"""
|
||||
|
||||
@@ -20,7 +20,7 @@ from utils.config import PatchTemplate
|
||||
|
||||
class Patch(PatchTemplate):
|
||||
priority: int = Field(frozen=True, exclude=True, default=0)
|
||||
server: str = Field("https://anixarty.0x174.su/patch", description="URL сервера")
|
||||
server: str = Field("https://anixarts.0x174.su/patch", description="URL сервера")
|
||||
|
||||
def apply(self, base: Dict[str, Any]) -> bool:
|
||||
response = requests.get(self.server) # Получаем данные для патча
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
"welcome": {
|
||||
"enabled": true,
|
||||
"title": "Anixarty",
|
||||
"title": "Anixarts",
|
||||
"description": "Описание",
|
||||
"link_text": "МЫ В TELEGRAM",
|
||||
"link_url": "https://t.me/http_teapod",
|
||||
@@ -27,7 +27,7 @@ from utils.smali_parser import (find_and_replace_smali_line, get_smali_lines,
|
||||
class Patch(PatchTemplate):
|
||||
priority: int = Field(frozen=True, exclude=True, default=0)
|
||||
|
||||
title: str = Field("Anixarty", description="Заголовок")
|
||||
title: str = Field("Anixarts", description="Заголовок")
|
||||
title_color: str = Field("#FF252525", description="Цвет заголовка")
|
||||
|
||||
title_bg_color: str = Field("#FFCFF04D", description="Цвет фона заголовка")
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
/res/layout/release_info.xml
|
||||
<TextView android:textColor="@color/light_md_blue_500" android:id="@id/note" android:background="@drawable/bg_release_note" android:paddingTop="12.0dip" android:paddingBottom="12.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textIsSelectable="true" android:paddingStart="16.0dip" android:paddingEnd="16.0dip" style="?textAppearanceBodyMedium" />
|
||||
</FrameLayout>
|
||||
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
|
||||
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/countryLayout" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent">
|
||||
<androidx.appcompat.widget.AppCompatImageView android:id="@id/iconCountry" android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_flag_japan" />
|
||||
<TextView android:textColor="?primaryTextColor" android:textColorLink="?primaryTextColor" android:gravity="center_vertical" android:linksClickable="true" android:id="@id/tvCountry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textIsSelectable="true" android:layout_marginStart="8.0dip" style="?textAppearanceBodyMedium" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/episodesLayout" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="2.0dip">
|
||||
<androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_episodes" />
|
||||
<TextView android:textColor="?primaryTextColor" android:textColorLink="?primaryTextColor" android:gravity="center_vertical" android:linksClickable="true" android:id="@id/tvEpisodes" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textIsSelectable="true" android:layout_marginStart="8.0dip" style="?textAppearanceBodyMedium" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/scheduleLayout" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="2.0dip">
|
||||
<androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_schedule" />
|
||||
<TextView android:textColor="?primaryTextColor" android:textColorLink="?primaryTextColor" android:gravity="center_vertical" android:linksClickable="true" android:id="@id/tvSchedule" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textIsSelectable="true" android:layout_marginStart="8.0dip" style="?textAppearanceBodyMedium" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/sourceLayout" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="2.0dip">
|
||||
<androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_source" />
|
||||
<TextView android:textColor="?primaryTextColor" android:textColorLink="?primaryTextColor" android:gravity="center_vertical" android:linksClickable="true" android:id="@id/tvSource" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lineSpacingExtra="4.0sp" android:textIsSelectable="true" android:layout_marginStart="8.0dip" style="?textAppearanceBodyMedium" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:orientation="horizontal" android:id="@id/studioLayout" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="2.0dip">
|
||||
<androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_studio" />
|
||||
<TextView android:textColor="?primaryTextColor" android:textColorLink="?primaryTextColor" android:gravity="center_vertical" android:linksClickable="true" android:id="@id/tvStudio" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lineSpacingExtra="4.0sp" android:textIsSelectable="true" android:layout_marginStart="8.0dip" style="?textAppearanceBodyMedium" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<TextView android:textColor="?primaryTextColor" android:textColorLink="?primaryTextColor" android:linksClickable="true" android:id="@id/tvGenres" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="16.0dip" android:layout_marginBottom="2.0dip" android:lineSpacingExtra="4.0sp" android:textIsSelectable="true" style="?textAppearanceBodyMedium" />
|
||||
<at.blogc.android.views.ExpandableTextView android:textColor="?primaryTextColor" android:id="@id/description" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="8.0dip" android:layout_marginBottom="8.0dip" android:maxLines="5" android:lineSpacingExtra="4.0sp" android:textIsSelectable="true" app:animation_duration="225" style="?textAppearanceBodyMedium" />
|
||||
+3
-3
@@ -27,19 +27,19 @@ class APKMeta(BaseModel):
|
||||
@property
|
||||
def output_name(self) -> str:
|
||||
"""Имя выходного файла"""
|
||||
return f"Anixarty-v{self.safe_version}.apk"
|
||||
return f"Anixarts-v{self.safe_version}.apk"
|
||||
|
||||
@computed_field
|
||||
@property
|
||||
def aligned_name(self) -> str:
|
||||
"""Имя выровненного файла"""
|
||||
return f"Anixarty-v{self.safe_version}-aligned.apk"
|
||||
return f"Anixarts-v{self.safe_version}-aligned.apk"
|
||||
|
||||
@computed_field
|
||||
@property
|
||||
def signed_name(self) -> str:
|
||||
"""Имя подписанного файла"""
|
||||
return f"Anixarty-v{self.safe_version}-mod.apk"
|
||||
return f"Anixarts-v{self.safe_version}-mod.apk"
|
||||
|
||||
|
||||
class SigningConfig(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user