Unity Html5 Walker
*サポート情報*
[2018/08/12]
・iOS9以降ではATSのため外部サイトが制限されているようです。
・Androidのapkがバージョンアップしたらしく、apktoolのバージョンアップが必要です。
■必要ツール(Android)
1)apktool ver. 2.3.3 (2018/08/12)
https://ibotpeaches.github.io/Apktool/install/
apktool.batとapktool.jar(要このファイル名)をUH5W/Tools/に配置
2)zipalign
https://developer.android.com/studio/command-line/zipalign
Android Sdkをインストールすると
/android-sdk-tools/build-tools/*.*.*/配下にzipalign.exeがあります。
UH5W/Tools/に配置
3)このように配置してください。
└─UH5W
└─Tools
└─apktool.bat
└─apktool.jar
└─zipalign.exe
■パッチ
旧型はEditorフォルダーが/Android/Editorと/iOS/Editorのようにありましたが、
新型はPlugin直下に統合する必要があるようです。
# UH5Wインポート直後
Project
└─Assets
└─UH5W
└─Plugins
├─Android ..... (crosswalk libraries)
│ ├─Editor
│ ├─libs
│ └─res
└─iOS ..... (WebView extend)
└─Editor
上記をこのようにします。
/Plugins/Android/Editorを/Plugins/Editorに移動してください。
# 新型
Project
└─Assets
└─UH5W
└─Plugins
├─Android ..... (crosswalk libraries)
│ ├─libs
│ └─res
├─Editor ..... (Android iOS mix)
└─iOS ..... (WebView extend)
この/Plugins/Editorにpatchを当ててください。
$ patch -p1 < 20180812.patch
20180812.patch
diff --git a/PostProcessScript.cs b/PostProcessScript.cs
index dc38d4e..12c2ca6 100644
--- a/PostProcessScript.cs
+++ b/PostProcessScript.cs
@@ -63,7 +63,7 @@ public class PostProcessScript {
Debug.Log (System.IO.Path.GetDirectoryName(pathToBuiltProject));
string apktool = projectPath + "/Assets/UH5W/Tools/apktool.bat";
- string args = "d " + pathToBuiltProject;
+ string args = "-r d " + pathToBuiltProject;
Debug.Log( "[apktool] " + apktool + " " + args );
@@ -103,7 +103,7 @@ public class PostProcessScript {
}
}
- string args2 = "b " + unzipdir + " " + unzipdir + ".b.apk";
+ string args2 = "b " + unzipdir + " -o " + unzipdir + ".b.apk";
Debug.Log( "[apktool] " + apktool + " " + args2 );
@@ -117,7 +117,7 @@ public class PostProcessScript {
Debug.Log( "apktool b Done." );
string signed_apk = unzipdir + ".signed.apk";
- string bapk = unzipdir + "/dist/" + System.IO.Path.GetFileName (pathToBuiltProject);
+ string bapk = unzipdir + ".b.apk";
string jsigner_tool = "jarsigner";
string args_jsigner = string.Format(jsigner_args, signed_apk,
@@ -178,11 +178,15 @@ public class PostProcessScript {
try {
System.IO.Directory.Delete(unzipdir, true);
Debug.Log( "[clean delete] Done. " + unzipdir );
- }catch (System.IO.IOException e) {
+ string bapk = unzipdir + ".b.apk";
+ System.IO.File.Delete(bapk);
+ Debug.Log("[clean delete] Done. " + bapk);
+ }
+ catch (System.IO.IOException e) {
Debug.Log( "[EXCEPTION] delete failure : " + e );
}
- }
- if(!string.IsNullOrEmpty(signed_apk) && System.IO.File.Exists(signed_apk)) {
+ }
+ if (!string.IsNullOrEmpty(signed_apk) && System.IO.File.Exists(signed_apk)) {
try {
System.IO.File.Delete(signed_apk);
Debug.Log( "[clean delete] Done. " + signed_apk );
@@ -194,3 +198,27 @@ public class PostProcessScript {
}
#endif
+
+#if UNITY_IOS
+using System.Collections;
+using System.IO;
+using UnityEditor.Callbacks;
+using UnityEditor.iOS.Xcode;
+using UnityEditor;
+using UnityEngine;
+
+public class UnityWebViewPostprocessBuild {
+ [PostProcessBuild(100)]
+ public static void OnPostprocessBuild(BuildTarget buildTarget, string path) {
+ if (buildTarget == BuildTarget.iOS) {
+ string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
+ PBXProject proj = new PBXProject();
+ proj.ReadFromString(File.ReadAllText(projPath));
+ string target = proj.TargetGuidByName("Unity-iPhone");
+ proj.AddFrameworkToProject(target, "WebKit.framework", false);
+ File.WriteAllText(projPath, proj.WriteToString());
+ }
+ }
+}
+#endif
+