以前のリリースでは、Android ネイティブ拡張のネイティブの Android リソースにアクセスするには、
getResourceID()
API を使用する必要がありました。R.* メカニズムを ANE とともに使用することはできませんでした。AIR 4.0 以降では、R.* メカニズムを使用してリソースにアクセスできます。R.* メカニズムを使用する場合は、プラットフォーム記述ファイル(platform.xml)を使用してください。このファイルには、すべての依存関係が定義されています。
<?xml version="1.0"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://ns.adobe.com/air/extension/4.0"
xmlns="http://ns.adobe.com/air/extension/4.0"
elementFormDefault="qualified">
<xs:element name="platform">
<xs:complexType>
<xs:all>
<xs:element name="description" type="LocalizableType" minOccurs="0"/>
<xs:element name="copyright" type="xs:string" minOccurs="0"/>
<xs:element name="packagedDependencies" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="packagedDependency" type="name" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="packagedResources" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="packagedResource" minOccurs="0" maxOccurs="unbounded"/>
<xs:complexType>
<xs:all>
<xs:element name="packageName" type="name" minOccurs="0"/>
<xs:element name="folderName" type="name" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:all>
</xs:element>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:simpleType name="name">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9\-\.]{1,255}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="LocalizableType" mixed="true">
<xs:sequence>
<xs:element name="text" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="lang" type="xs:language" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
platform.xml
内に定義された依存関係の例を次に示します。
<packagedDependencies>
<packagedDependency>android-support-v4.jar</packagedDependency>
<packagedDependency>google-play-services.jar</packagedDependency>
</packagedDependencies>
<packagedResources>
<packagedResource>
<packageName>com.myane.sampleasextension</packageName>
<folderName>ane-res</folderName>
</packagedResource>
<packagedResource>
<packageName>com.google.android.gms</packageName>
<folderName>google-play-services-res</folderName>
</packagedResource>
</packagedResources>
次に、各指定項目について説明します。
-
packagedDependencies
は、ANE が依存するすべての jar の名前を指定するために使用します。
-
packagedResources
は、ANE またはその他の jar ファイルが使用するリソースを定義します。
-
folderName
は、リソースフォルダーの名前を定義します。
-
packageName
は、リソースを使用する jar のパッケージ名を定義します。
-
packagedDependencies
と
packagedResources
は拡張の名前空間 4.0 以降から使用できます。
Android-ARM フォルダーには、ANE jar ファイルとリソースおよびサードパーティの jarファイルがすべて格納されます。サンプルの ANE パッケージ化コマンドを次に示します。
bin/adt -package -target ane sample.ane extension.xml -swc sampleane.swc -platform Android-ARM -platformoptions platform.xml -C Android-ARM .
R.* リソースアクセスメカニズムを使用する場合、サードパーティの jar ファイルとリソースを ANE jar とリソースに結合する必要はありません。ADT は jar とリソースを内部で結合します。すべての依存関係とリソースは引き続き ANE にパッケージ化する必要があります。
次の点に注意してください。
-
ANE プロジェクトは、使用する R.* リソースアクセスメカニズム用のライブラリプロジェクトである必要があります。
-
リソースフォルダーの名前に制限はありません。「res」またはその他の任意の有効な文字列で始まる名前を使用できます。
-
ANE のパッケージ化で
-platformoptions
スイッチを使用しない場合は、
getResourceId()
メカニズムを使用してリソースにアクセスする必要があります。