添加XML
添加空的XML:
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:android="http://schemas.android.com/apk/res/android">
<trace enable="true"/><!--是否启用调试 -->
<!--初始化时需要执行的操作-->
<init></init>
<!--其他 -->
</root>
打如需输出日志,请使用如下节点:
<log text="log记录"/>
基本语法
定义变量
<setBool result="变量" value="值"/>
<setInt result="..." value="..."/>
<setString result="..." value="..."/>
<setElement result="..." value="..."/>
<setElement result="..." xml="..."/>
从配置文件中读取变量
<setBoolFromProperty result="..." ini="..." section="..." property="..." default="..."/>
<setIntFromProperty result="..." ini="..." section="..." property="..." default="..."/>
<setStringFromProperty result="..." ini="..." section="..." property="..." default="..."/>
读取变量的值
布尔变量:
$B(变量名)
整型变量:
$I(变量名)
字符串变量:
$S(变量名)
XML元素:
$E(变量名)
此外,还有一些预定义变量:
$S(Architecture):架构名称,包括armeabi-armv7a、arm64-v8a、x86、x86_64;
$S(PluginDir):XML文件的文件夹名称;
$S(EngineDir):引擎文件夹名称;
$S(BuildDir) :为每个平台构建文件夹名称,在Intermediate中;
$S(ProjectDir):项目文件夹名称;
变量运算
<setBoolNot result="..." source="..."/>
<setBoolAnd result="..." arg1="..." arg2="..."/>
<setBoolOr result="..." arg1="..." arg2="..."/>
<setBoolIsEqual result="..." arg1="..." arg2="..."/>
<setBoolIsLess result="..." arg1="..." arg2="..."/>
<setBoolIsLessEqual result="..." arg1="..." arg2="..."/>
<setBoolIsGreater result="..." arg1="..." arg2="..."/>
<setBoolIsGreaterEqual result="..." arg1="..." arg2="..."/>
<setIntAdd result="..." arg1="..." arg2="..."/>
<setIntSubtract result="..." arg1="..." arg2="..."/>
<setIntMultiply result="..." arg1="..." arg2="..."/>
<setIntDivide result="..." arg1="..." arg2="..."/>
<setStringAdd result="..." arg1="..." arg2="..."/>
<setStringSubstring result="..." source="..." start="..." length="..."/>
<setStringReplace result="..." source="..." find="..." with="..."/>
<setIntLength result="..." source="..."/>
<setIntFindString result="..." source="..." find="..."/>
<setBoolStartsWith result="..." source="..." find="..."/>
<setBoolEndsWith result="..." source="..." find="..."/>
<setBoolContains result="..." source="..." find="..."/>
变量替换
<replace find="..." with="..."/>
流程控制
<if condition="...">
<true>
<!-- executes if boolean variable in condition is true -->
</true>
<false>
<!-- executes if boolean variable in condition is false -->
</false>
</if>
<isArch arch="armeabi-armv7">
<!-- do stuff -->
</isArch>
<isDistribution>
<!-- do stuff -->
</isDistribution>
<return/>
<while condition="...">
<!-- do stuff -->
</while>
<break/>
<continue/>
Android相关
追加内容到Android Manifest文件:
<androidManifestUpdates>
<addPermission android:name="..."/>
<addFeature android:name="..."/>
<addLibrary android:name="..."/>
<addElement tag="..." name="..."/>
<removeElement tag="..."/>
<addElements tag="..."></addElements>
<addAttribute tag="..." name="..." value="..."/>
<removeAttribute tag="..." name="..."/>
<loopElements tag="..."></loopElements>
</androidManifestUpdates>
打包后,可在Intermediate/Android/APK/AndroidManifest.xml中看到您追加的内容。
追加混淆:
<proguardAdditions>
<insert>...</insert>
</proguardAdditions>
打包后,可在Intermediate/Android/APK/proguard-project.txt中看到您追加的混淆规则
GameActivity是我们可以干预的Activity,可以通过下列方法在Activity的生命周期中追加内容:
<gameActivityImportAdditions>
<insert>…</insert>
</gameActivityImportAdditions>
<gameActivityClassAdditions>
<insert>...</insert>
</gameActivityClassAdditions>
<gameActivityOnStartAdditions>
<insert>...</insert>
</gameActivityOnStartAdditions>
<gameActivityReadMetadataAdditions>
<insert>...</insert>
</gameActivityReadMetadataAdditions>
<gameActivityOnCreateAdditions>
<insert>...</insert>
</gameActivityOnCreateAdditions>
<gameActivityOnDestroyAdditions>
<insert>...</insert>
</gameActivityOnDestroyAdditions>
<gameActivityOnStopAdditions>
<insert>...</insert>
</gameActivityOnStopAdditions>
<gameActivityOnPauseAdditions>
<insert>...</insert>
</gameActivityOnPauseAdditions>
<gameActivityOnResumeAdditions>
<insert>...</insert>
</gameActivityOnResumeAdditions>
<gameActivityOnActivityResultAdditions>
<insert>...</insert>
</gameActivityOnActivityResultAdditions>
<soLoadLibrary>
<loadLibrary name="..." failmsg="..."/>
<insert>...</insert>
</soLoadLibrary>
打包后,进入Intermediate\Android\APK\src\com\epicgames\ue4\GameActivity.java文件,即可看到您追加的内容。
XML操作
<addElement tag="..." name="..."/>
<addElements tag="..."> body </addElements>
<removeElement tag="..."/>
<setStringFromTag result="..." tag="..." name="..."/>
<setStringFromAttribute result="..." tag="..." name="..."/>
<addAttribute tag="..." name="..." value="..."/>
<removeAttribute tag="..." name="..."/>
<loopElements tag="..."> instructions </loopElements>