要为Android创建一个扩展,你必须分两部分进行。第一部分是添加扩展本身,以及所需的文件,第二部分是创建扩展所需的函数和宏/常量。
函数和常量是用占位符文件来添加的,所以你要添加一个占位符,然后按照上一节的解释定义函数和宏。要添加其余的文件,你需要首先在编辑器的Extra Platforms 部分勾选Android check-box,这将打开扩展的Android属性。
在这里,你可以提供以下细节:
任何输入到 "代码注入 "窗口的代码都需要被分成不同的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_ShouldInject 为 true 时在 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目录中。你可以在任何时候通过右键点击 扩展名,选择在资源管理器中打开,来打开这个位置。
关于你为Android创建本地扩展的信息,请参见示例代码。