Ale*_*der 5 java android android-ndk
今天发现了一些项目,演示了android ndk编程。这是这个项目
\n\n我正在尝试启动项目DroidBlaster。我已经编译了所有本机库,没有错误。这是结果:
\n\n
我只是做了一些小改变:
\n\n1)。添加到选项application中的标签AndroidManifest.xmlandroid:hasCode="true"
2)。我从本机活动扩展并加载static活动块中的所有库。
我这样做是因为,如果没有这个更改,android 无法找到在(这是作者的代码)libdroidblaster.so中声明的库:AndroidManifest.xml
<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>\nRun Code Online (Sandbox Code Playgroud)\n\n现在我的AndroidManifest.xml样子:
<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>\nRun Code Online (Sandbox Code Playgroud)\n\n我的新活动:
\n\npublic 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}\nRun Code Online (Sandbox Code Playgroud)\n\n当我尝试启动应用程序时,出现以下错误:
\n\n\n\n\n06-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\njava.lang.IllegalArgumentException: Unable to find native library: main\nRun Code Online (Sandbox Code Playgroud)\n\n我找不到解决此问题的解决方案。
\n\n有谁知道如何修理它?
\n