Android java.lang.IllegalArgumentException:无法找到本机库:main

Ale*_*der 5 java android android-ndk

今天发现了一些项目,演示了android ndk编程。这是这个项目

\n\n

我正在尝试启动项目DroidBlaster。我已经编译了所有本机库,没有错误。这是结果:

\n\n

编译的 droidblaster 库

\n\n

我只是做了一些小改变:

\n\n

1)。添加到选项application中的标签AndroidManifest.xmlandroid:hasCode="true"

\n\n

2)。我从本机活动扩展并加载static活动块中的所有库。

\n\n

我这样做是因为,如果没有这个更改,android 无法找到在(这是作者的代码)libdroidblaster.so中声明的库:AndroidManifest.xml

\n\n
<activity\n            android:name="android.app.NativeActivity"\n            android:label="@string/app_name" >\n            <meta-data\n                android:name="android.app.lib_name"\n                android:value="droidblaster" />\n\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n        </activity>\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我的AndroidManifest.xml样子:

\n\n
<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n    package="com.demo.droidblaster"\n    android:versionCode="1"\n    android:versionName="1.0" >\n\n    <uses-sdk\n        android:minSdkVersion="10"\n        android:targetSdkVersion="22" />\n\n    <application\n        android:icon="@drawable/ic_launcher"\n        android:label="@string/app_name"\n        android:theme="@style/AppTheme"\n        android:hasCode="true">\n\n        <activity android:name=".MainActivity"\n                  android:label="@string/app_name"\n                  android:configChanges="orientation|keyboardHidden">\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n        </activity>\n\n        <activity\n            android:name="android.app.NativeActivity"\n            android:label="@string/app_name" >\n            <meta-data\n                android:name="android.app.lib_name"\n                android:value="droidblaster" />\n        </activity>\n    </application>\n\n    <uses-permission android:name="android.permission.RECORD_AUDIO" />\n\n</manifest>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的新活动

\n\n
public class MainActivity extends NativeActivity {\n    static {\n        System.loadLibrary("irrlicht");\n        System.loadLibrary("droidblaster");\n    }\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我尝试启动应用程序时,出现以下错误:

\n\n
\n

06-05 12:56:26.523 11528-11528/com.demo.droidblaster\n E/AndroidRuntime\xef\xb9\x95 致命异常:main\n 进程:com.demo.droidblaster,PID:11528\n java.lang .RuntimeException:无法启动活动 ComponentInfo{com.demo.droidblaster/com.demo.droidblaster.MainActivity}:\n java.lang.IllegalArgumentException:无法在 android.app.ActivityThread 中找到本机库:\n main\n。 PerformLaunchActivity(ActivityThread.java:2658)\n 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)\n 在 android.app.ActivityThread.access$900(ActivityThread.java:172)\n 在 android.app。 ActivityThread$H.handleMessage(ActivityThread.java:1422)\n 在 android.os.Handler.dispatchMessage(Handler.java:102)\n 在 android.os.Looper.loop(Looper.java:145)\n 在 android .app.ActivityThread.main(ActivityThread.java:5832)\n 在 java.lang.reflect.Method.invoke(本机方法)\n 在 java.lang.reflect.Method.invoke(Method.java:372)\n在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)\n 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)\n 引起:java.lang .IllegalArgumentException:无法找到本机库:main\n 位于 android.app.NativeActivity.onCreate(NativeActivity.java:170)\n 位于 com.demo.droidblaster.MainActivity.onCreate(MainActivity.java:17)\n 位于 android .app.Activity.performCreate(Activity.java:6221)\n 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)\n 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)\n \ xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at android.app .ActivityThread.handleLaunchActivity(ActivityThread.java:2723)\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\ xc2\xa0\xc2\xa0\xc2\xa0at android.app.ActivityThread.access$900(ActivityThread.java:172)\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2 \xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)\n \xc2\xa0\xc2 \xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at android.os.Handler.dispatchMessage( Handler.java:102)\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2 \xa0\xc2\xa0at android.os.Looper.loop(Looper.java:145)\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at android.app.ActivityThread.main(ActivityThread.java:5832)\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2 \xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at java.lang.reflect.Method.invoke(本机方法)\n \ xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at java.lang .reflect.方法。调用(Method.java:372)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

\n
\n\n

所以,原因是:

\n\n
java.lang.IllegalArgumentException: Unable to find native library: main\n
Run Code Online (Sandbox Code Playgroud)\n\n

我找不到解决此问题的解决方案。

\n\n

有谁知道如何修理它?

\n