1

ライブラリにできるだけ多くの共通コードを入れ、各フレーバーのプロジェクトを作成することで、さまざまなフレーバー (無料、有料など) を持つアプリケーションを作成しようとしています。現時点では、メイン アクティビティの Java クラスはすべてのバージョンで同じになります。動作を制御するために変更する必要があるのは、"values" リソース ディレクトリで定義されたレイアウトといくつかの定数だけです。

「無料」プロジェクトのマニフェスト ファイルでアクティビティを次のように定義しました。

<activity
        android:name="librarypackagename.Foo"
        android:label="@string/bar" 
        android:launchMode="singleTask"
        android:uiOptions="splitActionBarWhenNarrow"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

しかし、アプリケーションをテストすると、次のエラーが表示されます。

「Activity ComponentInfo{freeapppackagename/librarypackagename.Foo} をインスタンス化できません: java.lang.ClassNotFoundException: パスにクラス "librarypackagename.Foo" が見つかりませんでした: DexPathList[[zip ファイル "/data/app/freeapppackagename-2.apk" ],nativeLibraryDirectories=[/data/app-lib/freeapppackagename-2, /vendor/lib, /system/lib]]"

図書館の活動を主な活動として使用することはできませんか? また、無料アプリ プロジェクトで Foo を拡張し、それをメイン アクティビティとして使用してこれを試しましたが、それでも同じ例外が発生します。

編集 (マニフェスト ファイルは問題に関連していないことが判明したため、削除しました):

また、Eclipse では、次のエラー メッセージが表示されることに気付きました (ただし、プロジェクトは引き続きビルドされます)。

依存関係リストに android-support-v4.jar の 2 つのバージョンが見つかりましたが、すべてのバージョンが同一というわけではありません (チェックは現時点では SHA-1 のみに基づいています)。現時点では、ライブラリのすべてのバージョンが同じである必要があります。見つかったバージョンは次のとおりです: パス: D:\Work\Eclipse\LiteApplicationName\libs\android-support-v4.jar 長さ: 556198 SHA-1: 4a6be13368bb64c5a0b0460632d228a1a915f58f パス: D:\Work\Eclipse\LibraryName\libs\android-support-v4 .jar 長さ: 385685 SHA-1: 48c94ae70fa65718b382098237806a5909bb096e Jar が一致しません! 依存関係を修正する

奇妙なことに、android-support-v4.jar ファイルは、アプリケーション プロジェクトの「参照ライブラリ」に表示されますが、ライブラリの「Android プライベート ライブラリ」に表示されます。

4

2 に答える 2

0

注意すべき点がいくつかあります。

  • アクティビティのクラスを定義する場所package com.librarypackagename;では、ファイルの先頭に何らかの効果があることを確認してください。
  • ライブラリ用とメイン プロジェクト用の 2 つの AndroidManifest.xml ファイルが必要です。
  • ライブラリ AndroidManifest.xml で、アクティビティを定義する要素に親 XML タグがあり<library>、ないことを確認します。<application>
  • ライブラリ AndroidManifest.xml で、package 属性を次のように設定していることを確認します。com.librarypackagename

これらの点についてご不明な点がございましたら、お知らせください。プロジェクトの現在の構造に関する詳細情報を提供していただけると助かります。

于 2013-08-06T04:17:20.683 に答える
0

ライブラリの不一致の問題に関連していたことが判明しました。アプリケーション プロジェクトを右クリックし、[Android Tools] > [Add Support Library] を選択しました。これでパッケージがインストールされ、アプリケーション プロジェクトの「Android Private Libraries」ディレクトリにも「android-support-v4.jar」が表示されました。これで、例外が発生しなくなりました。

于 2013-08-06T23:41:21.557 に答える