Android 有没有一种方法可以避免';如果我使用创建的ndk库,是否包含.so文件?

Android 有没有一种方法可以避免';如果我使用创建的ndk库,是否包含.so文件?,android,android-ndk,lib,ndk-build,Android,Android Ndk,Lib,Ndk Build,我创建了使用NDK ArCore的Android库 然后我构建了一个lib并得到了.aar文件。然后,我创建了一个新的示例项目,将这个.aar文件作为一个模块(import.JAR/.aar包)包含在内,并将其作为依赖项进行链接,所以一切正常 问题是-当我试图调用使用ArCore的方法时,我得到了这样的错误 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.ar, PID: 7822 java.lang.U

我创建了使用NDK ArCore的Android库

然后我构建了一个lib并得到了
.aar
文件。然后,我创建了一个新的示例项目,将这个
.aar
文件作为一个模块(import.JAR/.aar包)包含在内,并将其作为依赖项进行链接,所以一切正常

问题是-当我试图调用使用
ArCore
的方法时,我得到了这样的错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ar, PID: 7822
    java.lang.UnsatisfiedLinkError: dlopen failed: library "libarcore_sdk_c.so" not found
        at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
        at java.lang.System.loadLibrary(System.java:1669)
        at com..libtetplayer.JniInterface.<clinit>(JniInterface.java:32)
        at com..libtetplayer.JniInterface.createNativeApplication(Native Method)
        at com.example.ar.MainActivity.onCreate(MainActivity.kt:20)
        at android.app.Activity.performCreate(Activity.java:7326)
        at android.app.Activity.performCreate(Activity.java:7317)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:6990)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/AndroidRuntime:致命异常:主
进程:com.example.ar,PID:7822
java.lang.UnsatisfiedLinkError:dlopen失败:找不到库“libarcore_sdk_c.so”
位于java.lang.Runtime.loadLibrary0(Runtime.java:1016)
位于java.lang.System.loadLibrary(System.java:1669)
在com..libtetplayer.JniInterface.(JniInterface.java:32)
位于com..libtetplayer.JniInterface.createNativeApplication(本机方法)
在com.example.ar.MainActivity.onCreate上(MainActivity.kt:20)
位于android.app.Activity.performCreate(Activity.java:7326)
位于android.app.Activity.performCreate(Activity.java:7317)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:214)
位于android.app.ActivityThread.main(ActivityThread.java:6990)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
为了解决这个问题: 在我构建我的库之后,在build dir下有一些自动生成的文件,在那里我找到了
arcore native
dir,还有四个dir

我刚刚将这个源代码移动到
main
dir下的示例项目中,现在它完全可以工作了

问题是-是否有办法在实现库时不将此目录包含在
中。因此
文件在项目中?也许我需要将它们直接包含到lib中


p.S.因为每次询问想要实现我的lib的用户时都有点困难,还需要在
中包含一些dir。所以
文件…

你可以将
.so
文件从arcore native放在你的
.aar
文件中,它们将与你的lib一起交付。

听起来不错,但现在正如所说,它有不止一个
。所以
文件。。。我发布了另一个问题,我很困惑。
.aar
文件适用于您提供的库。这个库不应该再需要
com.google.ar:core
依赖项了,它应该在里面绑定了ARCore。