Android java.lang.IllegalArgumentException:无法找到本机库:main [英] Android java.lang.IllegalArgumentException: Unable to find native library: main
问题描述
今天,我找到了一些项目,这些项目演示了android ndk编程.这是此项目
Today I found some projects, which demonstrates android ndk programming. Here is this projects
我正在尝试启动项目 DroidBlaster .我已经编译了所有本机库,没有错误.结果如下:
I'm trying to start project DroidBlaster. I have compiled all native libraries without errors. Here is result:
我只是做了一些小改动:
I just made some small changes:
1).已添加到AndroidManifest.xml
选项android:hasCode="true"
1). Added to application
tag in AndroidManifest.xml
option android:hasCode="true"
2).我从本地活动扩展,并在活动的static
块中加载了所有库.
2). I extended from native activity and load all libraries in static
block of activity.
我这样做是因为,如果不进行此更改,Android将无法找到在AndroidManifest.xml
(此处为作者的代码)中声明的库libdroidblaster.so
:
I did this, because, without this changes, android can't find library libdroidblaster.so
which was declared in AndroidManifest.xml
(Here is code from author):
<activity
android:name="android.app.NativeActivity"
android:label="@string/app_name" >
<meta-data
android:name="android.app.lib_name"
android:value="droidblaster" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
现在我的AndroidManifest.xml
看起来像:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.demo.droidblaster"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="22" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:hasCode="true">
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="android.app.NativeActivity"
android:label="@string/app_name" >
<meta-data
android:name="android.app.lib_name"
android:value="droidblaster" />
</activity>
</application>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
</manifest>
还有我的新活动:
public class MainActivity extends NativeActivity {
static {
System.loadLibrary("irrlicht");
System.loadLibrary("droidblaster");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
当我尝试启动应用程序时,出现此错误:
When I try to start app, I get this error:
06-05 12:56:26.523 11528-11528/com.demo.droidblaster E/AndroidRuntime:致命异常:主要 流程:com.demo.droidblaster,PID:11528 java.lang.RuntimeException:无法启动活动ComponentInfo {com.demo.droidblaster/com.demo.droidblaster.MainActivity}: java.lang.IllegalArgumentException:无法找到本机库: 主要的 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 在android.app.ActivityThread.access $ 900(ActivityThread.java:172) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1422) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:145) 在android.app.ActivityThread.main(ActivityThread.java:5832) 在java.lang.reflect.Method.invoke(本机方法) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 引起原因:java.lang.IllegalArgumentException:无法找到本机库:main 在android.app.NativeActivity.onCreate(NativeActivity.java:170) 在com.demo.droidblaster.MainActivity.onCreate(MainActivity.java:17) 在android.app.Activity.performCreate(Activity.java:6221) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 在android.app.ActivityThread.access $ 900(ActivityThread.java:172) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1422) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:145) 在android.app.ActivityThread.main(ActivityThread.java:5832) 在java.lang.reflect.Method.invoke(本机方法) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
06-05 12:56:26.523 11528-11528/com.demo.droidblaster E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.demo.droidblaster, PID: 11528 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.demo.droidblaster/com.demo.droidblaster.MainActivity}: java.lang.IllegalArgumentException: Unable to find native library: main at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) at android.app.ActivityThread.access$900(ActivityThread.java:172) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5832) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) Caused by: java.lang.IllegalArgumentException: Unable to find native library: main at android.app.NativeActivity.onCreate(NativeActivity.java:170) at com.demo.droidblaster.MainActivity.onCreate(MainActivity.java:17) at android.app.Activity.performCreate(Activity.java:6221) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) at android.app.ActivityThread.access$900(ActivityThread.java:172) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5832) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
因此,原因是:
java.lang.IllegalArgumentException: Unable to find native library: main
我找不到解决此问题的解决方案.
I can't find a solution to fix this problem.
有人知道如何解决吗?
推荐答案
.so
文件.请按照此处给出的答案将其包括在内: https://stackoverflow.com/a/17131418/1395437
.so
files are not automatically included by Android Studio. Follow the answer given here to include them: https://stackoverflow.com/a/17131418/1395437
这篇关于Android java.lang.IllegalArgumentException:无法找到本机库:main的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!