为什么我的本地库没有加载?
我已经将Gradle标记添加到此线程,因为我觉得我的build.gradle文件缺少所需的配置。以下是我的文件的副本。我遇到的问题是我不知道为什么我的共享库文件不能将其存入我的apks。我想通过阅读Gradle手册可以看到告诉我在这个文件中需要什么,但我想确定。为什么我的本地库没有加载?
[email protected]:~/AndroidStudioProjects/ThirdNDK/app$ more build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.example.sansari.thirdndk"
minSdkVersion 19
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk
{
moduleName "HelloJNI"
}
}
sourceSets.main
{
jni.srcDirs = [] // ndk-build.cmd needs to be invoked from command line
jniLibs.srcDirs '/src/main/libs'
}
productFlavors
{
x86
{
ndk
{
abiFilter "x86"
}
}
armv7a
{
ndk
{
abiFilter "armeabi-v7a"
}
}
arm {
//flavorDimension "abi"
ndk
{
abiFilter "armeabi"
versionCode = 1;
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
}
我在Android Studio中尝试了原生代码的项目,我碰到下面的错误。但我不知道为什么装载机正在查看该目录。或者为什么该文件夹被称为com.example.sansari.thiredndk-1。我只是打电话给我的项目thirdndk。我不知道如何添加-1。我想知道我该如何解决这个问题,并了解为什么加载程序正在查找该目录? My/libs文件夹位于项目的主目录中。
java.lang.UnsatisfiedLinkError: Couldn't load HelloJNI from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.sansari.thirdndk-1.apk,libraryPath=/data/app-lib/com.example.sansari.thirdndk-1]: findLibrary returned null
@Preethi。谢谢;我会看看。我输入它很快。
@Preethi或其他任何人;我似乎没有任何运气。这里是apk:
谢谢大家的帮助。它终于奏效了。我搜索了“如何添加库文件到apk与gradle”,并且这个小宝石出现了:“包含.so库在android工作室的apk中”[复制]“这是在stackoverflow。我不确定我是否有权发布网址。其中,有关早期版本的Gradle中包含库的错误的评论。其中的一个链接有关于使用jniLibs文件夹作为共享库的目录的评论。因此,我抓住了机会,将所有共享库文件从libs复制到jniLibs。我创建了jniLibs并复制了这些文件和瞧。再次感谢你们所有人。你们好棒。
尝试文件 - >无效缓存/重新启动。
它为我工作。
如果您的.so文件现在在libs/<abi>
内部生成,则剩下的唯一步骤是使Android Studio将这些文件从libs
文件夹中整合。
默认情况下,它看起来对内部jniLibs
.so文件,但你可以改变它,以便从libs
文件夹中集成了文件:
android {
...
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
}
}
我也有类似的问题。 apk用于在Ubuntu中正确构建,但在Windows中,apk未命中lib文件夹。
显然这个错误命名为jniLibs
文件夹。我把它命名为jnilibs
全部以小写字母出现,这是造成问题的原因。我已经将其更正为jniLibs,并且apk在Windows上正确构建。
希望这会有所帮助。
如果您的android.mk文件中出现错误,通常会发生 – 2015-03-25 04:39:19
运行ndk-build时会出现错误吗? – samgak 2015-03-25 05:47:36
使用'-1'的文件夹名称超出了您的控制范围,并且完全可以。您向我们展示的文件是您的** Android.mk **,除了评论,它看起来很好。但是您正在使用* Android Studio *,它没有完整的NDK集成。你为什么认为你的本地代码是根本编译的? – 2015-03-25 06:49:21