問題タブ [library-project]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ActivityNotFoundException (はい、このアクティビティは AndroidManifest.xml で宣言されています)
同様の問題を報告しているスレッドをいくつか見つけましたが、まだ試したことのないものを実際に提供しているものはありません。
無実のそのような呼び出し:
AndroidManifest.xml で次のように指定します。
次の例外をトリガーします。
問題は、モノリシック アプリケーション プロジェクトから、ライブラリ プロジェクトとアプリケーション プロジェクトで構成される 2 部構成のプロジェクトに変更する前に、このコードは問題なく動作していたことです。
AndroidManifest.xml は、ライブラリプロジェクト内のものです。
これを解消するにはどうすればよいActivityNotFoundException
ですか?
android - 参照ライブラリ プロジェクトの相対パスを制御する方法は?
アプリケーションのプロジェクトに LVL ライブラリ プロジェクトを追加しようとしています。シンプルでわかりやすいはずですが、そうではありません。
ボタンをクリックするとAdd...
、期待どおりにライブラリ プロジェクトの選択ダイアログが表示されます。
それを選択すると、横に緑色のチェックマークが付き、承認されています。
ただし、[プロパティ] > [Android] ボックスを再度開くと、横に赤い X が表示され、使用できなくなります。
ライブラリプロジェクトを参照する「繊細な動作」を文書化した優れた回答がありますが、そこにヒントを実装しているにもかかわらず (同じルートディレクトリ)、私はまだこの問題を抱えています。
この問題を解決 (または回避) するにはどうすればよいですか?
..\..
参照されるライブラリ プロジェクトのパスを表すために Eclipse/ADT でより少ない s を使用するようにする方法はありますか? (そのライブラリを正しく参照するために必要なもの..\..\thisisinsane\library
はすべて、実際にはその必要はありません..\..\..\..\..\..
)
java - Androidライブラリプロジェクトの問題-クラスが見つかりません
Androidライブラリプロジェクトを正しく理解していないと思います。次の問題が発生しています。
- パッケージにライブラリプロジェクトがあります
a.b.c.lib
- パッケージ内のライブラリプロジェクトを使用するアプリケーションがあります
a.b.c
- パッケージ内のライブラリプロジェクトを使用する別のアプリケーションがあります
a.b.c.pro
パッケージ内のアプリケーションではすべて問題ありませんが、アプリでa.b.c
次の問題が発生します(実行時に) 。a.b.c.pro
java.lang.NoClassDefFoundError: a.b.c.lib.c1$c2
同じクラスがa.b.c
アプリでOKであることがわかります。
では、この場合、パッケージを定義する正しい方法は何ですか?
android - LIBRARY を使用してエクスポートされたアプリケーションで proguard.cfg が機能しない
proguard.cfg
すべての Log.x() LogCat 出力をスケルチすることを目的とした次のセクションと同じものを使用して、同じアプリケーションの 2 つのバージョンがあります。
最初のバージョンはモノリシック (つまり、ライブラリ プロジェクトをまったく参照していない) でproguard.cfg
あり、期待どおりに動作します。
2 番目のバージョンでは、2 つのライブラリ プロジェクトを使用しています (1 つは私のもので、もう 1 つは Google の LVL です)。同じproguard.cfg
ものがアプリケーション プロジェクトと私のライブラリ プロジェクトの両方に配置されます。ただし、その 2 番目のバージョンでは、proguard.cfg
まったく効果がないようです。
これを説明できるものは何ですか?
android - LVL を使用するアプリケーションは 2 つのアイコンをインストールします
デュアル アイコンの話は続きます...この答えはデバッグ バージョンには当てはまるかもしれませんが (はい、デバッグ時に Eclipse 経由で APK をインストールするときにアイコンを 1 つだけ表示することができます)、そうではないようです。エクスポートされたバージョンで動作します。
興味深いことに、エクスポート機能は (正常に) 1 つの APK のみを生成しますが、デバイスにインストールすると、ランチャーに 1 つではなく2 つのアイコンが表示されます。
これまでのところ、この奇妙な問題について特定できた特別なことは、ライブラリ プロジェクトを使用していることだけです。より正確には、2 つのライブラリ プロジェクトです。1 つは Google の LVL で、もう 1 つは私自身のライブラリ プロジェクトです。私は間違っているかもしれませんが、これがなぜ起こっているのかについて他に手がかりはありません.両方のライブラリのIs Library
チェックボックスがオンになっていて、アプリケーションプロジェクトがProperties > Android > Library
セクションでそれらの両方を参照していることを確認しました.
このような問題のトラブルシューティングを開始するにはどうすればよいですか?
更新:もう少し掘り下げた後 (を使用してファイル システムを検査adb shell
)、ディレクトリ/data/data/com.android.vending/cache/
に前述のアプリケーション用の 2 つのファイルが含まれていることがわかりました。
では、犯人は Google の LVL のようです...しかし、なぜこれが起こっているのか、なぜ私だけがこれについて報告しているのですか?
更新 2:で始まるファイルAVMC_UAR
は、アプリケーションの「内部から」または「アプリケーションのために」Android マーケットにアクセスするときに自動的に生成されます。したがって、これは問題の症状であり、原因ではない可能性があります。
この謎を解くための探求は続く...
android - アクティビティ ベースのアプリケーションにアクティビティがないことはありますか?
ライブラリ プロジェクトで定義された共有アクティビティ クラスがあり、それを使用するどのアプリケーションでも変更されず、したがってサブクラス化する必要がないと仮定すると、このアクティビティをサブクラス化せずにアプリケーションを作成する方法を得ることができますか?
私の質問をよりよく説明するために、ライブラリ プロジェクトに 1 つのアクティビティがあるとします。
そして今、そのライブラリ プロジェクトを使用してアプリケーションを作成しています。本当に作成する必要がありますか
アプリケーションが独自のアクティビティを独自に参照できるようにするためだけAndroidManifest.xml
ですか?
ライブラリのアクティビティ コアの動作を変更する必要がある場合にのみ、アクティビティをサブクラス化する、最小限のアプローチを採用できますか?
java - クラスファクトリの依存関係をライブラリに移動する方法
次のコードは、関連するすべてのクラスが同じプロジェクトにある(determineSubClass
のメンバーであるBaseClass
)場合に非常にうまく機能します。
BaseClass
しかし今、私は共有ライブラリプロジェクトに移動したいと思います。このプロジェクトではSubClassOne
、、、がライブラリSubClassTwo
ではなく、このライブラリを使用するアプリケーションで定義されています。SubClassThree
SubClassFour
もちろんBaseClass
、このライブラリを使用してすべてのアプリケーションに戻ることもできますが、疑問に思います。
- より良い解決策はありますか?
- ライブラリプロジェクトを維持
BaseClass
し、ライブラリプロジェクトから派生したすべてのスーパークラスについて知る必要をなくすソリューションはありますか?
編集(以下の@ahmet alp balkanの質問に答える):
ofType()
各サブクラスの2つのことを行います:
- 文字列p1と他のパラメータp2およびp3の内容に基づいて、インスタンス化されるサブクラスがそのタイプであるかどうかを判別します。
- 答えが肯定的である場合、それは自己サブクラスのオブジェクトをインスタンス化します。それ以外の場合は、nullを返します。
2番目の質問についてはBaseClass
、この時点で、すべてのサブクラスに共通のデータメンバーとメソッドがあり、インスタンス化するサブクラスを決定する責任を委任することを目的としたこの単一の静的メソッドのみが保持されます。
ところで、あなたの質問のおかげで、私は私の元の投稿でひどいタイプミスに気づきました:「SuperClassOne」は「SubClassOne」などでなければなりません。
android - Android-Library-Project からのアクティビティの開始
長い検索の後、適切な解決策が見つかりませんでした。アプリケーションのほぼすべてのコードを含む Android-Library Project があります。ライブラリ プロジェクトのメイン アクティビティから、明示的なアクティビティ A へのインテントを開始します。ライブラリ プロジェクトを使用する派生プロジェクトでは、このアクティビティ A を拡張し、新しいコードをいくつか追加しました。問題は、派生クラスではなく、アクティビティ A のスーパークラスが応答することです。
ライブラリ プロジェクトを使用する新しいプロジェクトのマニフェストで、新しいパッケージで新しいアクティビティを宣言しました。
ライブラリ プロジェクトからの Intent 呼び出しは次のとおりです。
派生した AndroidActivity クラスは次のとおりです。
onCreate メソッドにアクセスできません
ライブラリ プロジェクトのマニフェスト:
新しいプロジェクトのマニフェストは次のとおりです。
ので、私は持っています:
3 番目のプロジェクトはそのままの AndroidActivity で既存のコードを使用する必要があるため、ライブラリ プロジェクトにそれほど多くの変更を加えたくありませんでした。
他のすべてのことは私にとってはうまくいきます。たとえば、変更されたレイアウトは新しいプロジェクトから使用されます。
どうすればその問題を処理できますか? スーパークラスの代わりに新しいアクティビティを呼び出す必要があると宣言した新しいプロジェクトからのマニフェストの変更でしょうか?
前もって感謝します!