Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android NDK应用程序中android.app.NativeActivity.onCreate()的异常(仅限android 6.0)_Android_Exception_Android Ndk_Native - Fatal编程技术网

android NDK应用程序中android.app.NativeActivity.onCreate()的异常(仅限android 6.0)

android NDK应用程序中android.app.NativeActivity.onCreate()的异常(仅限android 6.0),android,exception,android-ndk,native,Android,Exception,Android Ndk,Native,我最近更新了Android Studio和所有SDK库(2019年6月),突然,我的一些用户在应用程序启动时开始遇到这种崩溃 就我所见,这只发生在Android 6.0上 该应用程序是一个Android原生应用程序,使用NDK和App\u glue基类,内置compiledSDK=26 其他人也经历过类似的事情吗 我没有安卓6.0手机。我试图创建一个虚拟设备,但无法在虚拟设备上复制该问题。 它可以完美地为成千上万的其他玩家(安卓7、8、9)工作 这是异常调用堆栈=================

我最近更新了Android Studio和所有SDK库(2019年6月),突然,我的一些用户在应用程序启动时开始遇到这种崩溃

就我所见,这只发生在Android 6.0上

该应用程序是一个Android原生应用程序,使用NDK和
App\u glue
基类,内置compiledSDK=26

其他人也经历过类似的事情吗

我没有安卓6.0手机。我试图创建一个虚拟设备,但无法在虚拟设备上复制该问题。 它可以完美地为成千上万的其他玩家(安卓7、8、9)工作

这是异常调用堆栈=================================

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity 
(ActivityThread.java:3253)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349)
  at android.app.ActivityThread.access$1100 (ActivityThread.java:221)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1794)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:158)
  at android.app.ActivityThread.main (ActivityThread.java:7224)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)

Caused by: java.lang.IllegalArgumentException: 
  at android.app.NativeActivity.onCreate (NativeActivity.java:170)
  at android.app.Activity.performCreate (Activity.java:6876)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1135)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206)

更新: 此问题仅在最新版本3.4.1中出现 当我回到3.2.1时,崩溃消失了。 Gradle似乎做了一些不同的事情,导致Android 6.0中的应用程序崩溃

如果您签入(下一个是3年零7个月前的,应该超过6.0),您会发现抛出一个
IllegalArgumentException

mNativeHandle = loadNativeCode(path, funcname, Looper.myQueue(),
        getAbsolutePath(getFilesDir()), getAbsolutePath(getObbDir()),
        getAbsolutePath(getExternalFilesDir(null)),
        Build.VERSION.SDK_INT, getAssets(), nativeSavedState);
if (mNativeHandle == 0) {
    throw new IllegalArgumentException("Unable to load native library: " + path);
}
这意味着无法找到您的本机库(或某些引用库),或者可能由于某种原因无法加载它


我将使用Cmd-shift-A->“Analyze APK…”检查是否所有本机库都存在所有体系结构。一个可能的问题是,出于某种原因,它被排除在某些体系结构之外,正因为如此,它在大多数设备上都能工作,但在某些设备上却失败了。

此调试文本还不够,因为“IllegalArgumentException”发生在刚刚新建/创建的活动中,可能发生在其“on…()”方法中。请检查可能引发该异常的内容(可能是您抛出了该异常?或者可能是某个库?),这似乎是合理的解释。我将进行检查并报告任何结果。感谢您的回复,希望这有助于找到根本原因。该异常是从此行引发的:
String path=null;File libraryFile=新文件(ai.applicationInfo.nativeLibraryDir,System.mapLibraryName(libname));if(libraryFile.exists()){path=libraryFile.getPath();}if(path==null){抛出新的IllegalArgumentException(“找不到本机库:“+libname”);}
这只是检查文件是否存在。我仍然不明白为什么只有在某些Android 6.0中才会发生这种情况。该文件试图查找的是您的本机库。出现这种情况的原因有很多,其中一个是64位环境中的混合库体系结构。基本上,这意味着您必须拥有所有受支持体系结构中的所有库。例如,如果只编译库的32位arch,但包含另一个同时具有32位和64位的库,则加载可能会失败。请看:我发现了一个解决问题的方法,就是恢复到以前的gradle版本:classpath'com.android.tools.build:gradle:3.2.1'。错误的Gradle是classpath“com.android.tools.build:Gradle:3.4.1”。我不知道Gradle是否对Android 6.0崩溃负有全部责任,但恢复到以前的版本似乎可以避免这个问题。我将尝试与gradle团队就此进行沟通。谢谢你的帮助。