コード例 #1
0
    public static void OnPostProcessBuild(BuildTarget buildTarget, string pathToBuiltProject)
    {
        var dataPath        = Application.dataPath;
        var len             = dataPath.Length - "Assets".Length;
        var unityProjectDir = dataPath.Remove(len);

        if (buildTarget == BuildTarget.iOS)
        {
#if UNITY_IOS
            PostProcessIOS(unityProjectDir, pathToBuiltProject);
#endif
        }

        else if (buildTarget == BuildTarget.Android)
        {
#if UNITY_ANDROID
            string androidProjPath = MSLDPostProcessCommonAndroid.GetProjectPathFromBuild(pathToBuiltProject);
            PostProcessAndroid(Path.GetFullPath(unityProjectDir), Path.GetFullPath(androidProjPath));
#endif
        }
    }
コード例 #2
0
    public static bool PostProcessAndroid(string unityProjectDir, string androidProjectDir)
    {
        // 拷贝配置文件
        string confiFilePath = Path.Combine(unityProjectDir, "Assets/Plugins/iDreamsky/msld/Android/msConfig.json");
        string toPath        = Path.Combine(androidProjectDir, "src/main/assets/msld/config/msConfig.json");

        MSLDPostProcessCommonAndroid.copyFile(confiFilePath, toPath);

        // 修改Manifest
        if (!MSLDPostProcessCommonAndroid.ChangeAndroidManifestAndroid(androidProjectDir, (xmlDocument, appElement, activityElement) => {
            activityElement.SetAttribute("android:name", "com.ms.sdk.plugin.unity.MSLDUnityActivity");

            string namespaceUrl = "";
            if (activityElement.GetAttributeNode("android:name") != null)
            {
                namespaceUrl = activityElement.GetAttributeNode("android:name").NamespaceURI;
            }

            Debug.Log("MSLD post set com.ms.sdk.plugin.unity.MSUnityApplication");
            appElement.SetAttribute("name", namespaceUrl, "com.ms.sdk.plugin.unity.MSUnityApplication");
            appElement.SetAttribute("usesCleartextTraffic", namespaceUrl, "true");


            // 极光一键登录配置
            MSLDPostProcessConfig cfg = MSLDPostProcessCommonAndroid.ReadMsConfig(unityProjectDir);
            Debug.Log("MSLD post jg_app_key:" + cfg.jg_app_key);
            if (cfg.jg_app_key != null && cfg.jg_app_key.Length > 0)
            {
                XmlElement manifest = (XmlElement)xmlDocument.SelectSingleNode("manifest");
                var android = manifest.GetAttribute("xmlns:android");
                XmlElement node = xmlDocument.CreateElement("meta-data");
                node.SetAttribute("name", android, "JPUSH_APPKEY");
                node.SetAttribute("value", android, cfg.jg_app_key);
                appElement.AppendChild(node);

                AddJiGuangActivity(xmlDocument, appElement);
            }

            return(true);
        }))
        {
            return(false);
        }


        // 修改gradle
        if (!ChangeGradleFileAndroid(androidProjectDir))
        {
            return(false);
        }

        // 删除可能重复的资源
        var fileAndroid = Path.Combine(androidProjectDir, "libs/android-support-v4.jar");

        if (File.Exists(fileAndroid))
        {
            Debug.Log("[MSLDPostProcess][Android][ChangeGradleFile]: remove fileAndroid");
            File.Delete(fileAndroid);
        }

        //// 拷贝java文件
        //string javaFilePath = Path.Combine(unityProjectDir, "Assets/Plugins/iDreamsky/msld/Android/java/com/ms");
        //string javaToPath = Path.Combine(androidProjectDir, "src/main/java/com/ms");
        //MSLDPostProcessCommonAndroid.copyDir(javaFilePath, javaToPath);

        return(true);
    }