2011-08-01 35 views
2

起動時にクラッシュするNativeActivityを書いています(私の理論...)AndroidManifest.xmlで共有ライブラリやモジュールなどの名前を間違っています。以下は、私のアプリケーションが起動されたときのLogCatの出力と、私のマニフェストファイルの内容です。Android NDKアプリの起動時にエラーが発生しました

私がこれを設定する際に間違っていたアイデアはありますか?

おかげで、 ALF

=================== MANIFEST ================== ===========================

<?xml version="1.0" encoding="utf-8"?> 
<!-- BEGIN_INCLUDE(manifest) --> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.Mythica.SpiderGame" 
     android:versionCode="1" 
     android:versionName="1.0"> 

    <!-- This is the platform API where NativeActivity was introduced. --> 
    <uses-sdk android:minSdkVersion="12" /> 

    <!-- This .apk has no Java code itself, so set hasCode to false. --> 
    <application android:label="@string/app_name" android:hasCode="false"> 

     <!-- Our activity is the built-in NativeActivity framework class. 
      This will take care of integrating with our NDK code. --> 
     <activity android:name="android.app.NativeActivity" 
       android:label="@string/app_name" 
       android:configChanges="orientation|keyboardHidden"> 
      <!-- Tell NativeActivity the name of or .so --> 
      <meta-data android:name="android.app.lib_name" 
        android:value="SpiderGame" /> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
<!-- END_INCLUDE(manifest) --> 

================ === LOGCAT出力===================================

7月31日23:13:11.770:WARN/dalvikvm(1384):スレッドID = 1:スレッドが捕捉されない例外で終了(グループ= 0x4016d760) 7月31日23:13:11.780:ERROR/AndroidRuntime(1384 ):重大な例外:メイン 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):java.lang.RuntimeException:アクティビティを開始できませんでしたComponentInfo {com.Mythica.SpiderGame/android.app.NativeActivity}:java.lang。 IllegalArgumentException:ネイティブライブラリをロードできません:/data/data/com.Mythica.SpiderGame/lib/libSpiderGame.so 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1751) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767) 07-31 23:13:11.780:エラー/ AndroidRuntime(1384):android.app.ActivityThread.access $ 1500(ActivityThread.java:122) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.app.ActivityThread $ H.handleMessage ActivityThread.java:1005) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.os.Handler.dispatchMessage(Handler.java:99) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):at android.os.Looper.loop(Looper.java:132) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.app.ActivityThread.main(ActivityThread.java:4028) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):java.lang.reflect.Method.invokeNative(ネイティブメソッド) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):java.lang.reflect .Method.invoke(Method.java:491) 07-31 23:13:11.780:エラー/ AndroidRuntime(1384):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:844) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 07-31 23:13:11.780:エラー/ AndroidRuntime(1384):dalvik.system.NativeStart.main(ネイティブメソッド) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):原因:java .lang.IllegalArgumentException:ネイティブライブラリを読み込めません:/data/data/com.Mythica.SpiderGame/lib/libSpiderGame.so 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.app.NativeActivity .onCreate(NativeActivity.java:199) 07-31 23:13:11.780:ERROR/AndroidRuntime(1384):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 07-31 23:13:11.780 :ERROR/AndroidRuntime(1384):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715) 07-31 23:13:11.780:エラー/ AndroidRuntime(1384):... 11もっと詳しく 07-31 23 :13:11.780:WARN/ActivityManager(288):強制終了アクティビティcom.Mythica.SpiderGame /とroid.app.NativeActivity 07-31 23:13:11.800:ERROR/android.os.Debug(288):Dumpstate>/data/log/dumpstate_app_error

+0

あなたの.soはどこですか?あなたのデバイスはNativeActivityをサポートしていますか? – qrtt1

+0

私は自分の.soが依存関係として.apkに組み込まれていると思ったが、その仮定は無効でなければならない。このデバイスはNativeActivityをサポートしています。 – ALF

答えて

0

私の問題を解決する方法は、ライブラリを共有オブジェクトではなく静的オブジェクトとして使用します。 MyAppはMyLibraryを参照します。スタティックリンクは仕事をしているので、私はその理論をテストしていませんが、共有ライブラリは実行時に手動でデバイスにコピーしなければならないと思います。

私が正しい場合、NativeActivityが組み込まれていたのと同じように、自分の.apkに自分の共有ライブラリが組み込まれていると思われるという誤った仮定がありました。

0

NDKのdocs/PREBUILTS.htmlを読んでください。あなたのAndroid.mkファイルに次のように見ているセクションを追加することができます。

# 
# Include prebuilt shared library 
# 
include $(CLEAR_VARS) 
LOCAL_MODULE := MyLibrary-prebuilt 
LOCAL_SRC_FILES := relative/path/to/MyLibrary.so 
LOCAL_EXPORT_C_INCLUDES := relative/path/to/includes 
include $(PREBUILT_SHARED_LIBRARY) 

、その後、あなたはこれを入れて、あなたのAndroid.mkの終わりにBUILD_SHARED_LIBRARYを呼び出す直前に:

LOCAL_SHARED_LIBRARIES := MyLibrary-prebuilt 

この何らかの形で、ndkビルドシステムの外部でARMのライブラリをクロスコンパイルすることができたと仮定しています。 ndk-buildの中から共有ライブラリをビルドしたいのであれば、ネイティブのアクティビティ用に.soをビルドするのと同じ方法で行います。

関連する問題