2012-01-31 9 views
2

私はいくつかの友人や顧客に配布したいと思うsemi-pushサービス(中央httpサーバからの通知のためのチェックイン)を作りました、従って彼らは簡単にあなたのアプリにプッシュのような通知を多くの面倒なく追加することができます。私のPushNotifyでJARを使用してドロアブルリソースをパッケージ化しますか?

  • を - 私はJARをパッケージ化し、私の他のプロジェクトのいくつかでそれを含め、今私は、包装を資源に関連してレンガの壁に当たってることが十分に得ている

    このプロジェクトは、私はリソースを持っている:R.drawable.goldstar

  • は、私がかつてR.drawable.goldstarを参照することにより、アプリケーションで二回、それを描き、そして一度resources.getIdentifier('goldstar', 'drawable', 'com.com.pushnotify')
  • を参照することで、私は、自身のAPKとしてPushNotifyをパッケージ化すると、金の星が正しく表示されます両方の場所で。
  • 私は右クリックして、プロジェクトをJARファイルとしてエクスポートし、含まれているファイルから "ApplicationManifest.xml"のチェックを外し、 "完了"をクリックします。
  • 描画可能なリソースを追加すると、このJARファイルのサイズが増加することを確認できます。
  • ビルドパスにPushNotify.jarを含むDependantApp.apkをパッケージ化すると、金星が両方の場所に正しく表示されます。
  • PushNotify.apkをアンインストールした場合、金星はDependantApp.apkからJARにパッケージされていないかのように消えます。 getIdentifier('goldstar', 'drawable', 'com.com.pushnotify')に対して0の値が返されます。

ドロー可能リソースを持つJARを配布して従属アプリケーションに表示させるにはどうすればよいですか?私のJARを含むアプリケーションは、私が配布しているアイコンにアクセスする必要はなく、自分のコードだけがアクセスします。ずっといや-言って、私が見つけ、検索結果での、にもかかわらず

私は新しい画像を追加するときa)は私のJARファイルが大きくなると、b)私はそのJARファイルを用意しましたので、私は、これは何とか可能である確信しています前にアイコンが付いています(AirpushはUrbanAirshipと同じです)。

ありがとうございます!

答えて

2

Drawableリソースを持つJARをどのようにして配布し、依存アプリに表示させることができますか?

現在サポートされていません。リソースを配布することができるAndroidライブラリプロジェクトを作成することは、ツールのロードマップにあり、あまりにも遠くない将来にうまくいくことが期待されます。

+0

私は、まさに私が話していることを行うJARファイルを消費しました。私の最後の段落をお読みください。 – linked

+0

@linked:あなたがやっていることは現在サポートされていません。再利用可能なコンポーネントの一部としてリソースを配布するためにサポートされている唯一の手段は、Androidライブラリプロジェクトです。そしてそれらはJARとして直接パッケージ化することはできません。 "現時点では、ソースコードの代わりに直接jarファイルを含むライブラリプロジェクトはまだサポートされていません。" (http://tools.android.com/recent/buildchangesinrevision14)そしてその文書はR15がこれをサポートすると考えられていたが、R16はこれを支持しなかったし、R16もそれを支持しなかったことを示している。 – CommonsWare

+0

@linked:大まかな回避策がありますが、現時点でJARに実際に存在するリソースはありません。ツールチームが計画しているリソースの中に、JARのリソースが含まれているかどうかは明らかではありませんが、私は確かにそれを感じています。 Javaは独自の「リソース」構造をAndroidより長く持ち、JARのものをサポートしていましたが、Rで定数にアクセスすることはありませんでした。同じ名前でも、Androidの「リソース」は古いJavaスタイルの "resources"。 – CommonsWare

0

私はこれをやり遂げようとしているとは思わない。 Androidはapkの内部に "ビルド"しています。 jarファイルのリソースは(私が知る限りは)無視されます。

しかし、これらのxmlレイアウトが含まれる「android-library」として構築することはできます。コード全体を「読みやすい」ものにしたくない場合は、ライブラリ内の残りの部分を.jarファイルの中に残しながら、このレスソースとクラスを "android-library"の中に入れてください。

0

これはあなたが求めていた、まさにではなく、ここで、とにかく面白いオプションです:

代わりgetIdentifier('goldstar', 'drawable', 'com.com.pushnotify')使用のgetIdentifier('goldstar', 'drawable', getApplicationContext().getPackageName())

してインストール、解凍する.zipファイルとして画像/リソースを配布し、ターゲットのアプリケーション(共有.jarを使用するアプリケーション)でコンパイルします。

.jarに画像を含めないでください。

これはテストされていませんが動作するはずです。

関連する問題