1. ホーム
  2. android

[解決済み] Android Lでネイティブライブラリを実行するとエラーが発生する:PIE(Position Independent Executables)のみがサポートされています。

2022-02-26 10:28:47

質問内容

Android L (Nexus 5) でネイティブコードを実行すると、エラーが発生します。

error: position independent executables (PIE) のみサポートされています。

同じコードが私のSamsung Galaxy S3 (Android 4.3)で正しく実行されます。

以下は、私の Application.mk です。

APP_PROJECT_PATH := $(call my-dir)/..
APP_ABI := armeabi
NDK_TOOLCHAIN_VERSION := 4.7
APP_PLATFORM := android-9
APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti

しかし APP_PLATFORM := android-9APP_PLATFORM := android-16 (読みながら ここで Jelly Been (API level 16)でPIEがサポートされました)、同じ実行ファイルがAndroid Lでも問題なく動作します。

を使用してネイティブコードをコンパイルする方法はありますか? APP_PLATFORM := android-9 をAndroid L上で動作させることはできますか?

解決方法を教えてください。

2つの実行ファイルをビルドしました。 APP_PLATFORM := android-9 と、もう1つは APP_PLATFORM := android-16 . Javaでネイティブコードを実行するには、これが必要です。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
    // Run the file which was created using APP_PLATFORM := android-16
} else {
    // Run the file which was created using APP_PLATFORM := android-9
}