2011-06-20 10 views
0

次のコードを使用して、AndroidManifest.xml内のdebuggableタグがtrueまたはfalseに設定されているかどうかを確認します。NDKアプリケーションがデバッグ可能かどうかを検出します

strcpy(name, "ro.debuggable"); 
__system_property_get(name, buf); 
__android_log_print(ANDROID_LOG_INFO, "ro.debuggable", "%s",buf); 

しかし、それは常に0 ...

を返すいずれかの方法は、私は何かが足りないのですか?

答えて

4

AndroidManifest.xml内のdebuggableタグの情報は、ApplicationInfoにあります。あなたはJava側で情報を取得する必要があります。

/* exception handling code is omitted */ 
PackageManager pm = context.getPackageManager(); 
ApplicationInfo ai = new ApplicationInfo(); 
ai = pm.getApplicationInfo(context.getPackageName(), 0); 
if ((ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 
     ApplicationInfo.FLAG_DEBUGGABLE) { 
    /* android:debuggable="true" */ 
} 
+0

NDKを使ってC/C++でどのように取得できますか? – McBob

+1

JNIを使​​用する必要があります。また、元の質問のあなたのコードは、プライベートAPIの巨大なヒープを使用しています。それをしないでください。 – hackbod

+0

どういう意味ですか?あなたは__system_property_getを使うべきではないということを意味していますか? いずれにしても、上記のJavaコードをKazukiからC/C++コードでJNIを使​​用して直接実行するスニペットは、上記の手順でNDKの定義を見つけることができないようです。 – McBob

関連する問題