Android 扩展

要为Android创建一个扩展,你必须分两部分进行。第一部分是添加扩展本身,以及所需的文件,第二部分是创建扩展所需的函数和宏/常量。

函数和常量是用占位符文件来添加的,所以你要添加一个占位符,然后按照上一节的解释定义函数和宏。要添加其余的文件,你需要首先在编辑器的Extra Platforms 部分勾选Android check-box,这将打开扩展的Android属性。

Android Editor

在这里,你可以提供以下细节:

代码注入

任何输入到 "代码注入 "窗口的代码都需要被分成不同的XML组,如上面的截图所示。你在组中使用的XML标签将决定代码被注入到你的应用程序的位置。

你可以使用以下语法来创建代码注入组。

<YYTagName>

// Code to inject

</YYTagName>

以下标签可用于安卓平台。

YYAndroidTopLevelGradle
YYAndroidTopLevelGradleBuildscript
YYAndroidTopLevelGradleBuildscriptRepositories
YYAndroidTopLevelGradleBuildscriptDependencies
YYAndroidTopLevelGradleAllprojects
YYAndroidTopLevelGradleAllprojectsRepositories
YYAndroidTopLevelGradleEnd

YYAndroidGradle
YYAndroidGradleEnd
YYAndroidGradleAndroid
YYAndroidGradleDependencies 
YYAndroidGradleProperties
YYAndroidManifestAttributes
YYAndroidManifestApplicationAttributes
YYAndroidManifestActivityAttributes
YYAndroidManifestActivityInject
YYAndroidManifestApplicationInject
YYAndroidStringValuesInjection
YYAndroidLayout
YYAndroidProguard
YYAndroidLogcat

注入代码的运行时位置取决于标记的类型:

标签类型注入路径
Top Level Gradle{RUNTIME}\android\runner\RootFiles\build.gradle
Module Level Gradle{RUNTIME}\android\runner\ProjectFiles\build.gradle
Android Manifest{RUNTIME}\android\runner\ProjectFiles\src\main\AndroidManifest.xml
Strings{RUNTIME}\android\runner\ProjectFiles\src\main\res\values\strings.xml
Layout{RUNTIME}\android\runner\ProjectFiles\src\main\res\layout\main.xml

注意 这些路径仅适用于VM;对于YYC,注入的代码将进入{RUNTIME}/yyc目录,其中的路径可能与VM的路径不同。

条件注入

您可以有条件地注入代码,具体取决于扩展选项之一的值。

在代码注入组中,使用 toInject,并在 condition 中使用所需选项:

<YYIosPlist>
 
<toInject condition='${YYEXTOPT_MyExtension_ShouldInject}'>
...
</toInject>
 
</YYIosPlist>

这将仅在选项 YYEXTOPT_MyExtension_ShouldInjecttrue 时在 toInject 标记之间注入代码。该选项应为 Boolean 类型。

您还可以通过在 match 属性中指定特定值来检查该值:

<YYIosPlist>
 
<toInject condition='${YYEXTOPT_MyExtension_ShouldInject}' match='FooBar'>
<string>This content is injected IF condition == match</string>
</toInject>
 
</YYIosPlist>

当选项 YYEXTOPT_MyExtension_ShouldInject 等于 "FooBar" 时,这将仅在 toInject 标记之间注入代码。这允许您匹配任何类型的值,因为当所有扩展选项值都作为字符串提供时,此检查将在编译时完成。

另请参阅:使用扩展选项

使用提示

文件注入

Within the text files added to your extension (see: Adding Files), you can inject code from the Code Injection window by mentioning a tag inside ${ }. For example, say you have a file with the following contents:

<?xml version="1.0" encoding="UTF-8"?>

${YYAndroidMyInjectionTag}

重要 您可以为此创建自己的标签。此类自定义标签必须以 YYAndroid 开头。

此处的 ${YYAndroidMyInjectionTag} 部分将替换为扩展的代码注入窗口中的 <YYAndroidMyInjectionTag> </YYAndroidMyInjectionTag>

自定义文件

您可以在扩展名的文件夹中创建一个名为 "ProjectFiles" 的文件夹 (与其 .yy 文件一起)。放置在此文件夹中的任何文件将在编译时移动到生成的 Android 项目的根目录,并且还可以如上所述地使用注入标记。

源文件

一旦你设置正确,你将需要添加你的扩展包工作所需的文件。要做到这一点,你需要点击底部的按钮,添加SDK添加源代码,然后浏览你想添加的文件。添加的文件将和你的扩展名一起存储在Android Source目录中。你可以在任何时候通过右键点击RMB Icon 扩展名,选择在资源管理器中打开,来打开这个位置。

关于你为Android创建本地扩展的信息,请参见示例代码