123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- using UnityEditor.Build;
- using System.IO;
- using System.Xml;
- using UnityEditor.Callbacks;
- public class AndroidBuildProcessor
- {
-
- // build 开始时
- [PostProcessBuildAttribute(1)]
- public static void OnPostProcessBuild(BuildTarget target, string path)
- {
- //throw new System.NotImplementedException();
- Debug.Log("OnPostProcessBuild");
- if (target == BuildTarget.Android)
- {
- OnPreprocessBuild_android(target, path);
- //读取源文件路径
- //string sourceParh = Application.dataPath + "/PottingMobileSDK/google-services.json";
- ////获取拷贝路径 = 打包输出路径 + 包名(打包文件夹名) + 下级路径
- //string targetPath = path + "/" + PlayerSettings.productName;
- ////是否已存在文件夹
- //if (!Directory.Exists(targetPath))
- //{
- // Directory.CreateDirectory(targetPath);
- //}
- ////拷贝文件(源路径及文件名, 拷贝路径及文件名, 若该文件名已存在,是否替换)
- //File.Copy(sourceParh, targetPath + "/google-services.json", true);
-
- }
- }
-
- /// <summary>
- /// 在生成android apk前,将一些配置写入AndroidManifest.xml
- /// </summary>
- /// <param name="buildTarget"></param>
- /// <param name="path"></param>
- public static void OnPreprocessBuild_android(BuildTarget buildTarget, string path)
- {
- Debug.Log("path: " + path);
- if (buildTarget != BuildTarget.Android)
- {
- return;
- }
-
- // 读取xml
- string xmlPath = Application.dataPath + "/Plugins/Android/AndroidManifest.xml";
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.Load(xmlPath);
- // 包名
- XmlNode node = xmlDoc.SelectSingleNode("/manifest");
-
- // API_KEY
- node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.facebook.sdk.ApplicationId");
- node.Attributes["android:value"].Value = "fb" + AdManagerSettings.Instance.AndroidFacebookID;
-
- node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.facebook.sdk.ClientToken");
- node.Attributes["android:value"].Value = AdManagerSettings.Instance.AndroidFacebookClientToken;
- node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "applovin.sdk.key");
- //node.Attributes["android:value"].Value = jd["android"]["android_manifest"]["yunwa_app_id"].ToString();
-
- node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.google.android.gms.ads.APPLICATION_ID");
- node.Attributes["android:value"].Value = AdManagerSettings.Instance.AndroidAdmobId;
- node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.google.android.gms.games.APP_ID");
- node.Attributes["android:value"].Value = "\\u003"+AdManagerSettings.Instance.GoogleGamesAppID;
-
- //node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.google.android.gms.games.APP_ID");
- //node.Attributes["android:value"].Value = AdManagerSettings.Instance.GoogleGamesAppID;
- // scheme
- XmlNodeList nodes = xmlDoc.SelectNodes("/manifest/application/activity/intent-filter/data");
- node = nodes.Item(0);
- node.Attributes["android:scheme"].Value = "fb"+ AdManagerSettings.Instance.AndroidFacebookID;
-
- //com.facebook.app.FacebookContentProvider{APP_ID}
-
- node = FindNode(xmlDoc, "/manifest/application/provider", "android:name", "com.facebook.FacebookContentProvider");
- node.Attributes["android:authorities"].Value = "com.facebook.app.FacebookContentProvider"+ AdManagerSettings.Instance.AndroidFacebookID;
- // 保存
- xmlDoc.Save(xmlPath);
- AssetDatabase.Refresh();
- }
-
- static XmlNode FindNode(XmlDocument xmlDoc, string xpath, string attributeName, string attributeValue)
- {
- XmlNodeList nodes = xmlDoc.SelectNodes(xpath);
- //Debug.Log(nodes.Count);
- for (int i = 0; i < nodes.Count; i++)
- {
- XmlNode node = nodes.Item(i);
- string _attributeValue = node.Attributes[attributeName].Value;
- if (_attributeValue == attributeValue)
- {
- return node;
- }
- }
- return null;
- }
- }
|