【发布时间】:2016-05-29 12:29:28
【问题描述】:
我使用 Android Studio,开始使用 SDK 版本 23 来编码和构建应用程序,一切运行正常。但该应用程序仅适用于手机将 android 5.0 及更高版本。 我想为 Andriod 4.4 制作一个新版本。所以我在Android Studio中下载了SDK 19,然后点击app->打开模块设置->flavors->miniSdkversion为19。可以编译,但是运行时不工作并得到以下错误。 然后我也设置了targetSDK Version为19。同样,得到如下错误:
29 20:17:44.698 3699-3699/com.hanjing.flocking E/AndroidRuntime: FATAL EXCEPTION: main java.lang.ExceptionInInitializerError 在 java.lang.Class.newInstanceImpl(本机方法) 在 java.lang.Class.newInstance(Class.java:1319) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1068) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 在 android.app.ActivityThread.access$700(ActivityThread.java:140) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4921) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 在 dalvik.system.NativeStart.main(本机方法) 原因:java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1307]: 1874 cannot locate 'rand'...
at java.lang.Runtime.loadLibrary(Runtime.java:370)
at java.lang.System.loadLibrary(System.java:535)
at com.example.mac.flocking.MainActivity.<clinit>(MainActivity.java:37)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
如果我还将编译版本和构建工具版本设置为 19,编译时会显示错误。
所以我真的不知道我应该做什么。我只想制作一个可以在较低的Android手机上运行的新版本。
请帮忙!非常感谢!
精
这是 build.gradle: // 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
【问题讨论】:
-
请提供minimal reproducible example。在这种情况下,除了您的堆栈跟踪之外,它还将包含
MainActivity的代码,尤其是包含第 37 行的方法,您的异常来自哪里。 -
你能发布你的 build.gradle
-
这是 build.gradle: // 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0' // 注意:不要将应用程序依赖项放在这里;它们属于 // 在单个模块 build.gradle 文件中 } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
-
@CommonsWare,第 37 行是 System.loadLibrary("softControl-jni");