Ad
1: 2016-07-21 (木) 11:05:04 njf ソース バックアップ No.1 を復元して編集 現: 2019-04-26 (金) 01:17:23 njf ソース 編集
Line 1: Line 1:
-作成中+*依存するライブラリを探す [#l19a4648] 
 + 
 +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作成で、サポートライブラリを取り込むときにエラーが出る場合の対処方法]]」を参照のこと。 
 + 
 +&font(Red){アップデートにより、ローカルにaarファイルが自動でダウンロードされなくなり、以下の方法は使えなくなりました。[[[[Android/Google Play Servicesなどのaarファイルをダウンロードする]]]]を参考にしてGoogleのサイトからダウンロードしてください。&br;}; 
 + 
 + 
 +&font(Red){-----ここから-----&br;}; 
 + 
 +これらのライブラリは、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は一つだけなので手でやっています。 
 + 
 +&font(Red){---ここまでは現在は使えない-----}; 
 + 
 +また、このとき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 
 + 
 +バージョン番号部分は適宜読み替えてください。 
 + 
 +*extension.xml [#p2c141cc] 
 + 
 +extension.xmlは[[こちら:http://njf.jp/cms/modules/xpwiki/?Android%E3%81%A7%E3%81%AEANE%E3%81%AE%E4%BD%9C%E6%88%90%2FANE%E3%81%AE%E4%BD%9C%E6%88%90#h6340912]]とほとんど同じです。 
 + 
 + <?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> 
 + 
 +*platform-android.xml [#mdea83c4] 
 + 
 +今回は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を作ります。 
 + 
 +*フォルダ構成とANEの作成コマンド [#cc5a69d7] 
 + 
 +まずフォルダ構成はandroidフォルダの下にjarファイルとswfファイル、swcとxmlファイルはその上の階層に置きます。 
 + 
 +&ref(admobAneFolder.jpg,mw:480,mh:360); 
 + 
 +このフォルダに移動して、以下のコマンドを実行します。 
 + 
 + adt -package -target ane andAdmob.ane extension.xml -swc aneAdmob.swc -platform Android-ARM  -platformoptions platform-android.xml -C android . 
 + 
 +これでANEが作成されるはずです。 
 + 
 +---- 
 +-[[AndroidでのAdmobのANEの作成]]に戻る 
 +-[[AndroidでのAdmobのANEの作成_swcの作成]]に戻る 
 +-[[AndroidでのAdmobのANEの作成_ANEを実際に使う]]に進む


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2768, today: 2, yesterday: 1
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF