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

Android java.lang.IllegalArgumentException:找不到本机库:main,java,android,android-ndk,Java,Android,Android Ndk,今天我发现了一些展示android ndk编程的项目。这是 我正在尝试启动DroidBlaster项目。我编译了所有本机库,没有错误。结果如下: 我只是做了一些小改动: 1) 。添加到AndroidManifest.xml中的application标记optionandroid:hasCode=“true” 2) 。我从本机活动扩展并加载活动的static块中的所有库 我这样做是因为,如果没有这些更改,android无法找到库libdroidblaster.so,它是在AndroidManif

今天我发现了一些展示android ndk编程的项目。这是

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

我只是做了一些小改动:

1) 。添加到
AndroidManifest.xml中的
application
标记
option
android:hasCode=“true”

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

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

<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>
public class MainActivity extends NativeActivity {
    static {
        System.loadLibrary("irrlicht");
        System.loadLibrary("droidblaster");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
还有我的新活动:

<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>
public class MainActivity extends NativeActivity {
    static {
        System.loadLibrary("irrlicht");
        System.loadLibrary("droidblaster");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
当我尝试启动应用程序时,出现以下错误:

06-05 12:56:26.523 11528-11528/com.demo.droidblaster E/AndroidRuntime﹕ 致命异常:主 进程:com.demo.droidblaster,PID:11528 java.lang.RuntimeException:无法启动活动组件信息{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)

因此,原因是:

java.lang.IllegalArgumentException: Unable to find native library: main
我找不到解决这个问题的办法


有人知道如何修复它吗?

。因此,Android Studio不会自动包含
文件。请按照此处给出的答案进行添加:

您可以尝试安装带有ndk支持集成(experemental)的新gradle。 将有android.ndk框(在gradle.build中),您应该在其中添加原生的安卓胶水:

android.ndk{

    moduleName = "droidblaster"
    CFlags.add("-I${file("src/main/jni/android_native_app_glue")}".toString())
    ldLibs.addAll(["log", "android", "EGL", "GLESv1_CM"])

}

将NativeActivity更改为AppCompatActivity。

我认为您必须删除第二个活动,并将此标记添加到第一个活动中。

谢谢您提出的问题,但这对我没有帮助,而且我在将我的库添加到project中时没有问题。应用程序无法加载库“main”。我需要修复加载“main”库的问题,但没有问题lib‘droidblaster’。我会投票支持你的问题,这与我的问题有什么关系?
 externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_shared" //add this in the build.gradle

            }
        }