精华内容
下载资源
问答
  • unity 内部更新Apk 自动安装 支持安卓8.0 以上 demo.apk 测试包
  • unity remote 5(*.apk)

    2017-12-24 13:25:09
    unity remote 5 android apk unity remote android手机调试unity
  • Unity自动打包Apk

    千次阅读 2018-02-06 18:17:19
    Unity自动打包Apk unity打包apk相对来说比较容易,相信出过的人都明白,出包过程,没有大的难度,一步一操作,一步一等待,繁琐耗时,不懂的人又代替不了。这时候需求就来了,如何简单的一键打包搞定,这个就稍微...

    Unity自动打包Apk
    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);//解析参数
    
                PlayerSettings.companyName = "****";
                PlayerSettings.bundleVersion = settings[OPT_BUNDLE_VERSION];
                PlayerSettings.shortBundleVersion = settings[OPT_SHOW_VERSION];
                PlayerSettings.defaultInterfaceOrientation = UIOrientation.AutoRotation;
                PlayerSettings.allowedAutorotateToLandscapeLeft = true;
                PlayerSettings.allowedAutorotateToLandscapeRight = true;
                PlayerSettings.strippingLevel = StrippingLevel.StripByteCode;
                PlayerSettings.aotOptions = "nimt-trampolines=512,ntrampolines=2048";
                PlayerSettings.targetGlesGraphics = TargetGlesGraphics.Automatic;
                PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.Auto;
                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 = true;//是否使用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.bundleVersionCode;
                       string bundlePackageName = PlayerSettings.bundleIdentifier;
                       Directory.Move(fileName, pathToBuiltProject + "/main." + bundleVersion + "." + bundlePackageName + ".obb");
                   }
               }
        }
    }

    obb的使用上的还有一点小小的坑,Google play商店在下载游戏的时候,会自动下载apk所需的obb,但是有时候也不能保证一定成功,所以需要项目本身就具有这样的检测下载功能https://www.assetstore.unity3d.com/en/#!/content/3189这里有非常详细的代码,可以copy直接使用

    二、配置渠道等第三方SDK和copy外部资源

    1、sdk的接入
    统一接口,支持不同各种渠道的sdk接入
    http://blog.csdn.net/chenjie19891104/article/details/42217281这个可以看一下
    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.Android;
                string[] outScenes = GetBuildScenes();//需要打包的scene名字数组
                BuildPipeline.BuildPlayer(outScenes , android_project_path, target, BuildOptions.AcceptExternalModificationsToPlayer);
     }
     // BuildOptions.AcceptExternalModificationsToPlayer  表示出成Android工程
    // 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结合使用,会更方便操作

    展开全文
  • unity4可以正常生成apk,5不可以 是应为生成的android的jar有问题,生成androidjar需要在ec上生成,只选择src和res 这样就可以正常生成apk,用as生成的jar在5上不可以是因为as生成的jar或自动生成R的路径,照成5上...
     unity4可以正常生成apk,5不可以  是应为生成的android的jar有问题,生成androidjar需要在ec上生成,只选择src和res  这样就可以正常生成apk,用as生成的jar在5上不可以是因为as生成的jar或自动生成R的路径,照成5上编译不通过,显示 warning: Ignoring InnerClasses attribute for an anonymous inner class
    (org.xxx.xxx.xxx$1) that doesn't come with an
    associated EnclosingMethod attribute. This class was probably produced by a
    compiler that did not target the modern .class file format. The recommended
    solution is to recompile the class from source, using an up-to-date compiler
    and without specifying any "-target" type options. The consequence of ignoring
    this warning is that reflective operations on this class will incorrectly
    indicate that it is *not* an inner class.


    所以解决方法,用ec生成jar 不要用as去生成jar,ec生成jar值选 src和res 别的都不要,这样的jar就可以通过编译了 ,而且apk不会有问题可以正常运行 
    展开全文
  • Unity发布Android APK去掉Unity启动Logo教程 我们要解决的问题: 黑屏时间问题和启动Logo问题,之所以黑屏是因为Activity启动后mUnityPlayer 中的内容还没有准备好,断在我们游戏设置的启动页前面的黑屏状态是IOS或...

    Unity发布Android APK去掉Unity启动Logo教程

    • 我们要解决的问题

    • 黑屏时间问题和启动Logo问题,之所以黑屏是因为Activity启动后mUnityPlayer
      中的内容还没有准备好,断在我们游戏设置的启动页前面的黑屏状态是IOS或安卓的原生启动页。机型 越差,黑屏时间越长

    • 解决方法:

    • 先打开Android Studio–新建项目–写代码—打aar包—放到Unity工程里面调用----生成APK测试。

      Android项目
      在这里插入图片描述

    完整项目教程—Unity发布Android APK去掉Unity启动Logo教程

    展开全文
  • Unity中安装APK

    2021-01-21 15:04:16
    这是一个Unity源码,在Unity中安装APK应用
  • <p>I am having issues while making build for Android platform in Unity. The exceptions say this: <p>Assets/Parse/Parse/Internal/PlatformHooks/Unity/PlatformHooks.Unity.cs(1059,27): error CS0234: The ...
  • unity开发工具制作app 安装到平板上加入授权 一个apk只能安装一次 放入其他平板安装使用不了 需要授权
  • Jenkins 打包Unity APK

    千次阅读 2017-12-21 20:11:51
    Jenkins 打包Unity APK新建一个Unity 工程,添加编辑器打包脚本编辑器脚本 APKBuild.cs 编辑状态下调用 APKBuild中 Build 方法,执行打包, 测试成功开始编写 批处理脚本 Unity.bat 通过批处理脚本调用 APKBuild中...

    Jenkins 打包Unity APK

    新建一个Unity 工程,添加编辑器打包脚本

    编辑器脚本 APKBuild.cs
    编辑状态下调用 APKBuild中 Build 方法,执行打包,
    测试成功开始编写 批处理脚本 Unity.bat 通过批处理脚本调用 APKBuild中 Build 方法 执行打包
    执行批处理打包成功开始在Jenkins新建项目

    APKBuild.cs 代码如下

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    
    
    public class APKBuild : Editor
    {
    
        [MenuItem("Tool/APKBuild")]
        public static void Build()
        {
            BuildTarget buildTarget = BuildTarget.Android;
            // 切换到 Android 平台
            EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
    
            // keystore 路径, G:\keystore\one.keystore
            PlayerSettings.Android.keystoreName = "G:\\keystore\\one.keystore";
            // one.keystore 密码
            PlayerSettings.Android.keystorePass = "123456";
    
            // one.keystore 别名
            PlayerSettings.Android.keyaliasName = "bieming1";
            // 别名密码
            PlayerSettings.Android.keyaliasPass = "123456";
    
            List<string> levels = new List<string>();
            foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
            {
                if (!scene.enabled) continue;
                // 获取有效的 Scene
                levels.Add(scene.path);
            }
    
            // 打包出 APK 名
            string apkName = string.Format("./{0}.apk", "Test");
            // 执行打包
            string res = BuildPipeline.BuildPlayer(levels.ToArray(), apkName, buildTarget, BuildOptions.None);
    
            AssetDatabase.Refresh();
        }
    }
    

    在编辑器下可以调用 Build() 方法执行打包 APK

    新建批处理脚本 Unity.bat

    H:\Unity\Unity\Editor\Unity.exe -projectPath G:\MyProject\AndroidSDKUnityDemo\AndroidSDKDemo -quit -batchmode -executeMethod APKBuild.Build -logFile build.log

    参数介绍

    H:\Unity\Unity\Editor\Unity.exe 为Unity 安装执行文件
    
    -projectPath 执行Unity游戏工程
    
    G:\MyProject\AndroidSDKUnityDemo\AndroidSDKDemo 为Unity 工程目录 Assets 上一层目录
    
    -quit 表示执行结束自动退出
    
    -executeMethod 表示执行 编辑器方法
    
    APKBuild.Build  APKBuild 为编辑器脚本 APKBuild.cs , 中APKBuild.cs Build 函数名

    最终 Unity.bat 脚本

    @echo off  
    
    echo 正在生成APK文件...  
    
    REM H:\Unity\Unity\Editor\Unity.exe -projectPath G:\MyProject\AndroidSDKUnityDemo\AndroidSDKDemo -quit -batchmode -executeMethod APKBuild.Build -logFile build.log
    
    %1 -projectPath %2 -quit -batchmode -executeMethod APKBuild.Build -logFile build.log
    
    echo APK文件生成完毕!  
    pause 

    上面 %1 %2 我通过在执行批处理脚本的时候将参数传递进来

    将 Unity.bat 放在 Unity 项目根目录(和 Assets 同级)
    这里写图片描述

    将Unity 工程上传到 SVN服务器

    开始Jenkins
    新建一个新工程
    这里写图片描述

    这里写图片描述

    下一步弹出配置界面
    这里写图片描述

    源码管理

    中选择 SubVersion 配置SVN 路径和用户名密码
    这里写图片描述

    点击 Add 添加一个用户名和密码
    这里写图片描述

    Check -out Strategy 中配置每次构建时执行的 SVN update命令(每次构建时会将SVN 中最新的项目更新到 Jenkins 的工作空间WORKSPACE)

    如我本地的Jenkins 工作空间位置,Jenkins新建的项目都会放在 workspace 下

    C:\Users\Dev\.jenkins\workspace\

    构建中选择 Windows 批处理,
    这里写图片描述
    第一行打印一个 HelloWorld
    第二行执行 Unity.bat 后边两个参数 分别传递给批处理中 %1,%2

    %WORKSPACE% 是Jenkins 中可用的环境变量,表示该项目在Jnekins 中的目录位置
    本项目在Jenkins 为 TestDemo则 %WORKSPACE% 在我本地为 C:\Users\Dev\.jenkins\workspace\TestDemo

    配置完成保存,执行构建(构建时要将 Unity 关掉)
    这里写图片描述

    可以查看日志
    这里写图片描述

    等待构建
    构建完成后打开工作空间,发现目录下生成一个 Test.apk 表示 APK 生成成功
    这里写图片描述

    下面来看下我的 Unity 工程和 Jenkins 工程的关系

    Unity Demo工程目录如下
    这里写图片描述

    Unity Demo工程上传到 SVN 服务器

    在 Jenkins 中新建TestDemo项目,在 TestDemo配置中 添加 Demo工程上传的 SVN 服务器路径

    Jenkins 在构建构建时会从 SVN 服务器将 Demo 工程 CheckOut 到 Jenkins 的工作空间中 TestDemo 项目下
    这里写图片描述

    打开 TestDmeo 文件夹,我已经执行过构建了, Jenkins 已经从 SVN 上更新了最新的项目到 工作空间中
    这里写图片描述

    然后我在执行 Unity.bat 时,将 %WORKSPACE% 在我本地为(C:\Users\Dev.jenkins\workspace\TestDemo)传递了进去,即执行的 打包工程是Jenkins 工作空间的这个工程

    每次修改Unity Demo 工程,将修改提交到 SVN,然后再执行 Jenkins 构建

    展开全文
  • 关于安卓(apk)unity3d游戏汉化简单做一些全面分析-附件资源
  • Unity导出APK报错

    2021-01-21 13:41:16
    CommandInvokationFailure: Failed to build apk.Unity导出APK报错 原因1.jdk版本太高,一般使用角度看1.8 原因2.密匙出错 报错: CommandInvokationFailure: Failed to build apk. C:/Program Files/Java/jdk1.8.0_...
  • Unity Android APK Remote5

    2019-01-29 11:12:27
    Unity Android APK 最新 Remote5 免打包成apk的麻烦直接在电脑端看调试结果
  • Unity+讯飞apk

    2016-08-19 16:55:20
    讯飞语音结合Unity开发的简单实例,之前上传过工程,这次上传apk,可以先试试
  • 首先,找到unity中安卓SDK的路径,在SDK中打开E:\AndroidSDK\build-tools\29.0.2路径,在这个文件夹中的空白处单击shift+鼠标右键,选择打开Powershell窗口 然后在窗口中可以看到类似这样的路径 在路径后面...
  • Unity 里调用apk

    2021-04-08 15:19:31
    Unity 里调用apk //传入一个包名 private void openPackage(string packageName) { using (AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { AndroidJavaObject ...
  • 反编译apk获取unity资源流程分享

    千次阅读 2019-10-22 11:12:47
    看到其他做的很好的游戏,看到很好的图或者模型,想破解里面的资源拿来自己用,如果没加密的话就可以破解出来(如轩辕传奇的apk就没加密,从里面能搞出很多好看的图片和模型) 想学习研究别人的游戏是怎样处...
  • Unity 导出apk

    千次阅读 2019-01-22 16:49:01
    1.保存你的Scenes ... ... 4....(应该有自带安卓SDK吧我也记不到了,如果行不通的话自己去百度怎么配置android SDK,还挺...选定导出的目录并给apk命名后点击保存,等待1分钟左右就可以看到导出的apk文件啦~   
  • Unity自动打包 apk

    2018-12-10 10:45:42
     Unity打包 apk,会把Unity安装目录下的默认 AndroidManifest.Xml 文件覆盖到apk中去,同时还会拷贝该文件所在目录下的其它默认设置文件,如 res 和 assets 文件夹。  AndroidManifest.Xml 主要是用来设置一些...
  • unity打包APK报错

    2020-04-23 15:09:31
    UnityAPK,总是弹出下面的提示框 可是在Android studio中我已经把SDK更新了, 不管了,统统点了Use Hightest Installed按钮,结果打包报错了 网上搜了一堆办法都不行,无意中看到了SDK的路径,unity里写的是SDK的...
  • Unity打包apk报错

    2018-04-19 10:59:41
    【1】打包apk出错 CommandInvokationFailure: Failed to build apk. D:/Java/jdk-9.0.4\bin\java.exe -Xmx2048M ...开发环境:Unity5.4.2f2 jdk9.0.4 解决方案:更改jdk版本为jdk-8u172-windows-x64 ...
  • unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk),总的流程分为以下6个步骤: 1、安装java_jdk 2、配置java环境变量 3、更新android的sdk 4、从Unity3d中发布出apk文件 5、创建android虚拟机...
  • 这里有两种方式,一种是修改apk包后缀为zip然后解压,不过这样似乎会让xml文件呈现乱码显示,如果希望看到xml文件的就不建议这样了,但是如果只想提取资源的话应该不会受到影响。另一种是使用apk反编译工具。这种...
  • 反编译 Unity发布Apk

    千次阅读 2017-09-26 11:42:53
    转自:http://www.cnblogs.com/U-tansuo/p/unity3d_apk_decompilation.html 郑重声明:本教程仅用于学习使用,从事任何商业用途非法行为与作者无关,请知晓! 本文目的:通过教会大家如何破解别人游戏的同时,也...
  • Unity 发布APK报错

    2020-05-07 19:59:44
    问题1: Build Gradle错误 CommandInvokationFailure: Gradle build ...D:/JAVASDK/jdk1.8.0_251\bin\java.exe -classpath "F:\Unity2018\install\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\l...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,014
精华内容 805
关键字:

apkunity