Skip to content

Commit 89a142d

Browse files
author
xausky
committed
实现 Hook 模式资源替换
1 parent 151d60b commit 89a142d

File tree

13 files changed

+53
-14
lines changed

13 files changed

+53
-14
lines changed

app/build.gradle

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,14 @@ apply plugin: 'com.android.application'
22
apply plugin: 'io.fabric'
33
apply plugin: 'com.google.firebase.firebase-perf'
44

5-
repositories {
6-
7-
}
8-
95
android {
106
compileSdkVersion 28
117
defaultConfig {
12-
applicationId "io.github.xausky.unitymodmanager"
8+
applicationId "cn.xausky.umm"
139
minSdkVersion 21
1410
targetSdkVersion 23
15-
versionCode 330
16-
versionName "3.3.0"
11+
versionCode 400
12+
versionName "4.0.0"
1713
ndk{
1814
abiFilters "armeabi-v7a","x86"
1915
}

app/google-services.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,35 @@
66
"storage_bucket": "unity-mod-manager.appspot.com"
77
},
88
"client": [
9+
{
10+
"client_info": {
11+
"mobilesdk_app_id": "1:999756837706:android:d0c619615d8f02fe4587b3",
12+
"android_client_info": {
13+
"package_name": "cn.xausky.umm"
14+
}
15+
},
16+
"oauth_client": [
17+
{
18+
"client_id": "999756837706-t3gfo4q8adrfknhqm52gmbu7jbnneb3h.apps.googleusercontent.com",
19+
"client_type": 3
20+
}
21+
],
22+
"api_key": [
23+
{
24+
"current_key": "AIzaSyDL7ySG-vDz4_iXaDcRC6SaeJk6rdREucc"
25+
}
26+
],
27+
"services": {
28+
"appinvite_service": {
29+
"other_platform_oauth_client": [
30+
{
31+
"client_id": "999756837706-t3gfo4q8adrfknhqm52gmbu7jbnneb3h.apps.googleusercontent.com",
32+
"client_type": 3
33+
}
34+
]
35+
}
36+
}
37+
},
938
{
1039
"client_info": {
1140
"mobilesdk_app_id": "1:999756837706:android:21dd3da8337e5843",

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools"
4+
android:sharedUserId="cn.xausky.xmm"
45
package="io.github.xausky.unitymodmanager">
56
<uses-sdk tools:overrideLibrary="com.lody.virtual"/>
67
<uses-permission android:name="android.permission.INTERNET" />

app/src/main/java/io/github/xausky/unitymodmanager/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
177177
}
178178

179179
public void launch(){
180-
if(homeFragment.apkModifyModel != HomeFragment.APK_MODIFY_MODEL_NONE && (homeFragment.apkPath == null || homeFragment.baseApkPath == null || !new File(homeFragment.baseApkPath).exists())){
180+
if(homeFragment.apkModifyModel != HomeFragment.APK_MODIFY_MODEL_NONE && homeFragment.apkModifyModel != HomeFragment.APK_MODIFY_MODEL_HOOK && (homeFragment.apkPath == null || homeFragment.baseApkPath == null || !new File(homeFragment.baseApkPath).exists())){
181181
Toast.makeText(this, R.string.install_source_not_found, Toast.LENGTH_LONG).show();
182182
} else {
183183
if(homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_NONE && homeFragment.obbSupport){

app/src/main/java/io/github/xausky/unitymodmanager/fragment/HomeFragment.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class HomeFragment extends BaseFragment implements View.OnClickListener,
6666
public static final int APK_MODIFY_MODEL_NONE = 0;
6767
public static final int APK_MODIFY_MODEL_VIRTUAL = 1;
6868
public static final int APK_MODIFY_MODEL_ROOT = 2;
69+
public static final int APK_MODIFY_MODEL_HOOK = 3;
6970
public String packageName;
7071
public String apkPath;
7172
public String baseApkPath;
@@ -314,7 +315,7 @@ public void ImportMapFile() {
314315
private void clientUpdate() {
315316
String versionName = null;
316317
int versionCode = 0;
317-
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE) {
318+
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE || apkModifyModel == APK_MODIFY_MODEL_HOOK) {
318319
try {
319320
versionName = context.getPackageManager().getPackageInfo(packageName, 0).versionName;
320321
versionCode = context.getPackageManager().getPackageInfo(packageName, 0).versionCode;
@@ -414,7 +415,7 @@ public void run() {
414415
final String resultString;
415416
String result = getString(R.string.install_failed);
416417
int versionCode = 0;
417-
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE) {
418+
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE || apkModifyModel == APK_MODIFY_MODEL_HOOK) {
418419
try {
419420
String basePath = HomeFragment.this.context.getFilesDir().getAbsolutePath() + "/base.apk";
420421
if (apkModifyModel == APK_MODIFY_MODEL_ROOT) {

app/src/main/java/io/github/xausky/unitymodmanager/fragment/ModFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ public void run() {
241241
});
242242
}
243243

244-
public int patch(String apkPath, String baseApkPath, String persistentPath, String obbPath, String baseObbPath, String backupPath, int apkModifyModel, boolean persistentSupport, boolean obbSupport){
244+
public int patch(String apkPath, String baseApkPath, String persistentPath, String obbPath, String baseObbPath, String backupPath, int apkModifyModel, boolean persistentSupport, boolean obbSupport){
245245
if(apkModifyModel == HomeFragment.APK_MODIFY_MODEL_ROOT){
246246
if(!Shell.rootAccess()){
247247
return ModUtils.RESULT_STATE_ROOT_ERROR;
@@ -252,7 +252,7 @@ public int patch(String apkPath, String baseApkPath, String persistentPath, Stri
252252
try {
253253
Log.d(MainApplication.LOG_TAG, "patch: apkPath=" + apkPath + ", baseApkPath=" + baseApkPath + ", apkModifyModel=" + apkModifyModel);
254254
List<Mod> mods = adapter.getMods();
255-
File fusionFile = new File(getBase().getCacheDir().getAbsolutePath() + "/fusion");
255+
File fusionFile = new File(getBase().getFilesDir().getAbsolutePath() + "/fusion");
256256
try {
257257
FileUtils.deleteDirectory(fusionFile);
258258
} catch (IOException e) {
@@ -300,7 +300,7 @@ public int patch(String apkPath, String baseApkPath, String persistentPath, Stri
300300
e.printStackTrace();
301301
}
302302
}
303-
if(apkModifyModel != HomeFragment.APK_MODIFY_MODEL_NONE){
303+
if(apkModifyModel == HomeFragment.APK_MODIFY_MODEL_VIRTUAL || apkModifyModel == HomeFragment.APK_MODIFY_MODEL_ROOT){
304304
int result = NativeUtils.PatchApk(baseApkPath, apkPath, fusionFile.getAbsolutePath());
305305
if(result != NativeUtils.RESULT_STATE_OK){
306306
Log.d(MainApplication.LOG_TAG, "Patch APK File Failed: " + result + ",apkPath:" + apkPath + ",baseApkPath:" + baseApkPath);

app/src/main/java/io/github/xausky/unitymodmanager/fragment/SettingFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
5858
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
5959
if(preference.getKey().equals("setting_export_apk")){
6060
HomeFragment homeFragment = (HomeFragment) BaseFragment.fragment(R.id.nav_home, this.getActivity().getApplication());
61-
if(homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_NONE){
61+
if(homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_NONE || homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_HOOK){
6262
Toast.makeText(this.getActivity(), R.string.none_modify_export, Toast.LENGTH_LONG).show();
6363
return super.onPreferenceTreeClick(preferenceScreen, preference);
6464
}

app/src/main/res/values-ja-rJP/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,13 @@
9696
<item>No Modify</item>
9797
<item>VirtualApp Model</item>
9898
<item>Root Privilege Model (Caution)</item>
99+
<item>Hook Model</item>
99100
</string-array>
100101
<string-array name="apk_modify_model_values">
101102
<item>0</item>
102103
<item>1</item>
103104
<item>2</item>
105+
<item>3</item>
104106
</string-array>
105107
<string name="obb_support_title">Android OBB resource file patch support</string>
106108
<string name="obb_support_summary">Android OBB resource file patch support, such as \"Honkai Impact 3\" JP service, SEA service, global service.</string>

app/src/main/res/values-ko-rKR/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,13 @@
9595
<item>변경 없음</item>
9696
<item>가상어플 방식</item>
9797
<item>루트 권한 방식 (주의)</item>
98+
<item>Hook Model</item>
9899
</string-array>
99100
<string-array name="apk_modify_model_values">
100101
<item>0</item>
101102
<item>1</item>
102103
<item>2</item>
104+
<item>3</item>
103105
</string-array>
104106
<string name="obb_support_title">안드로이드 OBB 리소스 파일 패치 지원</string>
105107
<string name="obb_support_summary">안드로이드 OBB 리소스 파일 패치 지원 기능. 붕괴3 일본서버, 동남아시아 서버, 혹은 글로벌 서버를 위한 기능입니다.</string>

app/src/main/res/values-ru-rRU/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,13 @@
9595
<item>Без модификации</item>
9696
<item>VirtualApp</item>
9797
<item>Root права (осторожно)</item>
98+
<item>Hook Model</item>
9899
</string-array>
99100
<string-array name="apk_modify_model_values">
100101
<item>0</item>
101102
<item>1</item>
102103
<item>2</item>
104+
<item>3</item>
103105
</string-array>
104106
<string name="obb_support_title">Поддержка патча OBB файла</string>
105107
<string name="obb_support_summary">Поддержка патча OBB файла для Honkai Impact 3 JP SEA и global серверов.</string>

0 commit comments

Comments
 (0)