問題タブ [android-library]
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 - Android 1.6 以降用に作成されたが 2.3.3 を対象としたライブラリを使用するにはどうすればよいですか?
プロジェクトで Android ライブラリを使用しようとしていますが、最小 SDK バージョンとターゲット SDK バージョンに問題があります。私が話しているライブラリは、この ActionBarです。readme には、「このプロジェクトは、Android 1.6 および 3.0 までの再利用可能なアクション バー コンポーネントを提供することを目的としています」と記載されています。
アプリケーションのターゲットを 1.6 にしたいので (より高い API が必要になった場合は、必要に応じて変更します)、ビルド ターゲットを API レベル 4 (1.6) として ActionBar 用の Eclipse プロジェクトを作成しました。ライブラリminSdkVersion
が 4 に設定されている (およびtargetSdkVersion
10 に設定されている) にもかかわらず、プロジェクトはコンパイルされません。API レベル 10 (2.3.3) に属していると思われる正確なエラーが 3 つあります。そのうちの少なくとも 1 つはBuild.VERSION_CODES.GINGERBREAD
、API レベル 4 には存在しない を使用しようとしていることが確実にわかっています。
ライブラリが「Android 1.6および最大3.0」をサポートし、1.6を念頭に置いてコンパイルさえしないのはなぜですか?
API レベルを 10 に設定して、何が起こるか見てみましょう。エラーはなくなり、今はこのような警告が表示されます。私はそれで暮らすことができます、それは大したことではありません (しかし、Eclipse からそれを削除する方法があれば、私に知らせてください)。
次に、1.6 を対象とするプロジェクトを作成し、ライブラリをプロジェクトに参照しましたが、上記と同じエラーがここにも当てはまるため、コンパイル/実行できません。
どうすればこれを回避できますか? ライブラリが"Android 1.6 and up to 3.0" をサポートしていると思われる場合、Android 1.6をターゲットとするプロジェクトでどのように使用できますか?
android - Androidライブラリから非ライブラリコードを呼び出す
Androidがライブラリプロジェクトを導入して以来、アプリをライブラリに変換して、適切な調整を加えた複数のバージョンを作成できるようにしています(たとえば、同じコードベースを使用する無料バージョンとプロバージョンですが、いくつか変更があります)。
最初は、ライブラリプロジェクトのコードがサブプロジェクトのフィールドにアクセスできるようにするのに問題がありました。言い換えれば、私の無料バージョンとプロバージョンにはそれぞれ、ライブラリプロジェクトが特定の機能を区別するために使用する、いくつかの定数を含むクラスがありました。
サブプロジェクトでは、ライブラリのメインアクティビティを拡張し、リフレクションを使用してライブラリ内のフィールドの値を変更する静的初期化ブロックを追加しました。
このコードでは、ConstantsHelperがライブラリにあり、サブプロジェクトからConstants.classを提供しています。これにより、ライブラリプロジェクトの定数が初期化されます。
私のアプローチは、1つの特定のユースケースを除いて、うまく機能します。アプリがしばらく使用されておらず、OSによって「停止」されている場合、ConstantsHelperの静的フィールドは忘れられます。
定数は(上記のように)メインアクティビティによってリセットされることになっていますが、OSが別のアクティビティを再開するため、メインアクティビティは起動されません。この結果、定数の初期化が忘れられ、再開されたアクティビティがライブラリ(サブプロジェクトの知識がない)にあるため、定数を再初期化できません。
ライブラリ内の他のアクティビティに、再開時にサブプロジェクトからコードを呼び出すように「指示」するにはどうすればよいですか?または、サブプロジェクトの一部のコードが履歴書ごとに呼び出されるようにする方法はありますか?
android - 生成された R の競合
1 つに統合している Android プロジェクトがいくつかあります。
これは次のようなものです。
(Lib プロジェクト) Android_Commons RichReader FacReader WWReader
主なプロジェクトは ReaderShelf で、これらすべてのプロジェクトをライブラリとしてそのパスに追加します。
しかし、リンクされたソースはコンパイル エラーを示し、ライブラリの ID は R クラスで見つかりません。
すべての R ファイルを開きました。元のすべての R ファイルをマージしたものです。
ただし、エラーが発生するソースから開くと、次のようになります。
彼らは正しいファイルを開きますが、r_sections と r_navigate はありません。
PS: エラーを出さない r_search は、メイン プロジェクトにも表示される共通の ID です。
実際、別の奇妙な動作を見つけました。問題のある行にコメントすると、コードはコンパイルされますが、開くと、DPReaderActivity はすべての findViewById で null を返します。
編集:プロジェクトを構築するログを見たところ、これが見つかりました。役立つかどうかはわかりません
java - プローブ/センサーを有効にできません
ユーザーの電話でSMSにアクセスするために、 funfフレームワークを使用しています。
フレームワークはいくつかのパッケージで構成されています。提供されているプローブはすべて、抽象クラスProbeを拡張します。
フレームワークを利用するために、私は次のクラスを作成しました。
クラスSMSProbeのメソッドは保護されていると宣言されているため、SMSmessageクラスを作成しました。
しかし、このコードを実行すると、プローブをオンにする必要があるときに失敗します。次のエラーを参照してください。
抽象クラスProbeのメソッドenable():
私は何を間違えますか?私のクラスSMSmessageは最終的にProbeから継承するので、これは有効だと思いました。
Funfの開発者の一人がこれを読んでくれることを願っています。
ありがとうございました。
android - Proguard に外部ライブラリを無視させる方法は?
主に難読化の理由で Proguard を使用したいと考えています。
私の問題は、Twitter4J と 2 つの標識ライブラリの 3 つのライブラリがあることです。署名付き APK を作成しようとしたときに、これらのライブラリが原因でエラーが発生しました。これを乗り越えるために、proguard.config
ファイルに以下を入れました...
これでコンソールのエラーは解消されましたが、署名済みの APK を携帯電話にロードすると、すぐにクラッシュしました。DDMS は、これは Twitter4J に見つからないクラスが原因であると述べました。
上記を取り除く"dontwarns"
ことは助けにはなりませんでした。も追加しませんでしたdontshrink dontoptimise
。
Proguard がライブラリを完全に無視することを望みます (とにかくオープン ソースであるため)。これは可能ですか?
android - 1 つのプロジェクトで Roboguice と ActionbarSherlock を使用する方法はありますか?
タイトルに記載されているライブラリを 1 つのプロジェクトで使用したいと考えています。
ただし、どちらも特別なアクティビティ クラスから拡張するアクティビティが必要です。Roboguice の場合は RoboAcitivity で、ActionbarSherlock の場合は FragmentActivity です。
ActionbarSherlock は互換性ライブラリを拡張します。フラグメントも使用する必要があり、プロジェクト レベルが API レベル 11 未満であるため、これは素晴らしいことです。
誰かがこれを行うことに成功しましたか? Java は多重継承をサポートしていないので (これは通常は良いことです)、ActionbarSherlock プロジェクトで FragmentActivity を作成して、標準の Activity の代わりに RoboActivity を拡張しようとしました。しかし、この方法でコンパイルすることはできません。
コンソール出力の一部は次のとおりです。
android - Android ライブラリ プロジェクトで定義されているスタイル属性をオーバーライド (または非表示) する方法は?
同様のアプリケーションのセットがあります。共通のリソースとコードをライブラリ プロジェクトに抽出すると、アプリケーションは必要なものをオーバーライドするだけです。私のライブラリには、次のスタイルが定義されています。
ご覧のとおり、android:layout_toRightOf
属性が含まれているため、このスタイルは ListView 行のテキストに適用され、その行の画像の右側に表示されます。
ただし、私のアプリケーションの 1 つで、画像の下にテキストを表示したいと考えています。ListItemText
属性値をオーバーライドandroid:layout_toRightOf
して に置き換えるには、そのアプリケーションのスタイルをどのように定義する必要がありますandroid:layout_below
か?
私がそれを次のように定義すると:
画像の右と下にテキストを表示し、ライブラリとアプリケーション スタイル XML の両方の属性を効果的にまとめます。
ps:私の問題の解決策の 1 つは、スタイルを取り除き、android:layout_toRightOf
代わりにレイアウト xml に移動することです。次に、ターゲット アプリケーションで、このレイアウトを再定義/オーバーライドできます。しかし、属性をオーバーライドするためのよりシンプルで簡単な方法を提供できるため、スタイルベースのソリューションを探しています。
(継承されたスタイルをparent
属性で使用することもできますが、これにはアプリケーションでレイアウトのオーバーライドが必要になるため、これは回避しようとしています)。
android - Androidライブラリターゲットのコンパイルとそれ以降のAndroidバージョンのオブジェクト
私はAndroidライブラリを構築していて、デバイスに関する情報を取得する方法があります。私たちの目標は2.2以降をサポートすることですが、それ以降のバージョン(2.3のデバイスシリアルなど)で導入された情報を収集し、アプリケーションをバージョン2.2に設定してコンパイルする方法があるかどうか疑問に思っていました。
周りを検索した後、次のようなコードを使用している人を見つけました。
ただし、このコードが存在する場合、ビルドターゲットを8に設定すると、ライブラリを使用するサンプルアプリケーションのビルドに失敗します。この情報を取得するには、クライアントがターゲットを9に設定している場合、何か提案がありますか?
android - Androidライブラリプロジェクトでコンパイルできません
Eclipseに2つのAndroidライブラリプロジェクトがあります(はい、両方で「ライブラリですか」が選択されています)。それらの1つはActionBarSherlockであり、もう1つはViewPagerIndicatorです。
ここで、ViewPagerIndicatorにはライブラリの依存関係としてActionBarSherlockを含める必要があるため、プロジェクトの「Android」設定の下に追加します。問題は、ライブラリの依存関係を追加した瞬間に、同じプロジェクトのJavaビルドパスに移動すると、追加されたライブラリの依存関係.jarが必要であるが、存在しないことがわかります(もちろん、ライブラリプロジェクトであるため) 、jarは作成されません!)。
何が問題になる可能性がありますか?さらに、Androidアプリケーションへの依存関係として両方のライブラリを追加する必要がありますが、これには同じ問題があります。
android - ADT 14に更新した後、「Dalvik形式への変換がエラー1で失敗しました」
最新の開発者ツールであるADT14に更新した後、ライブラリプロジェクトを含むAndroidプロジェクトが実行されなくなり、エラーが発生します。
プロジェクトの削除と再追加を含むソリューションでこの問題を説明している他のスレッドは機能しません。