top of page

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
+

bottom of page