2017-03-11 15 views
1

AndroidプロジェクトはJava上でネイティブに実行され、NDKプロジェクトは基本的にネイティブコードを起動する特別なアクティビティを備えています。たとえば、SDL has an Activity that initializes SDL, sets up a display window, and then launches your project.XamarinはAndroidプロジェクトをどのように起動しますか?

私はXamarinがどのように動作しているかを見ています。技術的には、CLRコードはネイティブではなく管理されたコードですが、CLR自体はネイティブコードであり、すべてがAndroidランタイムへのNDKプロジェクトのように見えます。私は周りを見回してきたが、AndroidプロジェクトランチャーがXamarinにある場所を見つけることができず、グーグルでは何も役に立たない。

XamarinがAndroidデバイスでCLRプロジェクトを起動するメカニズムは何ですか?

+0

[アプリケーションスタートアップ](https://developer.xamarin.com/guides/android/under_the_hood/architecture/#Application_Startup)をお探しですか? –

+0

@ GraceFeng-MSFTそうだね。それを答えにすると、私はそれを受け入れるでしょう。 –

答えて

1

XamarinがAndroidデバイスでCLRプロジェクトを起動する仕組みは何ですか?

Application Startupを参照してください。

Androidデバイスでアプリが起動されると、Androidはマニフェストの指定された@android:nameで読み込みますが、通常はContentProvider.attachinfo()メソッドXamarin.Androidを呼び出してから、すべてのタイプがインスタンス化されます。 mono.MonoRuntimeProvider.attachInfo()メソッドは、ネイティブのContentProvider.attachinfo()メソッドを置き換えてMonoランタイムをプロセスに読み込みます。

これは私がそのドキュメントを理解する方法です。間違いがある場合は、多くのおかげでお知らせください。

+0

ええと... [ContentProvider](https://developer.android.com/reference/android/content/ContentProvider.html)のドキュメントを見ると、このクラスはすべて共有されているSQLデータに関するものであり、 'MonoRuntimeProvider .javaは実際には関連するSQLメソッドをサポートされていないエラーにします。だから、この種のハックのような感じです。これが選ばれた理由は何ですか?それはちょうど「私たちが繋ぐことができるアプリケーション設定プロセスで非常に早い段階でロードされるもの」ですか? –

+0

@MasonWheeler、この[document](https://developer.android.com/guide/topics/providers/content-provider-basics.html)を確認することができます。これは共有SQLデータのためだけに使用されるものではありません。 –

関連する問題