开源刺客引擎二开教程(三)

用Android Studio编译打开Android APK

1、首先我们需要准备一些工具和环境,安装Android Studio,为了和我的环境保持一致,建议安装4x以上版本,最新版本最优。

由于原始的刺客里面的Android Studio工程比较旧了,不建议在那个基础上进行开发了,当然你有一定的Android基础可以改造。

最新Android Studio空工程和全部准备好的工具包(下载地址在最底部)。空工程的意思是全套可编译环境,不包含游戏源码,源码你还是用你自己的。

包含Android Studio空工程,Android SDK NDK  JDK 如下图:


2、你的Android Studio工程结构应该是如下图这样的


打开这个目录Client\proj.android-studio\app\src\main\assets 你能看到游戏的资源目录,之前我们用Cocos Studio打包的资源在Resources目录内,我们可以手动将Resources内的文件拷贝到assets目录下。


3、对于一个项目来说,有了资源还有有源代码才能运行,源代码之前我们是用VS2017进行修改的,是C++的代码,源代码所在的目录是


这是我们游戏的客户端源代码,打包Android安装包,当然也要编译这些C++代码,在Android中,需要将这些代码编译成后缀为so的库文件,Android才能加载运行,如下图:


也就是说这些C++代码编译成功后就是这些so文件。

4、先看下编译引用目录的问题,Android想要编译这些文件全部依赖于工程中的一个编译文件,就是Android.mk,这个文件里面包含了要编译的文件的位置,你要根据你的文件放置的位置进行修改。


需要找到这些C++文件才知道要编译哪些文件,你可以按照我的结构进行放置,这样就不用修改编译文件了。


上图这4个文件是打包必须的,一个都不能少。

5、NDK配置,以及其他环境变量

先做一个一键配置环境变量的脚本,这样方便。

新建一个txt文件,复制内容后,修改后缀为bat。记得路径改成你自己的。

包含的环境有jdk1.7,ndk-r10d,android sdk  cocos

@echo off
setx /M JAVA_HOME E:\project\tools\jdk1.7
setx /M CLASSPATH %JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
setx /M NDK_ROOT E:\project\tools\android-ndk-r10d
setx /M ANDROID_SDK_ROOT E:\project\tools\sdk
setx /M ANT_ROOT E:\project\tools\ant1.9.2
setx /M NDK_MODULE_PATH E:\project\ymcq\Client\cocos2d\cocos
set path_=%Path%
setx /M "Path" "%path_%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%ANDROID_SDK_ROOT%\sdk\platform-tools;%ANDROID_SDK_ROOT%\sdk\tools;%ANT_ROOT%\bin"
pause

你可以像我这样,红箭头的是这个游戏需要的。


电脑上的环境变量配置好后,Android Studio的也检查一下,找到local.properties文件。


6、一些都准备好了,就开始编译吧,点击Android Studio 底部的终端Terminal,进入到工程的jni目录。


输入ndk-build -j4  回车, 开始编译,其中-j4 表示我电脑是4核,如果你电脑是8核,你就用-j8 这样编译速度后大幅提升。

清楚缓存命令 ndk-build clean


6、如果代码没问题,编译完成后,你就能看到新编译的so文件了,之后运行和打包,你可以直接用数据线连接电脑,手机打开开发者模式,可以直接运行到手机


客户端源码编译时如果错误:Class/tools/CharsetConvert
修改代码:增加const
size_t ret = iconv(cd, (const char**)&tmpin, inlen, &tmpout, outlen);

你也可以打包成apk文件安装,打包后的安装文件位置:proj.android-studio\app\build\outputs\apk\release

   

7、额外多说一点,签名文件,版本修改,在build.gradle里可以修改app的版本号,如果要更换签名文件到工程中找到key.properties


8、程序的入口是AppActivity,下面是我修改过的纯净的源码

package org.cocos2dx.cpp;
 
import org.cocos2dx.lib.Cocos2dxActivity;
import org.fmod.FMOD;
 
import android.os.Bundle;
import android.view.WindowManager;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.KeyEvent;
 
public class AppActivity extends Cocos2dxActivity {
 
    static {
        //用于程序开始运行时导入fmod.jar
        System.loadLibrary("fmodL");
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //启动FMOD功能
        FMOD.init(this);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //关闭FMOD功能
        FMOD.close();
    }
 
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exitGame();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
 
    public void exitGame() {
        new AlertDialog.Builder(this)
                .setTitle("提示")
                .setMessage("确定要退出游戏吗?")
                .setNegativeButton("取消",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                                int which) {
                            }
                        })
                .setPositiveButton("确定",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                                int whichButton) {
                                finish();
                            }
                        })
                .show();
    }
}


本站内容来源于作者发布和网络转载,如有版权相关问题请及时与我们取得联系,我们将立即删除。

 关于作者
 热门教程
蓝月传奇BT版本全套资源解密算法
蓝月传奇BT版本全套资源解密算法,由于游戏APK中的角色怪我地图等资源进行了打包加密,我们有的时候想进行一些修改,那么
2023-08-15
剑道仙尊
109
能用于cocos2d-x NDK的wstring和string的转换代码
std::string WString2String(const std::wstring& wstr){
2022-12-19
剑道仙尊
115
《传奇世界》手游修改教程之怪物掉落设置
下面讲解如何修改传世世界手游中的物品掉落,再原始的版本中,掉落的设置无法满足玩家的喜欢,我们需要自己修改,有简单的
2022-07-06
剑道仙尊
318
《传奇世界》手游修改教程之道士BB召唤
道士控制自己技能召唤的宝宝,服务端/data/sbin/resource/script/system/skill
2022-07-06
剑道仙尊
219
《传奇世界》手游修改教程之攻沙时间修改
客户端和服务端ShaWarDB,关键的字段是时间逗号后面那个数字: --攻沙时间设置 改为3天后 local It
2022-07-06
剑道仙尊
158
《传奇世界》手游修改教程之Luac4加密
Lua是游戏的脚本一般不会直接打包到app里,要先加密为luac4,在传奇世界手游里android可以支持luac
2022-07-06
剑道仙尊
455
《一梦传世》元神版本纯源码手工编译教程
《一梦传世》 元神 版本纯源码手工编译 全部文件包含服务端与客户端(其中包含AndroidStudio工程,E
2022-07-06
剑道仙尊
678
白鹭冰雪源码编译服务端VIP教程
2022-07-02
剑道仙尊
371
白鹭冰雪源码编译客户端VIP教程
2022-07-02
剑道仙尊
263
刺客传奇引擎架设教程
荐服务端系统环境 Win Server 2008 64位 一、将服务端拷贝到服务器,解压YmcqServer.zip。
2022-06-07
剑道仙尊
257