Unity3D--SDK接入一键打包APK
来源:互联网 发布:淘宝刷心悦会员封号 编辑:程序博客网 时间:2024/05/16 17:29
最近老接入SDK但是发现实在是太麻烦了,我们现在接入SDK后需要导入可用的apk,首先需要把做好的JAR也就是你所接入的第三方SDK放到U3D的工程目录的 \Assets\Plugins\Android\bin 目录下,然后再使用U3D导出安卓工程.可能很多会说为什么不直接打包APK呢?
U3D不是可以直接编译出APK文件吗? 在这里我想告诉大家如果直接使用U3D编译出APK文件那么编译出来的文件可能调用不了你所接入的SDK,如果你所接入的SDK所需要的资源文件不是在你的jar的根目录下那么就可能找不到路径,是的 就是这么操蛋的.
所以这就是为什么我们要导出安卓工程,然后使用Eclipse 进行编译APK文件了.就是为了安全起见,因为我再不想因为一点不该出现的错误导致一个问题弄一天的情况,那真是太打击自信心了,特别是像接SDK这样的麻烦并且带有很多不确定性的事.
好了到这里可能你们还不知道为什么会很麻烦,那么请听我说,现在的 程序基本是这样jar->放入U3D->U3D导出安卓工程->Eclipse->apk
但是,当你接入的SDK出问题了,测试不通过了,计费需要改了,那么你需要做的就是 使用Eclipse->修改jar工程-> jar->放入U3D->U3D导出安卓工程->Eclipse->apk, 是的每次出现问题你都需要这样从新打包然后放到真机上进行测试.发现出现问题然后你的内心是崩溃的, 因为你又需要不断的重复那些该死的步骤.
好了现在有一个工具可以让你们一键搞定直接编译出apk文件不需要经历那些恶心的步骤了,只需要配置一下文件,然后批处理他们.
首先需要在U3D中放入一个插件,这个插件的功能就是可以一键导出安卓工程,插件代码如下,当你把这段代码的CS文件放到\Assets\Editor的目录下时会自动在U3D的菜单栏出现GameBuilder选项然后你可以单击选项下面的BuildForAndroid 就会自动在你设置的目录中导出安卓工程了,当然请注意这并不是我所说的一键打包,实际上我们并用不上这个功能.
sing UnityEngine;using UnityEditor;using System.Collections;using System.IO;/// <summary>/// Build/// </summary>class GameBuilder{// 输出路径 private const string BuildPath = "E:/fastbuild/export project";//此项为你需要输出的安卓工程的路径[MenuItem("GameBuilder/BuildForAndroid")] public static void BuildForAndroid() { // 如果不是android平台,转为android平台 if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android); }// 允许读写SD卡 PlayerSettings.Android.forceSDCardPermission = true;// 设置 keystore 信息根据自己的KEY设置 PlayerSettings.Android.keystoreName = "hai.keystore"; PlayerSettings.Android.keystorePass = "123"; PlayerSettings.Android.keyaliasName = "123"; PlayerSettings.Android.keyaliasPass = "123";// 充许调试 开发 外部修改 BuildOptions options =BuildOptions.AcceptExternalModificationsToPlayer; // 添加一个叫Debug的宏 PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "");// 设置标识符 PlayerSettings.bundleIdentifier = "com.nczl.fishgame.yy";//此项为当你导出安卓工程时的包名;string scenePath ="/Game/Scenes";// 添加场景 ArrayList scenes = GetScenesNames(scenePath); /*{ "Assets/Game/Scenes/Main.unity", "Assets/Game/Scenes/Game_shark.unity", "Assets/Game/Scenes/Game_nomal.unity", "Assets/Game/Scenes/Loading.unity", }; */// 检查输出路径存在则删除; if (!System.IO.Directory.Exists(BuildPath)) { // System.IO.Directory.Delete(BuildPath); System.IO.Directory.CreateDirectory(BuildPath); } if (scenes != null) // 输出! BuildPipeline.BuildPlayer(scenes.ToArray() as string[], BuildPath, BuildTarget.Android, options); else Debug.LogError("当前场景获取错误!"); }public static ArrayList GetScenesNames(string fileName) {string path = Application.dataPath+fileName; string getFilesFilter = "*.unity"; ArrayList sceneName=new ArrayList(); DirectoryInfo di = new DirectoryInfo(path); if (di.Exists) { foreach (FileInfo fileInfo in di.GetFiles(getFilesFilter)) { sceneName.Add(fileInfo.FullName); } }return sceneName; }}
好的 现在第一步已经完成,请记住一定要根据自己的情况修改上面的代码,然后放入U3D中. 然后下一步就是 使用python 代码来启动U3D然后导出安卓工程然后再python使用ant打包出APK文件并且重新签名,
不懂python并不是很重要,因为它很简单,基本像你们聪明的程序员都看的懂.
# -*- coding: gb18030 -*-import os, shutil# 定义一个函数,从Unity中输出Android工程文件def BuildAndroid( unityPath, projectPath, logPath ): print('start build') # 更改当前路径位置 os.chdir('E:/fastbuild') # 如果当前工程已经存在,删除这个工程 if os.path.exists('./export projectMz'): shutil.rmtree('./export projectMz')# 将Unity可执行文件添加到环境变量路径 os.putenv("path",unityPath); #os.chdir(projectpath)# unity命令行 command = 'Unity.exe -quit -batchmode -projectPath {0} -logFile {1} -executeMethod GameBuilder.BuildForAndroid'.format(projectPath,logPath) # 执行命行令 os.system(command) # 备份文件位置 source = './UnityPlayerNativeActivity.java' # 目标文件位置 #coding:utf-8 target ='./export projectMz/街机online/src/com/nczl/fishgame/mz/UnityPlayerNativeActivity.java' # 复制 ''' shutil.copy(source,target) ''' # 更新当前路径到输出的android工程路径 # 更改当前路径位置 os.chdir('./export projectMz/街机online') # 检查是否已经存在build.xml文件 if os.path.exists('./build.xml'): os.remove('./build.xml' ) # 添加android和ant批处理环境变量 os.putenv("path",'D:/adt-bundle-windows-x86-20140702/sdk/tools;D:/apache-ant-1.9.4/bin') # 更新android工程 os.system('android update project --target 2 --path ./ --name Fishing3NetActivity') # 添加数字签名 #coding:utf-8 with open('local.properties','a' ) as f:# 签名文件的路径 f.write('key.store=../../hai.keystore\n')#签名文件的别名 f.write('key.alias=123\n')#签名文件密码 f.write('key.store.password=123\n')#别名密码 f.write('key.alias.password=123\n') os.system('ant clean')#使用ANT打包 os.system('ant release') print('build complete')# Unity路径unitypath='D:/Program Files (x86)/Unity/Editor'# Unity工程路径projectpath='E:/fastbuild/oldfish1'# Log存放位置logpath='E:/fastbuild/buildlog1.txt'BuildAndroid(unitypath, projectpath, logpath)
然后就是使用这段代码改成你自己的设置然后 新建一个 .py为后缀的文件复制到里面剩下的就是安装python环境了,安装ANT 然后需要注意的是 需要在环境变量path中加入它们的安装路径然后 就到了最关键的一步了你只需要把你的 .py文件放到相应的目录下然后执行他,只需要双击它执行那么一切都搞定了 直接编译出APK到你设置好的目录.那么当你需要修改JAR时只需要把修改好的JAR放到U3D工程目录下,然后执行.py文件就OK了.
安装包和代码下载:
http://pan.baidu.com/s/1sj03C8P
注意:当你执行.py文件时最好把U3D关闭因为会出现冲突的.
- Unity3D--SDK接入一键打包APK
- unity3d android sdk接入
- Unity3D 关于Facebook SDK接入方法(一)
- Unity3d打包android apk
- unity3d 打包apk
- unity3D打包成apk
- Unity3D接入SDK - iOS篇
- Unity3d Android SDK接入解析
- 批处理一键打包apk
- Unity3d Android SDK接入解析(一)Unity3d 与 Android之间的互相调用
- Unity3d Android SDK接入解析(一)Unity3d 与 Android之间的互相调用
- unity3d打包发布Apk流程
- unity3d接入有米广告SDK----android
- Unity3d游戏开发之如何接入SDK
- unity3d接入有米广告SDK----android
- Unity3D接入微信登录SDK安卓版
- Unity3d与Android交互-SDK接入总结
- unity3d在菜单栏,一键设置Player setting及自动打包并设置apk的存储位置
- Cloud Design Pattern - Priority Queue Pattern(优先级队列模式)
- iOS解析html
- windows下创建线程函数CreateThread
- 表达式求值问题
- 触摸spine,触摸节点,等
- Unity3D--SDK接入一键打包APK
- SQL列出库里面的所有表名和字段名
- iOS疯狂讲解之 NSOperationQueue与GCD的使用原则和场景
- 蓝桥杯练手之高斯日记
- idea 编程实用快捷键
- iOS 按钮超过父视图范围无法响应事件的处理方法
- 创建spine动画
- Modify WIFI history chart in battery
- Linux环境进程间通信(五): 共享内存(上)