0

私はAndroidプライベートAPIのいくつかを使用するアプリケーションに取り組んでいます。私は自分の携帯電話用に構成された完全なAndroid(CM10)ソースの一部としてそれを構築します。結果のバイナリはそのデバイスでうまく機能しますが、同じAndroidバージョンの他のデバイスでセグメンテーション違反をスローします。そのようにコンパイルされた単純なhelloworldでさえSegfaultをスローするため、APIが欠落しているという問題はありません。サンプルコードは次のとおりです。

hello-cmd.cpp

#include<stdio.h>

int main(int argc, char* argv[]) {
    printf("Hello Command Line!");
    return 0;
}

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-cmd
LOCAL_SRC_FILES := hello-cmd.cpp
include $(BUILD_EXECUTABLE)

Android NDKで次のコードをビルドすると、移植可能になります。私がAndroidソース内でそれを構築するとき、そうではありません。

問題はリンカーの構成にあると思いますが、これをデバッグまたは修正する方法がわかりません。

4

1 に答える 1

0

私はついに何が問題なのかを理解しました。2つのデバイスは、互換性のないC++コンパイラフラグを持つ異なるAndroidバージョンを使用していました。両方のデバイスをまったく同じバージョンに更新した後、問題は解消されました。

プライベートAndroidAPIを使用して単一のポータブルバイナリをコンパイルすることはできませんが、Androidのメジャーバージョンごとに個別のバイナリをコンパイルしてアプリに同梱することは可能です。このソリューションについては、ブログで詳しく説明しました。

于 2013-09-12T10:33:22.113 に答える