差分

ナビゲーションに移動 検索に移動

Xamarin.MacでNLogを使う

68 バイト除去, 2019年5月22日 (水) 05:13
Administrator がページ「Xamarin.Mac/NLogを使う」を「Xamarin.MacでNLogを使う」に移動しました
'''apkファイル'''('''a'''ndroid application '''p'''ac'''k'''age file, apk)とは、[[GoogleXamarin.Mac]]が提供するでも[[Android OSNLog]]向けの[[アプリケーション]]および[[ミドルウェア]]の配布に用いる[[インストーラー]]形式の[[ファイル]]のことである。を使えると捗る。
拡張子は「'''==実装1==[[Xamarin.apk'''」であり、MIMEタイプは「application/vnd.android.package-archive」となっている。Mac]]でも[[NLog]]はなんら問題なく使用できる。[[NuGet]]から一発[[インストール]]である。試してはいないが[[MonoMac]]でも同じだと思う。
apkファイルはただし[[Javaファイル]]で広く用いられるに出力する場合に注意が必要で、[[jarファイルMac OS X]]の亜種で、ではあらゆる[[プログラムファイル]](.dexファイル)、各種[[リソーアプリ]]ス、[[証明書]]、およびマニフェストファイルなどを内部に保持している。jarファイルの亜種であり、jarファイルと同様に拡張子そこ違えど実態は[[zipファイル]]である。の外部に保存する必要があるため、NLog.configファイルの設定例でよく見かける「basedir変数」以下に書き込む設定は使えない。
== 内容物 =ファイルに出力するNLog.configの設定例===apkファイルの中身は、通常以下のような[[ディレクトリ構造]]となっている。あくまで例であり、もう少し多い場合もある。* META-INFディレクトリ:** MANIFEST.MF: [[マニフェストファイル]]。[[jarファイル]]から継承したもので[[ファイル]]の説明が記述されている。後述するAndroidManifest.xmlとは別物である。** CERT.RSA: [[アプリケーション]]の[[証明書]]。** CERT.SF: 各種そこで以下の例では[[リソースMac OS X]]の保存場所とその[[SHA-1]]ダイジェストの一覧*: 例:<pre> Signature-Version: 1.0 Created-By: 1.0 (Android) SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE= ... Name: resでは定番の「~/layoutLibrary/exchange_component_back_bottom.xml SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w= ... Name: res/drawable-hdpi/icon.png SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=<Logs/pre>* res: 各種[[リソース]]を格納する[[ディレクトリ]]([[アプリ]]が使う画像ファイルや音声ファイルなど)* AndroidManifest.xml: [[Android]]の[[マニフェストファイル]]。[[アプリケーション]]の名称やバージョン、使用するアクセス権限などが書かれている[[XML]]形式のファイルである。* classes.dex: dexファイル形式のプログラム([[Dalvik仮想マシン]]用の[[中間コード]]である)。* resources.arsc: [[リソース]]のうち、各国語対応のための文字列リソースなど、個別ファイルにする必要のないものが[[xml]]形式で格納されている。」以下に出力してみた。
なお、apkファイル内には[[<source lang="xml]]形式のファイルが頻出するが、それらは基本的に[[難読化]]されており、人間が読めるようなものではない。そのようなapkファイルを人間が読める形にしてくれる「[[apktool]]」という[[オープンソース]]で開発が行われているツールがある"><ref?xml version="1.0" encoding="utf-8" ?><nlog xmlns="http://codewww.nlog-project.googleorg/schemas/NLog.comxsd" xmlns:xsi="http://pwww.w3.org/android2001/XMLSchema-apktoolinstance" xsi:schemaLocation="http://<www.nlog-project.org/schemas/refNLog.xsd NLog.xsd" autoReload="true" throwExceptions="false" internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
<variable name="appname" value= 関連項目 ==* [[Android]]* [[Mono for Android]]"monobook"/>
<targets> <target xsi:type="File" name= 参考文献 "logfile" fileName="${specialfolder:folder=MyDocuments}/Library/Logs/${appname}/${shortdate}.log"<references layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="Console" name= 外部リンク "console" />  </targets>  <rules> <logger name="*" minlevel="Trace" writeTo="logfile" /> <logger name="*" minlevel="Info" writeTo="console" /> </rules></nlog></source>NLogに設定するパスは[[絶対パス]]なので、ホームディレクトリのパスの取得は「[[MonoMac/特殊ディレクトリのパスを取得する]]」を用いてMyDocumentsを指定することで取得した。 また、NLog.config中でアプリ名を動的に取得する方法がわからなかったので、この例では自前でappname変数を用意している。 ===備考===NLog.configは初期状態でビルド時にコピーされない設定になっていると思うので修正するのを忘れないこと。NLog.configファイルのプロパティの「出力ディレクトリにコピー」の値を「新しい場合のみコピー」または「常にコピー」に設定する。 ===不具合===これは2015年8月3日の情報です。[[Xamarin.Mac]]において「Debugビルド」を行うとアプリ内(***.app内)のMonoBundleディレクトリにNLog.configファイルが生成(コピー)されるが、「Releaseビルド」では生成されないようだ。たぶん[[不具合]]だと思う。 ==関連項目==*[[MonoMac/特殊ディレクトリのパスを取得する]] ==参考文献=={{reflist}}
{{stub}}
 
[[category:Xamarin.Mac]]
[[category:MonoMac]]
匿名利用者

案内メニュー