問題タブ [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.

0 投票する
1 に答える
15051 参照

android - アクションバーシャーロックを「インストール」する方法は?

アクションバーシャーロックを使用して、サンプルプロジェクト「アクションバースタイル」をビルドしようとしています。

ABSを含む.zipファイルをhttp://actionbarsherlock.com/からダウンロードしましたが、[プロジェクト]>[プロパティ]>[ライブラリの追加]に表示されるように解凍する場所がわかりません。

誰かが私に手を差し伸べてもらえますか?

また、現在のAndroid互換ライブラリが3.0より前のバージョンのアクションバーをサポートしていることをどこかで読みました(今は見つかりません)。したがって、基本的にアクションバーシャーロックと同じ「効果」があります。誰かがこれを確認できますか?どのライブラリをインストールする必要がありますか?

0 投票する
1 に答える
547 参照

java - Androidアプリと(Android)ライブラリarchi

私はAndroidアプリケーションの設計に取り組んでいますが、いくつか質問があります。

現在、私が考えているアーキテクチャは次のとおりです。

  • ユーザーインターフェイス用のAndroidアプリケーション、
  • ビジネスロジック用のライブラリ(Androidまたは「純粋な」Java?)、
  • SQLLiteデータベースにアクセスするためのAndroidライブラリ(ビジネスロジックで使用されます)、
  • Wifi / BTモジュールにアクセスするためのAndroidライブラリ(ビジネスロジックで使用されます)。

アーキテクチャクイックスキーマ

近い将来、このAndroidアプリケーションのJavaベースのバージョンがWin / Mac / Linux用に開発される可能性が非常に高いため、Android固有のAPIとは別にビジネスロジックを維持しようとしています。

基本的に、ビジネスロジックは組み込みのSQLite DBを使用する必要があり、BTアダプターを使用して、たとえばWifi経由でインターネットにアクセスする必要があります。これは2つの専用Androidライブラリを使用して行うことができます。問題は、ビジネスロジックを「純粋な」Javaライブラリにすぎず、Androidプロジェクトに基づいて構築されないようにすることです。このアーキテクチャによれば、それは実現可能ですか。Androidアプリケーションには、2つのAndroidベースのライブラリのセットアップ、構成、および開始を担当する構成「モジュール」があります。

現在選択されているアーキテクチャはあなたの目には意味がありますか?

このアプリケーションに対するアドバイスは次のとおりです。

  1. 優れた抽象化レベル(DBおよびBT / Wifiアダプター上)で可能な限りモジュール化する、
  2. Android APIからビジネスロジックを可能な限り明確に保ち、
  3. このソリューション全体を従来のJavaアプリケーションに適合させるには、最小限の変更が必要です。

お手数ですが、よろしくお願いいたします。

0 投票する
2 に答える
3731 参照

android - Androidライブラリプロジェクト:リソースを難読化して維持する

いくつかの追加のAndroidライブラリプロジェクトを使用して、AndroidプロジェクトをProguardでコンパイルしたいと思います。実際、ほとんどのコードとリソースはこれらのライブラリにあります。

メインプロジェクトのproject.propertiesに「proguard.config=proguard.cfg」という行を追加し、cfg-file(-libraryjars .. \ libs)を構成しました。次に、-右クリックして、[Androidツール]->[署名済みアプリケーションパッケージのエクスポート]を選択します。ADTはリリース用にプロジェクトをコンパイルしましたが、最初の起動時にアプリがクラッシュしました。ログから読み取ったところ、リソースポインターが間違っていたことが原因でした。

プロジェクトを逆コンパイルしたところ、非常に奇妙なことがわかりました。ライブラリでリソースを宣言すると、そのリソースポインタが0になります。

すべてのAndroidライブラリプロジェクトのproject.propertiesに「proguard.config=proguard.cfg」という行を追加しても、問題は解消されませんでした。

解決策はありますか?

編集:proguard.cfgのフラグメントを見てください:

0 投票する
0 に答える
3288 参照

android - Android ライブラリ プロジェクト Jar + IntelliJ IDEA 11

IntelliJ IDEA 11を使用しています。

Android ライブラリ プロジェクトの JAR ファイルを作成するにはどうすればよいですか?

同じ Android ライブラリ プロジェクトとその JAR ファイルがあります。Module Settings->Project Settings->Artifacs->+

Jar ファイルを元のファイルと比較しようとしましたが、内容が異なります。

私の手順が正しいかどうか、誰でも確認できますか?

0 投票する
1 に答える
1121 参照

android - 他のサードパーティ ライブラリを使用した Android ライブラリ プロジェクト

私は、ライブラリ android プロジェクト「ライブラリ」(アクティビティとすべてを含む) と、ソース コードから「ライブラリ」を使用する通常の android プロジェクト「アプリ」を持っています。ライブラリは個別にコンパイルされません。

すべてがうまく機能します。問題は、サードパーティがコンパイルした jar の「External Jars」を使用していることです。私の「ライブラリ」はすべての「外部ジャー」を使用しています。「アプリ」は「ライブラリ」にのみアクセスできます。「外部ジャー」は「ライブラリ」によってのみアクセスされます。

問題は、アプリが正しく機能するために、「アプリ」のビルド パスにすべての「外部 Jar」が必要であるということです。その必需品は何ですか?「アプリ」は「外部ジャー」を直接呼び出しません。

だから私は「アプリ」と「ライブラリ」にジャーを含めました。「アプリ」のビルドパスに「ジャー」を含める必要がない方法はありますか?

これは、追加のアプリケーション サイズが心配であり、proguard をそのように動作させることができないためです。

0 投票する
1 に答える
2718 参照

java - Android プロジェクトによって参照される Android ライブラリの Java ライブラリが NoClassDefFound をスローする

私はAndroidプロジェクトで使用するAndroidライブラリプロジェクト(私が作成し、ソースを持っています)を持っています-これまでのところ問題なく問題ありません。しかし、そのライブラリ プロジェクトでは、外部の .jar ファイル (Bixolon モバイル プリンター用の SDK) を参照していますが、問題なくビルドされ、コード内で SDK のメソッドを参照できます。ただし、実行時に次のようになります。

Android ライブラリ プロジェクトで参照している .jar が正しく展開されるかどうか疑問に思います....jar ファイルを直接含む Bixolon のサンプル プロジェクトがあります (Android ライブラリ プロジェクトで参照しているものと同じです)。それは正常に動作します。私はすでに、自分の Android プロジェクトと Android ライブラリ プロジェクトで同じであることを確認しました (Bixolon が提供するサンプル プロジェクトで定義されているため)。だから私は今、何が問題なのか少し途方に暮れています。残念ながら、参照されている Bixolon SDK .jar のソース ファイルはありません。.jar だけです。

0 投票する
1 に答える
670 参照

java - Android プロジェクトで任意の jar ファイル (Java コードで作成) を使用できますか?

次のようなインポートを使用するクラスがあります。

Android には java.awt.font.Gly​​phVector または font.FontRenderContext が付属していないことがわかっています。

このクラス「FontEx」のjarファイルを作成し、それをAndroid Eclipseプロジェクトに直接インポートして使用できますか???

................................................................... …………………………………… ................................................................... …………

0 投票する
1 に答える
322 参照

android - Androidライブラリの複合コンポーネントのカスタムスタイル

ライブラリ内のAndroid複合コントロール(ウィジェット)を指定してスタイルを設定する方法があるかどうかを知りたいです。

ライブラリ内の複合コントロールを再利用可能に移動しましたが、Androidアプリプロジェクトのアクティビティで使用するときにカスタムスタイルを指定する方法がわかりません。

この役立つブログは、似たようなことをするのに役立ちますが、アプリケーションテーマとしてカスタムスタイルを指定する必要があり、1つのスタイルを複合コンポーネントに直接適用したいと思います。

このようなことを試しましたが、アプリケーションがクラッシュします。

0 投票する
4 に答える
6368 参照

android - Android ライブラリ プロジェクトの場合、マニフェストで意味のある?

それはほとんどすべてタイトルにあります。私が見<uses-sdk>たすべてのサンプルライブラリプロジェクトで指定されているように見えますAndroidManifest.xmlが、それは無関係だと感じています。

実際、以外<uses-permission>の のすべての属性と同様に、これも無関係であると思います。<manifest>package

誰でも確認できますか?

0 投票する
2 に答える
1759 参照

android - Android で c と Java の両方の API を使用してライブラリ プロジェクトを使用する方法

Google android-ndk グループでこの質問をしましたが、回答がありません。

「Is Library」をクリックして、独立したプロジェクトで共通モジュールを構築しようとしています。このプロジェクトは、c API と Java API の両方を提供します。これらの API の一部は関連しています。(これは、それらを 2 つのプロジェクトに分けるのは得策ではないことを意味します) common と libcommon.so という名前にしましょう。

このライブラリを別のプロジェクト (testcommon と仮定) で使用している場合、プロジェクト エクスプローラー -> プロパティ -> Android -> ライブラリ -> 追加で、共通プロジェクトを Eclipse のライブラリーとして追加します。しかし、これはライブラリでJava APIを使用できるようにするだけです。

また、libcommon.so を testcommon プロジェクトの android.mk に PREBUILT_SHARED_LIBRARY として追加して、c API にアクセスできるようにします。( 以下のように )

このようにして、ndk-build は成功しますが、実行すると以下のエラーが発生します。

ライブラリへの参照とビルド前の共有ライブラリの両方が libcommon.so を testcommon プロジェクトに追加するためだと思います。実際、ライブラリのみを参照するか、ビルド前の共有ライブラリを追加するかをテストしましたが、どちらも libcommon.so を testcommon にコピーしました。

問題は、c と Java の両方の API を含むライブラリが必要な場合はどうすればよいかということです。(コードだけでなく)

ありがとう


読んだ後共有ライブラリは別の共有ライブラリを呼び出すことができますか? 、これを解決する方法を見つけましたが、まだよくわかりません。

PREBUILT_SHARED_LIBRARY の代わりに Android.mk で以下の行を使用すると、ネイティブ パーツが機能し、ライブラリがこの方法でコピーされなくなります。そのため、重複コピーを修正できます。

これが私の前のテストで機能しなかった理由は、この方法であっても、libtestCommon だけでなく、両方のライブラリを Java にロードする必要があるためです。


今の私には明らかだと思います。

LOCAL_SHARED_LIBRARIES と -L plus -l の両方が NDK で正常に動作するはずです。

問題は、私が電話するときです

/data/data/$(app path)/lib (System.java::loadLibrary --> Runtime.java::loadLibrary --> DexPathList.java::findLibrary ) で so ファイルを見つけようとしますが、libtestCommon がその依存関係 libCommon.so を見つけるために、/vendor/lib と /system/lib でのみ見つけます。

最初に System.loadLibrary("common") を呼び出すと、dlopen はそれをキャッシュ (Linker.c::alloc_info) にロードします。これにより、libtestCommon.soがlibCommon.soをロードするようになり、成功したと思います。したがって、すべてが機能します。

また、ndk-r7 の SYSTEM-ISSUES.html の最後に次の単語があることに気付きました。

  • バグにより、1 つのアプリケーション共有ライブラリが別のアプリケーション共有ライブラリに依存することが妨げられています。たとえば、アプリケーション用に libfoo.so と libbar.so の両方をビルドし、libfoo.so を libbar.so の依存関係として bar/Android.mk にリストすると (LOCAL_SHARED_LIBRARIES := foo を使用)、libbar.so をロードするとプロセスですでに libfoo.so をロードしている場合でも、常に失敗します。

少し違いがあります。プロセスですでに libfoo.so をロードしている場合、libbar.so は成功します。

したがって、最終的に答えは次のとおりです。

  • Android ライブラリ プロジェクトで共有ライブラリが必要な場合は、 LOCAL_LDFLAGS := -Lxx -lxx を使用します。
  • 必要な共有ライブラリごとに System.loadLibrary を呼び出す必要があります。これは、1 つのライブラリで別の共有ライブラリを使用する方法でもあります。
  • /libs/ にあるライブラリのパスは、/data/data//lib/ に配置されます。