mmf爱好者吧 关注:169贴子:1,737
  • 10回复贴,共1

[转自永远的玛丽吧]教大家把MMF2工程导出为安卓应用apk

只看楼主收藏回复

首先我们需要进行环境的配置。环境配置只需要进行一次
(不要信官网上说的必须装JDK1.6一类的,那消息早就过时了)
我们需要安装两样东西


第一样东西是JDK1.8(或者更新的版本,如果有)
到这里下载http://www.oracle.com/technetwork/java/javase/downloads/index.html
点Java Platform (JDK) 上面的Download进入下一个页面
在最上面一项,先点Accept License Agreement,然后找到Windows x86一项右面的地址,右键迅雷下载(不用迅雷的话会提示你注册帐号 很烦= =)
【就算你系统是64位的也一定要装x86版本的,别给我自作聪明的去安装x64】






第二样东西是Android SDK
【如果你在国内,请全程翻墙,别问我怎么翻】
首先打开这个页面http://developer.android.com/sdk/index.html
拉到【最底下】,找到SDK Tools Only,下载Windows installer 并安装



然后运行刚刚安装的程序
它会拉取可用的下载列表,并自动为你勾选很多项
且慢——我们【点Deselect All】全部取消勾选(否则有你下的。。。默认勾选的包括开发文档、虚拟机等等庞然大物)
只要勾选【括号里API数字最大的一项】里面的SDK Platform就行了

勾选后点右下角的Install Package(我忘圈出来了),然后点Accept License,然后点Install



等这个安装完成你的环境就配置好了


为什么超过100万的华人留学生都选择UAKA来充值微信,支付包,苹果手游呢? 新用户送10美金,限量100份!
2018-01-24 14:10 广告
接下来说明如何把具体工程导出为安卓应用。
在场景列表中点击游戏标题
在属性第一个选项卡里的Build Type里选择Android/OUYA Application


如果没有这个选项,说明你没有安装Android Exporter,我提供的MMF2.5下载地址中包含了一个Android Exporter.7z,把它下载下来解压到MMF2.5安装目录下即可。


然后我们切换到最后一个(小绿人)选项卡
这里我提一下有必要更改的位置,其余地方不用管
【首先是Package Name】,我们要把它改成自己的名字
这个名字是安卓系统用来区分不同的应用的,不是显示名称
包名形如"aaa.bbb.ccc"这样,包含三个部分,每部分之间用点分隔,一定要按格式填写否则会报错。
具体内容可以随便写,只要不和其他应用的重复就行。
【然后是Build API】,默认是14,我们【必须】把它修改为刚刚下载的版本(比如我下载的是API 22,就改成22)
下面的两个选项分别是允许最低的系统版本和推荐的系统版本
如果希望限制你的应用不能在低于某版本的安卓上运行,可以更改Minimum那项。

然后向下拉,找到Release Options
这里是设置应用签名的,我们平时制作时可以不用管它,取消勾选就行了,但是注意两点:
【如果不设置,apk生成一年后签名会失效,无法安装】
【如果不设置,不能提交到Google Play商店】
怎么设置别问我,我不会



然后是这里
Screen orientation默认是Portrait(竖屏),我们的游戏一般都是Landscape(横屏),所以别忘了改这个
Display是设置如何处理分辨率不同的
默认的是Fit Inside,这种模式会按比例拉伸到填满屏幕
其他的模式有:
Center:在中间显示一个小窗口
Adjust Window Size:调整应用的实际分辨率,就是把原本在屏幕外的东西显示进去
Fit inside and adjust window size:先按比例拉伸到填满屏幕,然后调整分辨率,比较完美的解决方案,唯一让我郁闷的是它不是居中显示而是靠左显示了
Fit outside:我还没试,大家可以试试(喂)
Stretch to fill:拉伸显示


Options menu是按下安卓的菜单键时显示的菜单
Launch Icon是应用的图标

Version info:应用版本,安装了应用的旧版本后只能覆盖安装更新或者相同的版本,不能安装更旧的版本
Permissions是应用用到的系统权限,得看具体情况选择

把该设置的都设置完成后就可以编译了
编译方法和以往一样,但会用掉很长时间(毕竟JAVA。。。)所以我建议大家在开发过程中还是编译成Win32程序在电脑上测试……
如果出现了如图所示的对话框,说明场景里出现了与安卓不兼容的事件。点击否可以查看详情。
(像我的只是有个隐藏鼠标指针,这种就可以放心点是来忽略,如果是重要的事件那就重写吧……)
编译完成后会得到一个apk文件,就可以装到手机上了

前面有两点忘说了
一是包名一旦决定了就不要更改了,如果更改的话不会覆盖安装以前的版本,就是说系统会认为它是两个不同的应用来分别安装
二是关于应用签名,不设置签名的话,如果你把相同的工程拿到另一台电脑上编译再安装,那么就会提示签名冲突无法安装……






在优酷找到了一个mmf2.5导出安卓。apk格式的教程视频,分享给大家……
视频来自:优酷


回复
举报|2楼2015-04-11 18:00
    这个视频是雪落忆海制作的吧,我感觉怎么这么像呢,以前他好像还录过天上掉馅饼的视频~~~~


    收起回复
    举报|3楼2015-04-11 18:27
      哦,感谢雪落忆海辛苦录制


      回复
      举报|4楼2015-04-11 18:41
        卤煮在吗? 我之前拿1.5demo做的文件 之后拷贝到其他电脑上 下载了2.5 demo 但是打不开文件 提示需要kcpict.mfx文件 怎么办?


        收起回复
        举报|6楼2015-11-04 21:23
          刚进吧,求问楼主的mmf的那个连接在哪里呀?


          收起回复
          举报|7楼2016-05-27 20:31
            Buildfile: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\build.xml


            -set-mode-check:


            -set-debug-files:


            -check-env:
            [checkenv] Android SDK Tools Revision 25.2.5
            [checkenv] Installed at D:\Users\JXX\AppData\Local\Android\sdk


            -setup:
            [echo] Project Name: RuntimeAndroid
            [gettype] Project Type: Application


            -set-debug-mode:


            -debug-obfuscation-check:


            -pre-build:


            -build-setup:
            [getbuildtools] Using latest Build Tools: 25.0.2
            [echo] Resolving Build Target for RuntimeAndroid...
            [gettarget] Project Target: Android 7.1.1
            [gettarget] API level: 25
            [echo] ----------
            [echo] Creating output directories if needed...
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin\res
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin\rsObj
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin\rsLibs
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\gen
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin\classes
            [mkdir] Created dir: C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin\dexedLibs
            [echo] ----------
            [echo] Resolving Dependencies for RuntimeAndroid...
            [dependency] Library dependencies:
            [dependency] No Libraries
            [dependency]
            [dependency] ------------------
            [echo] ----------
            [echo] Building Libraries with 'debug'...
            [subant] No sub-builds to iterate on


            -code-gen:
            [mergemanifest] Merging AndroidManifest files into one.
            [mergemanifest] Manifest merger disabled. Using project manifest only.
            [echo] Handling aidl files...
            [aidl] No AIDL files to compile.
            [echo] ----------
            [echo] Handling RenderScript files...
            [echo] ----------
            [echo] Handling Resources...
            [aapt] Generating resource IDs...
            [echo] ----------
            [echo] Handling BuildConfig class...
            [buildconfig] Generating BuildConfig class.


            -pre-compile:


            回复
            举报|9楼2017-02-20 15:09
              -compile:
              [javac] Compiling 380 source files to C:\Users\JXX\AppData\Local\Temp\And165D.tmp\bin\classes
              [javac] 警告: [options] 源值1.5已过时, 将在未来所有发行版中删除
              [javac] 警告: [options] 目标值1.5已过时, 将在未来所有发行版中删除
              [javac] 警告: [options] 要隐藏有关已过时选项的警告, 请使用 -Xlint:-options。
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:24: 错误: 程序包org.apache.http不存在
              [javac] import org.apache.http.HttpResponse;
              [javac] ^
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:25: 错误: 程序包org.apache.http不存在
              [javac] import org.apache.http.NameValuePair;
              [javac] ^
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:26: 错误: 程序包org.apache.http.client.entity不存在
              [javac] import org.apache.http.client.entity.UrlEncodedFormEntity;
              [javac] ^
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:27: 错误: 程序包org.apache.http.client.methods不存在
              [javac] import org.apache.http.client.methods.HttpPost;
              [javac] ^
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:28: 错误: 程序包org.apache.http.impl.client不存在
              [javac] import org.apache.http.impl.client.DefaultHttpClient;
              [javac] ^
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:30: 错误: 找不到符号
              [javac] import org.apache.http.params.HttpProtocolParams;
              [javac] ^
              [javac] 符号: 类 HttpProtocolParams
              [javac] 位置: 程序包 org.apache.http.params
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:63: 错误: 找不到符号
              [javac] ArrayList <NameValuePair> postData = new ArrayList <NameValuePair> ();
              [javac] ^
              [javac] 符号: 类 NameValuePair
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:63: 错误: 找不到符号
              [javac] ArrayList <NameValuePair> postData = new ArrayList <NameValuePair> ();
              [javac] ^
              [javac] 符号: 类 NameValuePair
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:65: 错误: 找不到符号
              [javac] postData.add(new NameValuePair()
              [javac] ^
              [javac] 符号: 类 NameValuePair
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:95: 错误: 找不到符号
              [javac] HttpPost post = new HttpPost ("http://bugs.clickteam.com/report.php");
              [javac] ^
              [javac] 符号: 类 HttpPost
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:95: 错误: 找不到符号
              [javac] HttpPost post = new HttpPost ("http://bugs.clickteam.com/report.php");
              [javac] ^
              [javac] 符号: 类 HttpPost
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:99: 错误: 找不到符号
              [javac] { post.setEntity (new UrlEncodedFormEntity (postData));
              [javac] ^
              [javac] 符号: 类 UrlEncodedFormEntity
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:105: 错误: 找不到符号
              [javac] DefaultHttpClient client = new DefaultHttpClient();
              [javac] ^
              [javac] 符号: 类 DefaultHttpClient
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:105: 错误: 找不到符号
              [javac] DefaultHttpClient client = new DefaultHttpClient();
              [javac] ^
              [javac] 符号: 类 DefaultHttpClient
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:108: 错误: 找不到符号
              [javac] HttpProtocolParams.setUseExpectContinue (params, false);
              [javac] ^
              [javac] 符号: 变量 HttpProtocolParams
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\CrashReporter.java:111: 错误: 找不到符号
              [javac] HttpResponse response;
              [javac] ^
              [javac] 符号: 类 HttpResponse
              [javac] 位置: 类 CrashReporter
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\MMFRuntime.java:1645: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
              [javac] Method m = c.getDeclaredMethod("disconnect", null);
              [javac] ^
              [javac] 对于 varargs 调用, 应使用 Class<?>
              [javac] 对于非 varargs 调用, 应使用 Class<?>[], 这样也可以抑制此警告
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\MMFRuntime.java:1646: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
              [javac] Object o = m.invoke(null, null);
              [javac] ^
              [javac] 对于 varargs 调用, 应使用 Object
              [javac] 对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\MMFRuntime.java:1660: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
              [javac] Method m = c.getDeclaredMethod("connect", null);
              [javac] ^
              [javac] 对于 varargs 调用, 应使用 Class<?>
              [javac] 对于非 varargs 调用, 应使用 Class<?>[], 这样也可以抑制此警告
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\MMFRuntime.java:1661: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
              [javac] Object o = m.invoke(null, null);
              [javac] ^
              [javac] 对于 varargs 调用, 应使用 Object
              [javac] 对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\MMFRuntime.java:1675: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
              [javac] Method m = c.getDeclaredMethod("isConnected", null);
              [javac] ^
              [javac] 对于 varargs 调用, 应使用 Class<?>
              [javac] 对于非 varargs 调用, 应使用 Class<?>[], 这样也可以抑制此警告
              [javac] C:\Users\JXX\AppData\Local\Temp\And165D.tmp\src\Runtime\MMFRuntime.java:1676: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
              [javac] Object o = m.invoke(null, null);
              [javac] ^
              [javac] 对于 varargs 调用, 应使用 Object
              [javac] 对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告
              [javac] 注: 某些输入文件使用或覆盖了已过时的 API。
              [javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
              [javac] 注: 某些输入文件使用了未经检查或不安全的操作。
              [javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
              [javac] 16 个错误
              [javac] 9 个警告


              BUILD FAILED
              D:\Users\JXX\AppData\Local\Android\sdk\tools\ant\build.xml:716: The following error occurred while executing this line:
              D:\Users\JXX\AppData\Local\Android\sdk\tools\ant\build.xml:730: Compile failed; see the compiler error output for details.


              Total time: 4 seconds


              回复
              举报|10楼2017-02-20 15:10
                大神能帮忙看看这是什么意思吗? 完全按照教程做的。。。只不过把JAVA和AndroidSDK都安装到D盘了。。。


                回复
                举报|11楼2017-02-20 15:11