- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 .jar
.so
附带的依赖项里面的库。
library.jar
|
-----com/company
|
-----.class files
-----libs
|
-----libX.so
jar 利用了这个 .so
内部库,我正在构建一个使用 jar 的 Android 应用程序。
在我构建 apk 之前一切都很好:通过使用 7zip 探索它,我发现 .so
文件已经消失,导致使用该应用程序时出现各种错误。
那么有没有办法告诉 Gradle 不要排除 .so
构建时的文件?我不想将它们手动复制到我的 Android 项目中的文件夹中,因为我没有直接使用它们,而是使用 .jar
库是加载它们的库。
编辑 1:添加 build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.company.myapp"
minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/lib1.jar')
implementation files('libs/lib2.jar')
}
编辑2:这是按照@shizhen之前的建议解决的
1- 我的 .jar
包括 .so
libs
中的文件目录。我不得不将其重命名为 lib
.
2- 我解压了 .jar
收集 .so
文件。
3- 我创建了 src/jniLibs
文件夹并放入 .so
文件,每个文件在其各自的 <ANDROID_ABI>
中文件夹。
4- 我修改了 build.gradle
要包含的文件:
android {
...
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDir 'src/jniLibs'
}
}
}
5 - 等等!决赛.apk
现在包括 native 库。
最佳答案
Everything is good until after I build the apk : by exploring it using 7zip, I discover that the .so files have disappeared, leading to all sorts of errors when using the app.
我相信您的 jar 依赖项最初不是针对 android 的,但通常是针对 Java 的。
Android 应用程序使用.dex 格式,因此您所有的.jar 依赖项将被重新打包到一个或多个dex 文件中。您的 .so 文件将不会被使用,因为它在 jar 中。
So is there any way to tell Gradle not to exclude the .so files when building? I don't want to copy them manually into a folder in my Android Project, since I'm not using them directly, but the .jar library is the one loading them.
因此,为了使您的 jar 适应 Android 应用程序,您必须解压 jar 并取出所有 .so 文件并手动> 将它们放入 src/jniLibs/<ANDROID_ABI>/
,例如
jniLibs
├── arm64-v8a
│ ├── libxxx.so
│ └── libyyy.so
├── armeabi-v7a
│ ├── libxxx.so
│ └── libyyy.so
├── x86
│ ├── libxxx.so
│ └── libyyy.so
└── x86_64
├── libxxx.so
└── libyyy.so
关于android - 如何告诉 Gradle 不要在我的 .jar 依赖项中排除 .so 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521953/
在 spring-security项目,在 build.gradle文件,以下插件可用: apply plugin: 'io.spring.nohttp' apply plugin: 'locks'
我正在尝试使用gradle任务作为“与操作系统无关的shell脚本”。我在编写构建文件的逻辑时没有问题,但是我希望能够从任何文件夹中运行它。 我的第一次尝试是在路径上放置一个带有build.gradl
我在同一目录下有三个具有不同名称的build.gradle dev.build.gradle uat.build.gradle prd.build.gradle 我有4期 “gradle build”
乡亲们 有谁知道如何使用gradle与自定义的build.gradle和settings.gradle一起运行-即两者在一起? 我认为我可以有一个自定义的build.gradle文件(-b标志)-但这
Gradle 配置有两个属性,称为 dependencies和 incoming .根据我的理解,我们可以通过 Gradle 依赖 block 向配置添加依赖,如下所示: dependencies {
我正在测试将我的工件推送到 Nexus Maven 存储库。我正在使用 gradle这样做。 gradle upload有什么区别和 gradle publish ? 最佳答案 目前gradle提供了
这里有一个类似的问题:Gradle properties not being read from ~/.gradle/gradle.properties,但它不能解决我的问题。 在我看来,gradle
如何检索 Gradle 本身的版本 以编程方式从 Gradle 插件中? 最佳答案 刚刚发现可以使用任何一种方法来解决它 getProject().getGradle().getGradleVersi
2 个 gradle 项目,A 和 B,其中 A 定义了对 B 的编译依赖。为 maven 和 gradle 项目启用了 JAR 的重新映射。我试过启用和禁用自定义工具模型。我在 init.d 目录下
如何从 gradle 运行另一个 gradle 脚本。我有多个 gradle 脚本可以在 /test 下运行测试目录。 /build.gradle使用要运行的测试 gradle 文件的名称调用。例如
我已经看到了多模块项目的不同布局,其中有些项目只有一个 build.gradle。而其他项目将有 build.gradle在根和 build.gradle在每个子项目中。我想知道有什么区别以及首选哪种
我对 Gradle 生命周期有一个基本的询问。我的项目是一个多模块项目。 我注意到以下命令: ./gradlew clean bignibou-server:run 不等于运行以下两个命令按顺序运行:
我有一个项目,其中包含一个子项目,如下所示: Root Project |----gradle.build |----SubProject |----|----gradle.build 这里的子项目包
我有 gradle 项目,我想向不使用 gradle 或 maven 等构建工具的项目添加依赖项。 目录结构如下: commonfolder\ gradleProject\ b
我想创建一个类来帮助我加载不同类型的属性(local.properties,gradle.properties,$GRADLE_HOME/gradle.properties,环境变量,系统属性和自定义
我有一个多模块项目,其目录结构如下: proj |-modA |-modB |-modMain \-modSysTest 依赖项是: modB -> modA modMain -> modB modM
我正在尝试创建一个可以在 --offline 模式下工作的 gradle 项目的副本。除了一个步骤,我已经自动化了所有步骤。我无法自动将插件 jar 下载到 gradle 缓存中。 我的离线分发通过指
基本上我想这样做: Use Gradle function from other gradle file 也就是说,从另一个 gradle 脚本中调用一个函数。问题是我的 build.gradle 在
我有一个简单的 gradle 插件,我想试用一下,但我不确定如何“请求”gradle 运行我的测试 这是我要修改的 block (在我的 gradle 构建文件的顶部) buildscript {
在 Android Studio 中创建项目时,我收到以下错误消息。 Failed to import new Gradle project: Could not install Gradle dis
我是一名优秀的程序员,十分优秀!