我已将Gradle标记添加到此线程,因为我觉得我的build.gradle文件缺少所需的配置。下面是我的文件的副本。我遇到的问题是我不知道为什么我的共享库文件没有进入我的apks。而且我想通过阅读Gradle手册,我看到告诉告诉我在这个文件中需要什么,但我想确定。
sansari@ubuntu:~/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。我刚打电话给我的第三个项目。我不确定如何添加-1。我想知道如何解决这个问题,并了解为什么加载器正在查找该目录?我的/ 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:
谢谢大家的帮助。它终于奏效了。我用谷歌搜索“如何使用gradle将库文件添加到apk”,这个小宝石出现了:“在android工作室的apk中包含.so库[重复]”它在stackoverflow上。我不确定我是否有权发布网址。在其中,有关于早期版本的Gradle中包含库的错误的评论。其中一个链接有一个关于使用jniLibs文件夹作为放置共享库的目录的注释。所以我抓住机会将所有共享库文件从libs复制到jniLibs。我创建了jniLibs并复制了文件和瞧。再次感谢你们所有人。你们好棒。
答案 0 :(得分:3)
如果您的.so文件现在在libs/<abi>
内生成,则唯一剩下的步骤是让Android Studio集成libs
文件夹中的这些文件。
默认情况下,它会在jniLibs
中查找.so文件,但您可以更改它以集成libs
文件夹中的文件:
android {
...
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
}
}
答案 1 :(得分:2)
尝试文件 - &gt;使高速缓存/重新启动无效。
它对我有用。
答案 2 :(得分:0)
我也有类似的问题。 apk用于在Ubuntu中正确构建,但在Windows中,apk错过了lib文件夹。
显然错误是jniLibs
文件夹的命名。我将它命名为jnilibs
全部用小写字母引起问题。我已将其更正为jniLibs并且apk正在Windows上正确构建。
希望这有帮助。