【发布时间】:2015-06-05 13:15:35
【问题描述】:
今天找到了一些项目,演示了android ndk编程。这里是this projects
我正在尝试启动项目 DroidBlaster。我已经编译了所有本机库,没有错误。结果如下:
我只是做了一些小改动:
1)。在AndroidManifest.xml选项android:hasCode="true"中添加到application标签
2)。我从原生活动扩展并在static 活动块中加载所有库。
我这样做是因为,如果没有这些更改,android 无法找到在 AndroidManifest.xml 中声明的库 libdroidblaster.so(这是作者的代码):
<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);
}
}
当我尝试启动应用程序时,我收到此错误:
06-05 12:56:26.523 11528-11528/com.demo.droidblaster E/AndroidRuntime: FATAL EXCEPTION: main 进程: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)
所以,原因是:
java.lang.IllegalArgumentException: Unable to find native library: main
我找不到解决此问题的方法。
有人知道怎么解决吗?
【问题讨论】:
标签: java android android-ndk