unity5.0 unity3d打包apk步骤出来的apk 为什么闪退

unity5.0 打包出来的apk 为什么闪退_百度知道
unity5.0 打包出来的apk 为什么闪退
提问者采纳
zip dl-ssl安卓SDK好像 需要你另外去谷歌下载 并且给引擎添加SDK的路径,支持5.google.0以上的安卓版本 国内使用SDK Manager: dl-android&#47.google&#47。 这是地址.exe更新不了 你需要手动升级;android-21_r01;repository&#47
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁后使用快捷导航没有帐号?
只需一步,快速开始
查看: 5750|回复: 4
unity发布的游戏在真机上闪退是什么原因?
TA的其他好贴
马上注册,加入CGJOY,享用更多功能,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
发布了一个Android版的展示模型用的程序(40M+),在真机上一运行之后出现unity标志,一会就闪退,这是怎么回事?坐等大神指点~~~
这个原因多的去了。
你该从你们程序猿那里找原因
没有用到什么脚本,只有一个自动旋转的脚本。是因为使用的非正版的软件吗?
可能性太多了,不是美术可以左右的
有可能是update,fixupdate,lateupdate里面写了耗性能的、不正常刷新的代码,此外路径、渐变等算法处理不平滑,不正确的shader,很多原因都会导致闪烁现象,这个需要调试和审读代码才能发现。
动画师的生存手册
Powered byUnity自动打包Apk - upstudio - 博客园
unity打包apk相对来说比较容易,相信出过的人都明白,出包过程,没有大的难度,一步一操作,一步一等待,繁琐耗时,不懂的人又代替不了。这时候需求就来了,如何简单的一键打包搞定,这个就稍微有点难度,当然作为程序员就是要解决这些问题,封装变化,变繁为简。
打包apk大概可以分为以下步骤(出apk需要的jdk,Android sdk这些不用多说,相信大家都会配置)
1、配置PlayerSetting&
2、配置渠道等第三方SDK
3、copy外部资源和一些自己工程需要的一些配置
4、unity打包build(如果出成Android工程,还需要就行Android工程的自动打包apk)
没有什么难的东西,都是一些配置,繁琐的东西,一键化也就是写个脚本,按照步骤一步一步的执行就行了
很简单相信大家都会,只是一些细节需要注意一下,细节中还是有一些坑的
一、配置PlayerSetting&
&有两种方法
1、事先使用PlayerSetting 编辑页面保存一个配置好的ProjectSettings.asset,需要的时候直接替换掉ProjectSettings目录下的ProjectSettings.asset就行了
设置分离obb文件的属性,有的人可能不知道
2、使用代码设置PlayerSetting(凡是在PlayerSetting编辑页面看到的属性都是可以使用代码进行设置的)
&(1)、Unity提供了命令行方式进行打包、调用方法等操作
command line形式:&unity执行文件路径&-projectPath 项目工程路径 -executeMethod 方法名 各种参数
在unity项目Editor下的一个继承ScriptableObject的文件中的static方法都可以使用unity&command line执行(注意Unity需要是关闭的)
$unity_path -projectPath $project_path -quit -batchmode -executeMethod ProjectBuild.ProjectSetting -qmplatform $platform //$unity_path unity执行文件路径
//$project_path 项目工程路径
//-batchmode 不打开unity
//-executeMethod
执行unity方法
//ProjectBuild.ProjectSetting Editor下的脚本名为ProjectBuild,其中有个名为ProjectSetting的方法,具体代码如下
//-qmplatform $platform 传入的参数
&(2)、有一些属性设置,比较难找,使用&PlayerSettings.SetPropertyInt("ScriptingBackend",&(int)ScriptingImplementation.Mono2x, BuildTarget.iPhone); 慢慢尝试
class ProjectBuild : Editor
const string OPT_PLATFORM = "-qmplatform";
const string OPT_BUNDLE_VERSION = "-qmbundle_version";
const string OPT_SHOW_VERSION = "-qmshow_version";
const string OPT_VERSION_CODE = "-qmversion_code";
/// &summary&
/// 根据参数配置Unity ProjectSetting
/// &/summary&
static void ProjectSetting()
Dictionary&string, string& settings = new Dictionary&string, string&();
settings[OPT_PLATFORM] = "";
settings[OPT_BUNDLE_VERSION] = "";
settings[OPT_SHOW_VERSION] = "";
settings[OPT_VERSION_CODE] = "";
string[] args = System.Environment.GetCommandLineArgs();
ParseArgs(settings, args);//解析参数
panyName = "****";
PlayerSettings.bundleVersion = settings[OPT_BUNDLE_VERSION];
PlayerSettings.shortBundleVersion = settings[OPT_SHOW_VERSION];
PlayerSettings.defaultInterfaceOrientation = UIOrientation.AutoR
PlayerSettings.allowedAutorotateToLandscapeLeft = true;
PlayerSettings.allowedAutorotateToLandscapeRight = true;
PlayerSettings.strippingLevel = StrippingLevel.StripByteC
PlayerSettings.aotOptions = "nimt-trampolines=512,ntrampolines=2048";
PlayerSettings.targetGlesGraphics = TargetGlesGraphics.A
PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.A
PlayerSettings.Android.targetDevice = AndroidTargetDevice.FAT;
PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel9;
PlayerSettings.Android.forceInternetPermission = true;
PlayerSettings.Android.forceSDCardPermission = true;
PlayerSettings.Android.bundleVersionCode = int.Parse(settings[OPT_VERSION_CODE]);
PlayerSettings.Android.useAPKExpansionFiles = true;//是否使用obb分离模式
PlayerSettings.productName = "******";
PlayerSettings.bundleIdentifier = "*****";
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "宏定义");//宏定义的设置
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android);
(3)、对于一些如Icon、splash页面的设置可以使用原名替换图片的方法
(4)、&PlayerSettings.Android.useAPKExpansionFiles&=&//是否使用obb分离模式,这个主要是针对Google play的
obb的命名,是需要一定的规则的,不然无法使用,可以使用代码自动设置obb的名字在Editor目录下有这个方法,出包时会自动调用,可以在这里设置
(如果需要对dll文件进行加密的话,肯定是出成了Android工程,这里可以获取Android工程中的dll文件进行加密,同时替换可以解密的so文件)
& [PostProcessBuild(90)]
public&static&void&OnPostProcessBuild(BuildTarget&target,&string&pathToBuiltProject)
& & files&=&Directory.GetFiles(pathToBuiltProject,&"*",&SearchOption.AllDirectories);
& & if&(files&!=&null)
& & & & & foreach&(string fileName in&files)
& & & & & {
& & & & & & & &if&(fileName.Contains(".obb"))
& & & & & & & &{
& & & & & & & & & &int&bundleVersion&=&PlayerSettings.Android.bundleVersionC
& & & & & & & & & &string&bundlePackageName&=&PlayerSettings.bundleI
& & & & & & & & & &Directory.Move(fileName,&pathToBuiltProject&+&"/main."&+&bundleVersion&+&"."&+&bundlePackageName&+&".obb");
& & & & & & & &}
& & & & & &}
&obb的使用上的还有一点小小的坑,Google play商店在下载游戏的时候,会自动下载apk所需的obb,但是有时候也不能保证一定成功,所以需要项目本身就具有这样的检测下载功能https://www./en/#!/content/3189这里有非常详细的代码,可以copy直接使用
二、配置渠道等第三方SDK和copy外部资源
1、sdk的接入
统一接口,支持不同各种渠道的sdk接入
http://blog.csdn.net/chenjie/article/details/这个可以看一下
2、和不同渠道绑定的参数,建议拿出来做配置,可以不用重新出版本就可以切换不同渠道的版本
3、sdk切换相关目录资源的替换,unity直接出成apk的话,就在unity打包之前,如果是先出Android工程的话,也可以在Android工程中进行,效率会更快一点,不需要再从unity build就可以出成不同的渠道包&
三、unity打包build
unity build Android 可以直接打包成apk或是Android工程,使用命令行调用的方式跟上面ProjectSetting的类似,-executeMethod 的参数名换成相应函数名即可,
static void Build()
string android_project_path = "";//目标目录
BuildTarget target = BuildTarget.A
string[] outScenes = GetBuildScenes();//需要打包的scene名字数组
BuildPipeline.BuildPlayer(outScenes , android_project_path, target, BuildOptions.AcceptExternalModificationsToPlayer);
// BuildOptions.AcceptExternalModificationsToPlayer
表示出成Android工程
直接打包apk就不用多说了,build成功就行了
出成Android工程后还需要几步才能完成
1、Android工程,自动打包apk,需要配置ant环境
到官方主页http://ant.apache.org下载新版(目前为Ant1.9.6)的ant,得到的是一个apache-ant-1.9.6-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.9.6。然后配置环境变量
ANT_HOME&&& C:/ apache-ant-1.9.6
path&&& &&&&& &&&C:/ apache-ant-1.9.6/bin
classpath&&& &&C:/apache-ant-1.9.6/lib
2、可以在Android工程中进行资源和渠道SDK的替换(也就是目录文件的替换),这样可以一个工程出成不同的渠道包
3、签名的需要的ant.properties,这里写着Android签名文件的目录,用户名和密码,需要事先写好,copy到Android工程目录下
& & key.store=./config/xxx.keystore
& & key.alias=xxx
& & key.store.password=xxx
& & key.alias.password=xxx
4、使用Android&command line生成build.xml(这是ant签名打包的必须文件)&
command line形式:& android update project -p Android工程路径 -n 生成apk的名字(这个command line的使用需要配置一下环境变量)
android update project -n $apk_name -t 1 -p "$android_pj_path"
//$apk_name
生成apk的名字
//"$android_pj_path"
Android工程路径
5、使用ant&release,这个command line需要在Android工程目录下执行,不然command line会找不到路径,最后在bin目录下生成apk文件,有签名的和不签名的
可以考虑与Jenkin结合使用,会更方便操作
(by sht)

我要回帖

更多关于 unity 5打包apk闪退 的文章

 

随机推荐