美文网首页
虚幻插件语言

虚幻插件语言

作者: DoTo | 来源:发表于2020-05-17 13:22 被阅读0次

1. 文件拷贝

UPL提供了两个文件拷贝的节点,分别是:

<prebuildCopies></prebuildCopies>

<resourceCopies></resourceCopies>

<prebuildCopies>节点的执行时机是在ndk-build执行之前。而在ndk-build在执行的时候,会删除libs文件下的相关内容。这意味着,我们不能通过<prebuildCopies>节点来拷贝xxx.so库到libs文件下,而应该通过使用<resourceCopies>节点。

<resourceCopies>节点的执行时机是在ndk-build之后,在apk打包之前。

2. 判断CPU目标架构

UE4支持的目标架构包括但不限于:armeabi-v7a, arm64-v8a, x86, x86_64。
UPL使用以下节点来判断当前的目标架构:

<isArch arch="armeabi-v7a">
//如果当前目标架构为armeabi-v7a,就会执行这里面的代码
</isArch >

eg:

<isArch arch="armeabi-v7a">
<log text="current arch="armeabi-v7a">
</isArch >

3. Android相关节点

3.1 引用第三方的android的jar,aar库

参考OnlineSubsystemGoogle_UPL.xml中引用com.google.android.gms:play-services-auth:9.8.0:

<AARImports>
    <if condition="bEnabled">
        <true>
            <insertValue value="com.google.android.gms,play-services-auth,9.8.0" />
            <insertNewline/>
        </true>
    </if>
</AARImports>

首先,UPL是通过的<AARImports> section来引用第三方的jar,aar库。
然后,使用<insertValue value="" />来指定需要引用的第三方jar,aar库,具体的jar,aar库通过value来指定,其形式为:

"BaseName,Filename,Version"

BaseName,Filename,Version之间用逗号(,)分开。

最后,使用<insertNewline/>节点表示我们是新增。如果没有这个节点,<insertValue value="" />指定的jar,aar不会被添加到引用列表中去。

eg: 引用的google的权限库easypermissions

<AARImports>
    <insertValue value="pub.devrel,easypermissions,2.0.1" />
    <insertNewline/>
</AARImports>

注:<AARImports>节点被正确执行后,会在aar-imports.gradle中添加依赖的jar,aar.
比较麻烦的是,好像UPL没有提供可以删除依赖jar,aar的节点。

另一种方式是通过<buildGradleAdditions>节点,参考OnlineSubsystemFacebook_UPL.xml添加com.facebook.android:facebook-android-sdk:4.19.0的方式:

<buildGradleAdditions>
    <insert>
        dependencies {
          compile('com.facebook.android:facebook-android-sdk:4.19.0')
        }
    </insert>
</buildGradleAdditions>

3.2 添加混淆规则

UPL添加混淆规则的代码如下:

<proguardAdditions>
    <insert>
    <!--要添加的混淆规则-->
    </insert>
</proguardAdditions>

该节点只有在发布模式下才会被执行。

3.3 GameActivity相关的节点

3.3.1 添加GameActivity导入语句

UPL使用下面的两个节点在GameActivity.java中添加import语句:

<gameActivityImportAdditions> </gameActivityImportAdditions>
<gameActivityPostImportAdditions> </gameActivityPostImportAdditions>

以上两个节点用于在GameActivity.java中添加导入语句。注意,添加的导入语句需要内嵌在<insert>节点中,即:

<gameActivityImportAdditions> 
    <insert>
   <!--import语句-->
    </insert>
</gameActivityImportAdditions>

<gameActivityPostImportAdditions> 
    <insert>
     <!--import语句-->
    </insert>
</gameActivityPostImportAdditions>
添加GameActivity类定义

UPL使用下节点在GameActivity类中添加定义:

<gameActivityClassAdditions> </gameActivityOnClassAdditions>

该节点需要与<insert>节点配合使用才能插入代码,即:

<gameActivityClassAdditions> 
    <insert>
    <!--代码-->
    </insert>
</gameActivityOnClassAdditions>

4. Android Tips

  1. 修改/添加AndroidManifest.xml文件<application>元素的属性:
<androidManifestUpdates>
   <addAttribute tag="application" name="android:name" value="xxx.xxx.xxx.GameAplication"/>
</androidManifestUpdates>
  1. 在AndroidManifest.xml文件中<application>元素中添加一个子元素。如添加一个<meta-data>元素
<androidManifestUpdates>
    <setElement result="ElementName" value="meta-data"/>
    <addAttribute tag="$ElementName" name="android:name" value="meta-data-Name"/>
    <addAttribute tag="$ElementName" name="android:value" value="meta-data-Value"/>
    <addElement tag="application" name="ElementName" />
</androidManifestUpdates>

其执行结果为

<application>
    <meta-data android:name="meta-data-Name" android:value="meta-data-Value" />
</application>

相关文章

网友评论

      本文标题:虚幻插件语言

      本文链接:https://www.haomeiwen.com/subject/xxocohtx.html