3

AndroidでSDKを作成することを計画しました。つまり、クラスファイルとリソース(レイアウト)を、それらを必要とする別のアプリケーションと共有することを意味します。アプリケーションをJARとしてエクスポートすると、リソースファイルとR.classが含まれません。現在、AndroidはJARを介したリソースファイルのパッケージ化をサポートしていませんが、ネットを検索して、リソースファイルをソースコードでコンパイルすると、他のアプリケーションでリソースにアクセスできるという解決策を見つけました。

そのため、私は次のようにそれを行いました。

  1. すべての解像度フォルダのコンテンツをソースフォルダにコピーしました

    • src-> com.mypackege->res--->ここにresフォルダーを置きます
    • 最後に私のsrcフォルダは次のようになります

    • src

      com.mypackage

            >myfile.java
           drawable-hdpi
           drawable-ldpi
           drawable-mdpi
           drawable-xhdpi
           com.mypackage.drawable
           com.mypackage.layout
           com.mypackage.menu
           com.mypackage.values
      
  2. プロジェクトをビルドすると、ビンにリソースとr.classを含むすべてのクラスファイルが含まれます。

  3. 次に、jar -cvf mysample.jar com / mypackage/*を使用して手動でjarを作成します。

  4. 最終的なjarには、プロジェクトのすべてのクラスとリソースがサイドmypackageに含まれています。

次に、mysample.jar別のアプリケーションに追加しますtestapp。ここでは、JARをアセットフォルダーに配置し(レイアウトのため)、ビルドパスに追加します。また、ビルドパスを構成します

このアプリケーションでは、そのJARからレイアウトをロードするために必要なmyfile.classfromを呼び出します。mysample.jar

問題は、JARファイルの下にリソースが表示されず、現在のプロジェクトのresフォルダー内のリソースのみが表示されることです。NULL pointer Exception

ただし、JARファイルからR.javaを呼び出します。また、マニフェストファイルにxmlns:custom = "http://schemas.android.com/apk/res-auto"を入れようとしましたが、これも機能しません。この問題を正確に解決できることを願っています。リソースマッピングの問題である可能性があります。これを解決するためのアイデアはありますか?

4

1 に答える 1

2

リソースをjarに保存することはできません。可能ですが、注意が必要なため、現時点ではAndroidはAndroidライブラリのみを提供しています。それ以外の場合は、コンパイルされたソースコードとリソースを別々に使用できます(ライブラリにリソースIDを提供することにより)

于 2013-03-11T08:30:57.287 に答える