8

Android ビルドにビルド済み APK を追加しようとしました。APK には、いくつかの共有ライブラリ (*.so ファイル) が含まれています。問題なくコンパイルされますが、アプリからライブラリが見つからないというエラーが表示されます。

これはなぜですか?

android.mkコードは次のとおりです。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := apkwithso
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_REQUIRED_MODULES := libx liby libz
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)

libx、y、z は、私の libx.so、liby.so、および libz.so です。

また、.so を APK から out lib ディレクトリに手動でコピーしようとしましたが、うまくいきませんでした。

Galaxy Nexus Maguro用にAndroid 4.1.2でコンパイルしています。

4

5 に答える 5

6

BUILD_PREBUILTスクリプトを呼び出しprebuild.mkます。このスクリプトの説明は次のとおりです。

事前構築されたファイルをコピーするための標準ルール

アプリケーションがインストールされることはわかりません。だから、あなたのアプリケーションがライブラリを見つけられないのはそのためだと思います。

解決策は、パッケージからライブラリを抽出し、アプリケーションとは別にコピーすることです。これを行う方法の詳細については、こちらを参照してください

于 2013-02-04T16:56:15.367 に答える
1

カスタムベンダーディレクトリを追加する場合、ファイルはaospSource:destinationOnImage次のような形式で指定することもできます。device-partial.mk

PRODUCT_COPY_FILES += \
    vendor/your-custom-vendor/your-device/proprietary/libx.so:system/lib/libx.so

ここに(.apkファイル以外の)好きなものをほとんど追加でき、画像にコピーされます。

于 2013-03-15T17:07:33.427 に答える