unity保存文件打不开导出到安卓手机的APK打不开是怎么回事?

unity导出安卓apk出错,如何解决_unity吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:28,216贴子:
unity导出安卓apk出错,如何解决收藏
图是导出时的弹窗,是sdk版本太低么,还是其他什么问题
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台.unity资深名师授课,0基础从入门到精通,unity报名与培训中心.
SDKMananger更新到最新版本
jdk安好了?unity中路径选择对了?看看环境变量设置对了没有!
build setting 里面配置的apk版本,跟你的android sdk版本一致,sdk版本太多,很多时候只是会更新主要版本,4.4,5.0,5.1,unity默认2.3
登录百度帐号Unity打包apk,手机无法运行怎么回事?【unity吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:28,216贴子:
Unity打包apk,手机无法运行怎么回事?收藏
别人的程序,我拿来直接打包apk,顺利打包。手机安装后一运行就黑屏闪退是咋回事?是我手机的问题,还是打包过程中没调试好?
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台.unity资深名师授课,0基础从入门到精通,unity报名与培训中心.
看看你的游戏是不是 在渲染的材质球过多 模型面数太大
不是楼上问题的话发布时有个com.unity.xxxx之类的那个要改一下手机才能用
手机扛不住了吧,要么就是APK文件太大,该优化了!
登录百度帐号导出APK后,安装到模拟器上,点击出现停止
我导出是用2.3.3的版本,然后模拟器也设置了是2.3的版本,然后安装成功了,但是启动不了,输出的日志文件如下:
I/ActivityManager( & 61): Starting: Intent { act=android.intent.action.MAIN cat=
[android.intent.category.LAUNCHER] flg=0x cmp=com.test.ProductName/com.unity3d.player.UnityPlayerProxyActivity } from pid 128
I/ActivityManager( & 61): Start proc com.test.ProductName for activity com.test.ProductName/com.unity3d.player.UnityPlayerProxyActivity: pid=314 uid=10034 gids={}
I/ActivityManager( & 61): Starting: Intent { flg=0x10000 cmp=com.test.ProductName/com.unity3d.player.UnityPlayerNativeActivity } from pid 314
D/AndroidRuntime( &314): Shutting down VMW/dalvikvm( &314): threadid=1: thread exiting with uncaught exception (group=0x)
E/AndroidRuntime( &314): FATAL EXCEPTION: main
E/AndroidRuntime( &314): java.lang.Error: FATAL EXCEPTION [main]
E/AndroidRuntime( &314): Unity version & & : 4.1.0f4
E/AndroidRuntime( &314): Device model & & &: unknown sdk
E/AndroidRuntime( &314): Device fingerprint: generic/sdk/generic:2.3.3/GRI34/101070:eng/test-keys
E/AndroidRuntime( &314):
E/AndroidRuntime( &314): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load mono: findLibrary returned null
E/AndroidRuntime( &314): & & & &at java.lang.Runtime.loadLibrary(Runtime.java:429)
E/AndroidRuntime( &314): & & & &at java.lang.System.loadLibrary(System.java:554)
E/AndroidRuntime( &314): & & & &at com.unity3d.player.UnityPlayer.k(Unknown Source)
E/AndroidRuntime( &314): & & & &at com.unity3d.player.UnityPlayer.&init&(Unknown Source)
E/AndroidRuntime( &314): & & & &at com.unity3d.player.UnityPlayerNativeActivity.onCreate(Unknown Source)
E/AndroidRuntime( &314): & & & &at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( &314): & & & &at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
E/AndroidRuntime( &314): & & & &at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
E/AndroidRuntime( &314): & & & &at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/AndroidRuntime( &314): & & & &at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
E/AndroidRuntime( &314): & & & &at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( &314): & & & &at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( &314): & & & &at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime( &314): & & & &at java.lang.reflect.Method.invokeNative(NativeMethod)
E/AndroidRuntime( &314): & & & &at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( &314): & & & &at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( &314): & & & &at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( &314): & & & &at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( & 61): & Force finishing activity com.test.ProductName/com.unity3d.player.UnityPlayerNativeActivityW/ActivityManager( & 61): Activity pause timeout for HistoryRecord{407a2340 com.
test.ProductName/com.unity3d.player.UnityPlayerNativeActivity}
W/ActivityManager( & 61): Activity destroy timeout for HistoryRecord{ com.test.ProductName/com.unity3d.player.UnityPlayerProxyActivity}
W/ActivityManager( & 61): Activity destroy timeout for HistoryRecord{407a2340 com.test.ProductName/com.unity3d.player.UnityPlayerNativeActivity}
D/SntpClient( & 61): request time failed: java.net.SocketException: Address family not supported by protocol
I/Process ( &314): Sending signal. PID: 314 SIG: 9
I/ActivityManager( & 61): Process com.test.ProductName (pid 314) has died.
W/InputManagerService( & 61): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@407b8470
要评论请先&或者&
模拟器对U3D 来说。。。就是个垃圾。。
&
拿真机测。
&
怎么这么多学生啊
:模拟器对U3D 来说。。。就是个垃圾。。
&
拿真机测。
&
怎么这么多学生啊 真机也一样
换了R21的版本,还是闪退,唉
解决了,原来是U3D版本问题,换成3.5的版本,一点事都没
:解决了,原来是U3D版本问题,换成3.5的版本,一点事都没 你用的u3d3.5不能发布andriod2.3.3吧 只能发布4.0.0以上的andriod版本 另外你用的unity3.5的哪个版本呢
:你用的u3d3.5不能发布andriod2.3.3吧 只能发布4.0.0以上的andriod版本 另外你用的unity3.5的哪个版本呢 现在换了4.1.3了,原来是破解出问题程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之Android全自动打包生成apk(六十九)
Unity3D研究院之Android全自动打包生成apk(六十九)
围观162648次
编辑日期: 字体:
Unity自动打包Android其实要比IOS容易得多,因为Android不用先生成java工程,然后在构建.apk包,我先说说Android打包的步骤。
1.把sdk拷贝至Plugins/Android下。
如下图所示,如果你做过Android源生开发,我相信下面的东西你不会陌生。可是如果你没做过Android原生开发,我还是详细说明以下。
AndroidManifest:这是Android程序必不可少的文件,这里记录着应用程序的启动Activity。Activity就是Android的一个界面,一般应用程序会有很多Acitivty,来回切换界面。但是游戏就不太一样了,因为游戏只需要一个Activity 一个View就可以了。(扯远了)
AndroidManifest:里面还记录着应用程序的权限,Service啊什么的,,有兴趣的同学可以谷歌搜一搜。
每次打包的时候Unity会用它默认的AndroidManifest,它默认的AndroidManifest在 unity.app/Contents/PlaybackEngines/AndroidPlayer下面。当你在进行打包apk的时候 unity会拷贝该路径下的所有参数。
在ProjectSetting里面勾选一些权限的时候,Unity会自动帮你修改AndroidManifest里面的权限,但是如果某个权限不能在Unity工程里面修改,那么就需要自己手动替换。如下图所示,我们把AndroidManifest放在Plugins/Android下面, 这样Unity在进行打包的时候就不会用它默认的,而是用我自己新写的打包。。这样就方便灵活很多了。。
bin:下面就记录着sdk用到的第三方jar
res:下面就是安卓的一些图片,资源啊什么。
你可以随便解开一个android的APK看看它的目录结构就明白了。。
这样在打包的时候unity就会自动把Plugins/Android下面的所有资源打包在你的APK里面了。但是如果你做渠道包的时候,每个包用的是不同的sdk,所以你需要在打包不同渠道的时候把相关的文件拷贝在Plugins/Android下面。
如下图所示,我在根目录下创建一个文件夹名子叫91,当我自动化打包的时候自动把91文件夹下面的资源先拷贝在Plugins/Android下面,然后在自动打包。。 打完包以后再把Plugins/Andoird文件夹清空即可。。
Ok上脚本。。代码和上一篇文章的第一步差不多,我就不多余注释,,执行下面shell脚本将自动打开unity,然后执行ProjectBuild.BuidForAndroid方法。。 project-$1 就是传入的参数。。
123456789101112131415161718
#!/bin/sh&#参数判断&&if [ $# != 1 ];then&&&&&&echo "需要一个参数。 参数是游戏包的名子"&&&&&&exit&&&& fi&&&#UNITY程序的路径#UNITY_PATH=/Applications/Unity/Unity.app/Contents/MacOS/Unity&#游戏程序路径#PROJECT_PATH=/Users/MOMO/commond&#在Unity中构建apk#$UNITY_PATH -projectPath $PROJECT_PATH -executeMethod ProjectBuild.BuildForAndroid project-$1 -quit&echo "Apk生成完毕"
在关闭unity的情况下运行。在命令行里面执行这一条脚本, 参数一个参数 91。
123456789101112131415161718192021222324252627282930313233343536
using System.Collections;using System.IO;using UnityEditor;using UnityEngine;using System.Collections.Generic;using System;&class ProjectBuild : Editor{& //在这里找出你当前工程所有的场景文件,假设你只想把部分的scene文件打包 那么这里可以写你的条件判断 总之返回一个字符串数组。 static string[] GetBuildScenes() {
List&string& names = new List&string&();
foreach(EditorBuildSettingsScene e in EditorBuildSettings.scenes)
if(e==null)
if(e.enabled)
names.Add(e.path);
return names.ToArray(); }& static void BuildForAndroid() {
Function.DeleteFolder(Application.dataPath+"/Plugins/Android");&
if(Function.projectName == "91")
Function.CopyDirectory(Application.dataPath+"/91",Application.dataPath+"/Plugins/Android");
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "USE_SHARE");
string path = Application.dataPath +"/" + Function.projectName+".apk";
BuildPipeline.BuildPlayer(GetBuildScenes(), path, BuildTarget.Android, BuildOptions.None); }}
程序会执行BuildForAndroid的方法,这里我把shell传入的参数取出来。根据传入的不同参数来初始化打包的一些设置。。
最终BuildPlayr就开始构建apk,第二个参数就是打包出apk保存的路径。 在打包之前你可以处理一些 游戏包名, 游戏icon 等等一些平台之间的特殊性 ,也可以设置一些 预定义标签,。
12345678910111213141516171819202122232425262728
using UnityEngine;&#if UNITY_EDITORusing UnityEditor;using UnityEditor.Callbacks;using UnityEditor.XCodeEditor;using System.Xml;#endifusing System.IO;&public static class XCodePostProcess{&&&&#if UNITY_EDITOR&&&&[PostProcessBuild (100)]&&&&public static void OnPostProcessBuild (BuildTarget target, string pathToBuiltProject)&&&&{
if (target == BuildTarget.Android)
Function.DeleteFolder(Application.dataPath+"/Plugins/Android");
if(Function.projectName== "91") &&&&
{ &&&&&&&&&&&&
//当我们在打91包的时候 这里面做一些 操作。&
}&&&&}&&&&#endif}
在回到XUPortr里面,当Android打包完毕后,这里我们清空Plugins/Android文件夹。。或者你也可以做一些操作。。
Function.cs 用到的一个工具类
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
using UnityEngine;using System.Collections;using System.IO;public class Function&&{& //得到项目的名称 public static string projectName {
//在这里分析shell传入的参数, 还记得上面我们说的哪个 project-$1 这个参数吗?
//这里遍历所有参数,找到 project开头的参数, 然后把-符号 后面的字符串返回,
//这个字符串就是 91 了。。
foreach(string arg in System.Environment.GetCommandLineArgs()) {
if(arg.StartsWith("project"))
return arg.Split("-"[0])[1];
return "test";
} }& public static void DeleteFolder(string dir) {
foreach (string d in Directory.GetFileSystemEntries(dir))
if (File.Exists(d))
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d);
DirectoryInfo d1 = new DirectoryInfo(d);
if (d1.GetFiles().Length != 0)
DeleteFolder(d1.FullName);////递归删除子文件夹
Directory.Delete(d);
} }& public static void CopyDirectory(string sourcePath, string destinationPath) {
DirectoryInfo info = new DirectoryInfo(sourcePath);
Directory.CreateDirectory(destinationPath);
foreach (FileSystemInfo fsi in info.GetFileSystemInfos())
string destName = Path.Combine(destinationPath, fsi.Name);
if (fsi is System.IO.FileInfo)&&&&&&
File.Copy(fsi.FullName, destName);
else&&&&&&&&&&&&&&&&&&&&
Directory.CreateDirectory(destName);
CopyDirectory(fsi.FullName, destName);
如下图所示,脚本运行完毕,你打包的APK就静静的放在了这里,怎么样?简单吧?嘿嘿。。
注意事项:
1、因为你的工程可能比较大,如果IOS和Android同时打包的话切个平台都要半个多小时,我建议的svn在本地check out 两个工程,一个切在ios 一个切在Android
打包的时候分开打。
2.执行shell脚本的时候请关闭保存unity工程。
3.Android 因为不受证书的限制,我上传的工程建议你下载下来看看,肯定可以直接打出来包。。
4.我建议打包的机器使用mac。 因为windows不能打包IOS 而MAC可以同时 打包 IOS 和 Android
工程下载地址:
最后雨松MOMO祝大家学习愉快,哇咔咔。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!因安卓SDK更新导致Unity3D打包APK文件失败_打小就不乖_新浪博客
因安卓SDK更新导致Unity3D打包APK文件失败
unity版本为5.3.4f1,具体失败的unity3D结果提示:​​
CommandInvokationFailure: Failed to re-package resources. See
the Console for details.
E:\adt-bundle-windows-x86_64-\sdk\build-tools\24.0.0\aapt.exe
package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml
-S "res" -I
"E:/adt-bundle-windows-x86_64-/sdk\platforms\android-24\android.jar"
-F bin/resources.ap_
UnityEditor.Android.Command.Run
(System.Diagnostics.ProcessStartInfo psi,
UnityEditor.Android.WaitingForProcessToExit
waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessAndroidPlayer.Exec (System.String
command, System.String args, System.String workingdir,
System.String[] progress_strings, Single progress_value,
System.String errorMsg)
UnityEditor.Android.PostProcessAndroidPlayer.CompileResources
(System.String stagingArea, System.String packageName,
UnityEditor.Android.AndroidLibraries androidLibraries)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcessInternal
(System.String stagingAreaData, System.String stagingArea,
System.String playerPackage, System.String installPath,
System.String companyName, System.String productName, BuildOptions
options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess
(BuildTarget target, System.String stagingAreaData, System.String
stagingArea, System.String playerPackage, System.String
installPath, System.String companyName, System.String productName,
BuildOptions options, UnityEditor.RuntimeClassRegistry
usedClassRegistry)
UnityEditor.HostView:OnGUI()​
第二个:​
Error building Player: CommandInvokationFailure: Failed to
re-package resources. See the Console for details.
E:\adt-bundle-windows-x86_64-\sdk\build-tools\24.0.0\aapt.exe
package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml
-S "res" -I
"E:/adt-bundle-windows-x86_64-/sdk\platforms\android-24\android.jar"
-F bin/resources.ap_
解决方法如下:​​
因为更新的Android
SDK Build-tools& 24&
导致unity打包失败
找到SDK目录文件,E:\adt-bundle-windows-x86_64-\sdk\build-tools&
在该文件下有一个24.0.0的文件夹删除就可以了。​
鎵撳皬灏变笉涔
博客等级:
博客积分:0
博客访问:4,568
关注人气:0
荣誉徽章:

我要回帖

更多关于 保存文件打不开 的文章

 

随机推荐