Android java.lang.IllegalArgumentException:无法找到本机库:main [英] Android java.lang.IllegalArgumentException: Unable to find native library: main

查看:106
本文介绍了Android java.lang.IllegalArgumentException:无法找到本机库: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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆