我的项目有两件事。
ndk-build
提到了很多问题,并尝试了很多回复。但它们都不适合我。
以下是我的疑惑,
请帮助我完成必要的步骤。
答案 0 :(得分:3)
最后我找到了答案。
修改应用程序的build.gradle文件...如下所示
android.ndk {
moduleName = "AEC"
ldLibs += ["android", "OpenSLES", "log"]
ldFlags += "/home/lone/AndroidStudioProjects/AcousticEchoCanceller/app/src/main/jni/prebuilt/libToneDetect.a"
ldFlags += "/home/lone/AndroidStudioProjects/AcousticEchoCanceller/app/src/main/jni/prebuilt/libAec.a"
CFlags += ['-std=c99']
}
注意:仅当库和体系结构相同时才有效。而apk正在构建仅1平台
答案 1 :(得分:2)
gradle-experimental 0.2.0现在已经很老了。我有0.7.2的解决方案。
把这个Android的外部{}
repositories {
libs(PrebuiltLibraries) {
yourlib {
headers.srcDir "src/main/jni/prebuilts/include"
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("src/main/jni/prebuilts/${targetPlatform.getName()}/libyourlib.so")
}
}
}
}
此代码在Android {}
中 sources {
main {
jni {
dependencies {
library "yourlib" linkage "shared"
}
}
}
}
代码来自:Xavier Hallade post
答案 2 :(得分:1)
Hello-libs也可能是有用的:它构建2个库并在应用程序中使用它们。构建库和使用库可以解耦;如需使用,请查看app / build.gradle
示例用于共享库;按照上面的注释gperf为build.gradle中的静态库[不要将静态库放入jniLibs文件夹,不需要],它会起作用。
CMake + android studio类似且更简单[它们在master-cmake分支中]
答案 3 :(得分:0)
文件夹结构在引用静态库时相对重要,我将指出我的结构,显然它对你来说会略有不同,但希望这会让事情略有不同。首先:
在我的(C :)驱动器中我有一个名为Projects的文件夹,它是我所有Android工作室项目的主页,在这个文件夹中我有我的库,以及我正在处理的应用程序的根目录(其中)使用库)
下一步是打开你想要使用库的项目,并包含这几行代码。
展开“Gradle Scripts”并打开“build.gradle(module:app)”并在依赖项下添加此项 - 编译项目(路径:“:library”)
接下来打开'settings.gradle(项目设置)'你会看到这个 - 包括':app'
编辑上面的行以阅读包含':app',':library' 在下面的行中添加这个 - 'project(“:library”)。projectDir = new File(“../(yourlibraryfoldernamehere)/ library”)'
那应该做的伎俩,希望这有帮助,如果有什么不清楚给我一个喊,我会尝试协助或解释更好!祝你好运!