我目前正在android studio 3.0.1中使用cpp支持的android库。 因此,我开始进行一些测试来检查功能并得到以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no native-lib in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at com.pmdtec.testproject.TestClass.<clinit>(TestClass.java:6)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:107)
我的源文件是:
TestProject /应用/ SRC / JAVA / COM /示例/ TestClass.java
package com.example;
public class TestClass
{
static {
System.loadLibrary("native-lib");
}
public static void main(String[] args)
{
new TestClass().helloNative();
}
native void helloNative();
}
TestProject /应用/ SRC / CPP /天然-lib.cpp
#include <jni.h>
extern "C"
JNIEXPORT void JNICALL
Java_com_example_TestClass_helloNative(JNIEnv *env, jobject instance)
{
// implement later
}
我还在TestProject / gradle.properties中添加了“android.enableAapt2 = false”,因为gradle构建出现了此错误(此错误不再发生。我只是想记录它,以及为什么我将属性添加到gradle.properties)
Information:Gradle: Executing tasks: [:app:assembleDebug]
Information:Gradle: BUILD FAILED in 4s
Information:15.01.2018 11:46 - Compilation completed with 5 errors and 0 warnings in 6s 736ms
Error:Gradle: failed to create directory 'D:\workspace\TestProject\app\build\generated\source\r\debug\com\example'.
Error:Gradle: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Gradle: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Gradle: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Gradle: Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
此处未显示的文件是生成的文件。 所以我的问题是,有谁知道为什么我会在这篇文章的顶部提到错误?
更多细节:
生成的.apk包含以下文件
/lib/arm64-v8a/libnative-lib.so
/lib/armeabi-v7a/libnative-lib.so
/lib/x86/libnative-lib.so
/lib/x86_64/libnative-lib.so
/META-INF/...
/res/...
AndroidManifest.xml
classes.dex
resources.arsc
我有什么需要做的,所以native-lib是链接的吗?
非常感谢您的支持!
亲切的问候 Robert A. Fritsch
答案 0 :(得分:0)
感谢大家阅读我的问题。 事实证明,我必须在设备上运行我的代码。 如果您使用android来构建它,则无法通过main方法测试导航代码。
亲切的问候 Robert A. Fritsch