Skip to content

Commit

Permalink
实现 Hook 模式资源替换
Browse files Browse the repository at this point in the history
  • Loading branch information
xausky committed Dec 29, 2019
1 parent 151d60b commit 89a142d
Show file tree
Hide file tree
Showing 13 changed files with 53 additions and 14 deletions.
10 changes: 3 additions & 7 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@ apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

repositories {

}

android {
compileSdkVersion 28
defaultConfig {
applicationId "io.github.xausky.unitymodmanager"
applicationId "cn.xausky.umm"
minSdkVersion 21
targetSdkVersion 23
versionCode 330
versionName "3.3.0"
versionCode 400
versionName "4.0.0"
ndk{
abiFilters "armeabi-v7a","x86"
}
Expand Down
29 changes: 29 additions & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,35 @@
"storage_bucket": "unity-mod-manager.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:999756837706:android:d0c619615d8f02fe4587b3",
"android_client_info": {
"package_name": "cn.xausky.umm"
}
},
"oauth_client": [
{
"client_id": "999756837706-t3gfo4q8adrfknhqm52gmbu7jbnneb3h.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDL7ySG-vDz4_iXaDcRC6SaeJk6rdREucc"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "999756837706-t3gfo4q8adrfknhqm52gmbu7jbnneb3h.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:999756837706:android:21dd3da8337e5843",
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:sharedUserId="cn.xausky.xmm"
package="io.github.xausky.unitymodmanager">
<uses-sdk tools:overrideLibrary="com.lody.virtual"/>
<uses-permission android:name="android.permission.INTERNET" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
}

public void launch(){
if(homeFragment.apkModifyModel != HomeFragment.APK_MODIFY_MODEL_NONE && (homeFragment.apkPath == null || homeFragment.baseApkPath == null || !new File(homeFragment.baseApkPath).exists())){
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())){
Toast.makeText(this, R.string.install_source_not_found, Toast.LENGTH_LONG).show();
} else {
if(homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_NONE && homeFragment.obbSupport){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public class HomeFragment extends BaseFragment implements View.OnClickListener,
public static final int APK_MODIFY_MODEL_NONE = 0;
public static final int APK_MODIFY_MODEL_VIRTUAL = 1;
public static final int APK_MODIFY_MODEL_ROOT = 2;
public static final int APK_MODIFY_MODEL_HOOK = 3;
public String packageName;
public String apkPath;
public String baseApkPath;
Expand Down Expand Up @@ -314,7 +315,7 @@ public void ImportMapFile() {
private void clientUpdate() {
String versionName = null;
int versionCode = 0;
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE) {
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE || apkModifyModel == APK_MODIFY_MODEL_HOOK) {
try {
versionName = context.getPackageManager().getPackageInfo(packageName, 0).versionName;
versionCode = context.getPackageManager().getPackageInfo(packageName, 0).versionCode;
Expand Down Expand Up @@ -414,7 +415,7 @@ public void run() {
final String resultString;
String result = getString(R.string.install_failed);
int versionCode = 0;
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE) {
if (apkModifyModel == APK_MODIFY_MODEL_ROOT || apkModifyModel == APK_MODIFY_MODEL_NONE || apkModifyModel == APK_MODIFY_MODEL_HOOK) {
try {
String basePath = HomeFragment.this.context.getFilesDir().getAbsolutePath() + "/base.apk";
if (apkModifyModel == APK_MODIFY_MODEL_ROOT) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ public void run() {
});
}

public int patch(String apkPath, String baseApkPath, String persistentPath, String obbPath, String baseObbPath, String backupPath, int apkModifyModel, boolean persistentSupport, boolean obbSupport){
public int patch(String apkPath, String baseApkPath, String persistentPath, String obbPath, String baseObbPath, String backupPath, int apkModifyModel, boolean persistentSupport, boolean obbSupport){
if(apkModifyModel == HomeFragment.APK_MODIFY_MODEL_ROOT){
if(!Shell.rootAccess()){
return ModUtils.RESULT_STATE_ROOT_ERROR;
Expand All @@ -252,7 +252,7 @@ public int patch(String apkPath, String baseApkPath, String persistentPath, Stri
try {
Log.d(MainApplication.LOG_TAG, "patch: apkPath=" + apkPath + ", baseApkPath=" + baseApkPath + ", apkModifyModel=" + apkModifyModel);
List<Mod> mods = adapter.getMods();
File fusionFile = new File(getBase().getCacheDir().getAbsolutePath() + "/fusion");
File fusionFile = new File(getBase().getFilesDir().getAbsolutePath() + "/fusion");
try {
FileUtils.deleteDirectory(fusionFile);
} catch (IOException e) {
Expand Down Expand Up @@ -300,7 +300,7 @@ public int patch(String apkPath, String baseApkPath, String persistentPath, Stri
e.printStackTrace();
}
}
if(apkModifyModel != HomeFragment.APK_MODIFY_MODEL_NONE){
if(apkModifyModel == HomeFragment.APK_MODIFY_MODEL_VIRTUAL || apkModifyModel == HomeFragment.APK_MODIFY_MODEL_ROOT){
int result = NativeUtils.PatchApk(baseApkPath, apkPath, fusionFile.getAbsolutePath());
if(result != NativeUtils.RESULT_STATE_OK){
Log.d(MainApplication.LOG_TAG, "Patch APK File Failed: " + result + ",apkPath:" + apkPath + ",baseApkPath:" + baseApkPath);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if(preference.getKey().equals("setting_export_apk")){
HomeFragment homeFragment = (HomeFragment) BaseFragment.fragment(R.id.nav_home, this.getActivity().getApplication());
if(homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_NONE){
if(homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_NONE || homeFragment.apkModifyModel == HomeFragment.APK_MODIFY_MODEL_HOOK){
Toast.makeText(this.getActivity(), R.string.none_modify_export, Toast.LENGTH_LONG).show();
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ja-rJP/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,13 @@
<item>No Modify</item>
<item>VirtualApp Model</item>
<item>Root Privilege Model (Caution)</item>
<item>Hook Model</item>
</string-array>
<string-array name="apk_modify_model_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string name="obb_support_title">Android OBB resource file patch support</string>
<string name="obb_support_summary">Android OBB resource file patch support, such as \"Honkai Impact 3\" JP service, SEA service, global service.</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ko-rKR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,13 @@
<item>변경 없음</item>
<item>가상어플 방식</item>
<item>루트 권한 방식 (주의)</item>
<item>Hook Model</item>
</string-array>
<string-array name="apk_modify_model_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string name="obb_support_title">안드로이드 OBB 리소스 파일 패치 지원</string>
<string name="obb_support_summary">안드로이드 OBB 리소스 파일 패치 지원 기능. 붕괴3 일본서버, 동남아시아 서버, 혹은 글로벌 서버를 위한 기능입니다.</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-ru-rRU/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,13 @@
<item>Без модификации</item>
<item>VirtualApp</item>
<item>Root права (осторожно)</item>
<item>Hook Model</item>
</string-array>
<string-array name="apk_modify_model_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string name="obb_support_title">Поддержка патча OBB файла</string>
<string name="obb_support_summary">Поддержка патча OBB файла для Honkai Impact 3 JP SEA и global серверов.</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,13 @@
<item>不修改</item>
<item>虚拟环境模式</item>
<item>Root权限模式(慎用)</item>
<item>Hook模式</item>
</string-array>
<string-array name="apk_modify_model_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string name="obb_support_title">安卓OBB资源文件补丁支持</string>
<string name="obb_support_summary">安卓OBB资源文件补丁支持,比如《崩坏3》的日服,东南亚服,全球服。</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,13 @@
<item>不修改</item>
<item>虛擬環境模式</item>
<item>Root權限模式(慎用)</item>
<item>Hook模式</item>
</string-array>
<string-array name="apk_modify_model_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string name="obb_support_title">安卓OBB資源文件補丁支持</string>
<string name="obb_support_summary">安卓OBB資源文件補丁支持,比如《崩壞3》的日服,東南亞服,全球服。</string>
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,13 @@
<item>No Modification</item>
<item>VirtualApp Model</item>
<item>Root Privilege Mode (Proceed with caution)</item>
<item>Hook Model</item>
</string-array>
<string-array name="apk_modify_model_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string name="obb_support_title">Android OBB patch resource file support</string>
<string name="obb_support_summary">ONLY toggle on if your app supports OBB file patching, such as \"Honkai Impact 3\" JP server, SEA server and global server.</string>
Expand Down

0 comments on commit 89a142d

Please sign in to comment.