在写文章之前先说下unity已经自带了可视化打包,我为什么要多此一举进行命令行打包,估计刚接触unity的小伙伴都会有这样的疑惑,当你游戏要发布到Android平台你就会知道,需要接不通平台的sdk,甚至有些平台还需要改包名。而游戏从接完平台sdk,到发布还需要经过无数次的测试,发布后甚至还需若干次升级。你要是每次都手动的将每个平台jar、res等,拷贝到unity
Plugins文件下,然后再去改包名,暂且不说这样多次操作是多么的麻烦无聊,关键是你要是哪天不小心手残了,把什么拷贝错了或者包名写错了忘记改了等等,还特么的要重来,你能受得了嘛,
好了,我觉得我受不了,那么来吧,写个打包工具吧。

 

 
首先在unity的assets文件下建立Editor文件夹,我们把工具脚本写在此处,写在此处的目的是想在unity菜单栏上,创建打包按键。这个大家应该都知道吧。我们写个静态方法叫buildQQ吧,然后在方法上设置菜单[MenuItem("hugeBuild/QQ")],好吧,请原谅我的自恋,居然自称虎哥。效果出来了,截图作为真相。(注:使用头文件using
UnityEditor;)



 

       
那么下面我们就该在buildQQ方法中先去执行文件拷贝了,我们先把不同平台的jar、res、AndroidManifest.xml,放在Assets/Android/QQ(360、xiaomi)等。当我打包QQ的时候,我们先把Asssets/Plugins/Android目录下的文件删除,然后将Assets/Android/QQ文件拷贝到Asssets/Plugins/Android下。具体C#文件操作我就不多说了,太简单了,网上一搜到处都是。

       
等待拷贝完成后,该去解析AndroidManifest.xml中包名了,因为不同平台包名要求会不同。把获取到的包名赋值给PlayerSettings.bundleIdentifier。具体方法我在这里说下吧!代码如下:
using System.Xml; static string getPackage() { string content =
System.IO.File.ReadAllText("Assets/Plugins/AndroidManifest.xml"); XmlDocument
xmldoc = new XmlDocument(); xmldoc.LoadXml(content); XmlElement rootElem =
xmldoc.DocumentElement; //获取根节点 return rootElem.Attributes["package"].Value; }
*
搞定后,设置keystore账号和密码。

* PlayerSettings.Android.keystoreName = "Assets/xiaohu.keystore";
PlayerSettings.Android.keystorePass = "******";
PlayerSettings.Android.keyaliasName = "huge";
PlayerSettings.Android.keyaliasPass = "******";
 

         最后调用:打包函数 BuildPipeline.BuildPlayer(lsit.ToArray(), "Sample.apk",
BuildTarget.Android,
BuildOptions.None);等待完成,但是这里面参数要说明下,第一参数是要打包的场景,第二是打出包的路径和名称,第三是编译的平台,第四是编译的选项,一般选择Node,即可,具体参数详解到官网查看api。下面提供一种方法去获取所有需要打包的场景名称。

 

*
List<string> lsit = new List<string>();

*
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) {

*
if (scene.enabled) {

*
lsit.Add(scene.path);

*
}

*
}

        大功告成!

给大家提供一个加密图片或者网址付费可见的网站,这样有好的源码可以保存到网盘然后实现付费下载,也算是一种盈利方法

 http://www.8tupian.com/re.php?u=6733  网页做的丑不用太在意!