美文网首页
虚幻插件语言

虚幻插件语言

作者: 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