Ad

依存するライブラリを探す anchor.png Edit

AdmobのANEを制作するのに一番やっかいなのが、依存するライブラリを探して取り込むところです。

以前Eclipseでの開発ではライブラリがプロジェクトとして配布され、一つにまとまっていたため、探す必要はなかったのですが、Android Studioからは複数のライブラリが自動で取り込まれるようになったため、どれが必要で、それがどこにあるかを探さねばなりません。

Admobで使われているライブラリは、これで間違いない、という保証はないのですが、 プロジェクトの中間ファイルや、他の人の制作したANEなどを見る限り以下のもののようです。

  • android-support-v4
  • play-services-ads-lite
  • play-services-ads
  • play-services-base
  • play-services-basement
  • play-services-tasks

あらゆる広告で動くのか、逆に余分に取り込みすぎていないのかは正直わからないのですが、とりあえず、これを取り込むと動きます。

サポートライブラリのバージョンについてはAir SDKの対応しているバージョンとあわせる必要があります。詳しくは「Android向けANE作成で、サポートライブラリを取り込むときにエラーが出る場合の対処方法」を参照のこと。

アップデートにより、ローカルにaarファイルが自動でダウンロードされなくなり、以下の方法は使えなくなりました。Android​/Google Play Servicesなどのaarファイルをダウンロードするを参考にしてGoogleのサイトからダウンロードしてください。

-----ここから-----

これらのライブラリは、Android SDKの中、support-v4は「sdk/extras/android/m2repository/com/android/support/support-v4」に、他は「sdk/extras/google/m2repository/com/google/android/gms/」 にあります。

必要なのはjarファイルなのですが、全てaarファイルになっているので一つずつ解凍して、中からjarファイルを取り出さなければなりません。また、取り出したjarファイルの名前は全てclasses.jarなので名前も変更しなければなりません。

とても面倒なので、私は以下のshellを作って自動化しています。

BASE_DIR="YOUR_SDK_ROOT/sdk/extras/google/m2repository/com/google/android/gms/"

DIRS="play-services-ads-lite play-services-ads play-services-base play-services-basement play-services-tasks"

 ANE_WORK_DIR="YOUR_ANE_WORK_DIR"

 JAR_FILES=""
 for d in $DIRS
 do

   AAR_FILE=`ls  $BASE_DIR$d/1*/*.aar | sort -nr |sed -n -e 1p`

   FILE_NAME=`basename $AAR_FILE`

   cp $AAR_FILE ./

   yes|unzip $FILE_NAME

   RES_DIR_NAME=`echo $FILE_NAME | sed -e 's/.aar/_res/'`


   JAR_FILE_NAME=`echo $FILE_NAME | sed -e 's/.aar/.jar/'`


   if [ -e classes.jar ] ; then
	mv classes.jar $ANE_WORK_DIR$JAR_FILE_NAME
   fi

   if [ -e res ] ; then
	mv res $RES_DIR_NAME
   fi

   JAR_FILES=$JAR_FILES" "$JAR_FILE_NAME
done

echo '---------------------------------------------------'

for n in $JAR_FILES
do
   echo '<packagedDependency>'$n'</packagedDependency>'
done

ver 10代から検索して最新の物を検索しています。ver 20が出たら、修正の必要があります。

android-support-v4は一つだけなので手でやっています。

---ここまでは現在は使えない-----

また、このときbasememtを展開して出てくるresフォルダ内のvalues/values.xmlの中の「google_play_services_version」は後で使うのでメモしておいてください。例えば、ver9.2.1なら

<integer name="google_play_services_version">9256000</integer>

となっています。

このようにして、以下のjarファイルをすべて用意してください。

  • android-support-v4.jar
  • play-services-ads-lite-9.2.1.jar
  • play-services-ads-9.2.1.jar
  • play-services-base-9.2.1.jar
  • play-services-basement-9.2.1.jar
  • play-services-tasks-9.2.1.jar

バージョン番号部分は適宜読み替えてください。

Page Top

extension.xml anchor.png Edit

extension.xmlはこちらとほとんど同じです。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<extension xmlns="http://ns.adobe.com/air/extension/22.0"> 
   <id>ANEAdmob</id> 
   <versionNumber>1.0.0</versionNumber> 
   <platforms> 
       <platform name="Android-ARM">
           <applicationDeployment>
               <nativeLibrary>classes.jar</nativeLibrary>
               <initializer>jp.njf.aneadmob.ANEAdmobFREExtension</initializer>
           </applicationDeployment> 
       </platform>
   </platforms> 
</extension>
Page Top

platform-android.xml anchor.png Edit

今回はandroidのライブラリの取り込み用のxmlファイルが一つ必要です。 内容は以下の通りです。

<platform xmlns="http://ns.adobe.com/air/extension/22.0"> 
	<packagedDependencies>
		<packagedDependency>android-support-v4.jar</packagedDependency>
		<packagedDependency>play-services-ads-lite-9.2.1.jar</packagedDependency>
		<packagedDependency>play-services-ads-9.2.1.jar</packagedDependency>
		<packagedDependency>play-services-base-9.2.1.jar</packagedDependency>
		<packagedDependency>play-services-basement-9.2.1.jar</packagedDependency>
		<packagedDependency>play-services-tasks-9.2.1.jar</packagedDependency>
	</packagedDependencies> 
</platform>

ファイル名はなんでも良いのですが、「platform-android.xml」としておきます。 名前空間のバージョン(ここでは「22.0」)はextension.xmlのものと同じでないといけないので注意してください。

通常なら、これに加えてaarの展開で出たリソースファイルも指定するのですが、admobの広告に関しては、使っているリソースが一つだけ、マニフェストファイルで使う「@integer/google_play_services_version」のみです。なので、リソースファイルを取り込まなくても、マニフェストファイルにすでにメモしてもらった「google_play_services_version」の数字(ここの例なら「9256000」)を書き込めば良いだけです。そうすれば、リソースファイルの取り込みは必要ありません。

しかし、全ての広告でリソースを使っていないのか、将来的にも使わないのかは正直分かりません。 気になるのでちゃんと取り込みたい、という人はこちらの「AndroidでのAdmobのANEの作成​/リソースを取り込む」を参照してください。

リソースの取り込みは経験的に問題が生じやすいので、ここでは取り込まない方針でANEを作ります。

Page Top

フォルダ構成とANEの作成コマンド anchor.png Edit

まずフォルダ構成はandroidフォルダの下にjarファイルとswfファイル、swcとxmlファイルはその上の階層に置きます。

admobAneFolder.jpg

このフォルダに移動して、以下のコマンドを実行します。

adt -package -target ane andAdmob.ane extension.xml -swc aneAdmob.swc -platform Android-ARM  -platformoptions platform-android.xml -C android . 

これでANEが作成されるはずです。



Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1403, today: 1, yesterday: 0
Princeps date: 2016-07-21 (Thu) 11:05:04
Last-modified: 2019-04-26 (Fri) 00:17:23 (JST) (175d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF