3

セキュリティ上の理由から、ソース コードなしでライブラリ プロジェクトをエクスポートする必要があります。残念ながら、ライブラリ プロジェクト内で生成された jar ファイルにはリソースが含まれていません。このライブラリのユーザーが、ライブラリに必要なリソースを処理することは期待できません。

この投稿と同様の投稿がありましたが、解決策はまだありません。

4

2 に答える 2

8

次のレシピは以前は機能していましたが、最近は試していません。

ステップ #1: ライブラリ プロジェクトをそのまま動作させる。このプロジェクトを保持するディレクトリを$ORIG.

ステップ #2: Ant ビルド スクリプトをまだ作成していない場合は、 を$ORIG使用して作成しますandroid update project

ステップ #3:$ORIG/build.xml次のような JAR ファイルを作成するタスクを追加します。

<target name="jar" depends="debug">
  <jar
      destfile="bin/YOUR-LIBRARY-NAME-GOES-HERE.jar"
      basedir="bin/classes"
  />
</target>

ステップ #4: ライブラリ プロジェクト全体を から$ORIG別のディレクトリにコピーします$DIST

ステップ #5:ルートディレクトリ自体を除いsrc/て、ツリーを削除します。$DIST src/

ステップ #6: に移動bin/YOUR-LIBRARY-NAME-GOES-HERE.jar$DIST/libs/ます。src/これにより、ソース コードがコンパイル済みの同等のものに効果的に置き換えられます。

ステップ 7:$DIST/bin/不要になったので削除します。

$DISTは、ツリーが に置き換えられて$ORIGいることを除いて、と同等の Android ライブラリ プロジェクトを保持するようになりました。src/libs/YOUR-LIBRARY-NAME-GOES-HERE.jar

SDK Manager の Google Play Services パッケージはこのようにパッケージ化されているため、レシピがまだ機能していると思われるだけでなく、合理的に公式に承認されているように見えます。

ここでより多くのオプションを提供する可能性のある新しいビルドシステムが進行中であることに注意してください。たとえば、2014年にこの質問を読んでいる場合は、より良い代替手段があるかどうかを確認してください.

于 2012-12-28T21:17:01.403 に答える
0

言及を聞いた 1 つのアイデアは、独自のコードをすべて配置する場所である Jar ファイルへの参照を含む通常のライブラリ プロジェクトを使用することです。すべてのアセットはライブラリ プロジェクトにある必要があり、ライブラリのユーザーが読み取ることができます。いずれにせよ、 apktoolを使用していれば誰でも最終的な APK からこれらのファイルを抽出できることに注意してください。

ただし、JAR 内のコードは判読できず、ユーザーはそれらをリバース エンジニアリングする必要があり、難読化する場合は特に困難になる可能性があります。

于 2012-12-28T21:11:42.250 に答える