在build.gradle文件android studio中指定.so文件
这是我的目录结构在build.gradle文件android studio中指定.so文件,android,android-studio,java-native-interface,build.gradle,.so,Android,Android Studio,Java Native Interface,Build.gradle,.so,这是我的目录结构 src -main -java -jniLibs -armeabi -lib1.so -lib2.so 需要了解构建梯度文件中应该编写哪些代码,才能将这些文件包含在构建中。 现在,我遇到了找不到.so文件的错误。 跟随 我必须补充一点 我的bUild.gradle文件 apply plugin: 'com.android.applicati
src -main
-java
-jniLibs
-armeabi
-lib1.so
-lib2.so
需要了解构建梯度文件中应该编写哪些代码,才能将这些文件包含在构建中。
现在,我遇到了找不到.so文件的错误。
跟随
我必须补充一点
我的bUild.gradle文件
apply plugin: 'com.android.application'
android {
productFlavors {
arm {
ndk {
abiFilters "armeabi-v7a", "armeabi"
}
}
}
sourceSets
{
main
{
jniLibs.srcDirs = ['src/main/jnilibs']
}
//Another code
}
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
applicationId "com.goambee.biometricziqitza"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86, armeabi-v7a, and mips.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
// compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
}
//task native-libstiveLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
// destinationDir file("$buildDir/native-libs")
// baseName 'native-libs'
// from fileTree(dir: 'src/main/jnilibs', include: '**/*.so')
// into 'lib/'
//}
//
//tasks.withType(JavaCompile)
// {
// compileTask -> compileTask.dependsOn(nativeLibsToJar)
// }
我在这里包括了源代码集块,我也在没有该块的情况下进行了测试。
因此,仍然生成无法访问.So文件。如果要使用它,可以在类中这样调用它:
static {
System.loadLibrary("libSONAME");
}
compile project(':videokit')
在您的渐变中添加以下内容:
jniLibs.srcDirs = ['libs']
编辑:
在Android Studio中添加.so库
在“src/main/”内创建文件夹“jniLibs”
将所有.so库放在“src/main/jniLibs”文件夹中
文件夹结构看起来像,
|--应用程序:
|--|--src:
|--|--|--主要
|--|--|--|--jniLibs
|--|--|--|--|--armeabi
|--|--|--|--|--|--.so文件
|--|--|--|--|--x86
|--|--|--|--|--|--.so文件
无需额外代码,只需同步项目并运行
应用程序
参考
不知道你到底有什么文件,如果你只有的话。那么
查看下图:
这是我的项目中的一个“项目/库”,这是加载.so文件的方式:
我这样编译项目:
static {
System.loadLibrary("libSONAME");
}
compile project(':videokit')
如果您想使用它,可以在类中这样调用它:
static {
System.loadLibrary("libSONAME");
}
compile project(':videokit')
在您的渐变中添加以下内容:
jniLibs.srcDirs = ['libs']
编辑:
在Android Studio中添加.so库
在“src/main/”内创建文件夹“jniLibs”
将所有.so库放在“src/main/jniLibs”文件夹中
文件夹结构看起来像,
|--应用程序:
|--|--src:
|--|--|--主要
|--|--|--|--jniLibs
|--|--|--|--|--armeabi
|--|--|--|--|--|--.so文件
|--|--|--|--|--x86
|--|--|--|--|--|--.so文件
无需额外代码,只需同步项目并运行
应用程序
参考
不知道你到底有什么文件,如果你只有的话。那么
查看下图:
这是我的项目中的一个“项目/库”,这是加载.so文件的方式:
我这样编译项目:
static {
System.loadLibrary("libSONAME");
}
compile project(':videokit')
您正在尝试构建库,还是希望直接在应用程序中运行.so文件?使用这些.so文件如果使用.so文件,则无需在gradle中执行任何操作。。您可以直接从文件夹中使用它。您使用android NDK构建.so文件了吗?好吧,我还没有在build.gradle中编写任何代码,正如我所展示的结构,这些.so文件位于src/main/jniLibs中,但它不起作用,因为它失败并出现错误“找不到一些.so文件”。我该怎么办?您是在尝试构建库还是希望直接在应用程序中运行.so文件?使用这些.so文件如果使用.so文件,则不必在gradle中执行任何操作。。您可以直接从文件夹中使用它。您使用android NDK构建.so文件了吗?好吧,我还没有在build.gradle中编写任何代码,正如我所展示的结构,这些.so文件位于src/main/jniLibs中,但它不起作用,因为它失败并出现错误“找不到一些.so文件”。我该怎么办?不太可能。错误消息表明loadLibrary失败,而不是本机方法无法运行resolved@H.Brooks,当此代码运行时。我已将其作为MainActivity中的一个方法,但仍会给出相同的错误。@H.Brooks,在以下行捕获异常-'catch(UnsatisfiedLinkError e){System.out.println(“静态块中的未满足链接错误”);e.printStackTrace();}'您能告诉我您是如何尝试实现和使用.so文件的吗?我该怎么做,我应该编辑原始问题并添加图像,还是有办法在注释中发送图像。不太可能。错误消息表明loadLibrary失败,而不是无法使用本机方法resolved@H.Brooks,当此代码运行时。我已将t作为我的MainActivity中的一个方法,仍然会给出相同的错误。@H.Brooks,在以下行捕获异常-'catch(unsatifiedlinkerror e){System.out.println(“静态块中的unsatifiedlinkerror”);e.printStackTrace();}'您能告诉我您是如何尝试实现和使用.so文件的吗?我该怎么做?我应该编辑原始问题并添加图像,还是有办法在评论中发送图像。