AndroidStudio 放弃Gradle使用Android.mk

简介: 默认你的工程接口如图所示首先配置好NDK开发目录,在build.gradle的defaultconfig中配置好ndk选项然后,在build.

默认你的工程接口如图所示


首先配置好NDK开发目录,在build.gradle的defaultconfig中配置好ndk选项

然后,在build.gradle(app)文件的android结构下,加入以下配置:

    sourceSets.main{
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs = []
    }

jniLibs.srcDir 'src/main/libs':意思是编译成功的so,会存放在src/main/libs目录下面
jni.srcDirs = []:将gradle的jni源目录设置为空,禁用gradle自带的ndk编译

接着加入以下配置
    task ndkBuild(type: Exec) {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            commandLine 'ndk-build.cmd', '-C', file('src/main/jni').absolutePath
        } else {
            commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
        }
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }

ndkBuild函数的意思是执行默认的ndk编译
task.withType的意思是添加ndkbuild为工程编译的依赖项
因为涉及到os辨认,所以在此文件的文件头需要加入
 
 
import org.apache.tools.ant.taskdefs.condition.Os

这样在编译的时候可能会报的错误为
 
 
 
 
execution failed for task ':app:ndkbuild'.

此时,检查NDK路径配置是否有误,如果没有异常,使用cmd命令直接调用ndk-build(.cmd) -C 进行编译,如果代码有误,可直接检查代码。如果代码确认无误。,

修改
 
 
 
 
 commandLine 'ndk-build.cmd'
将ndk-build.cmd的全路径填入工程路径中,即可成功编译

如图:
    task ndkBuild(type: Exec) {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            commandLine 'D:\\xxxxx\\android-ndk-r11b\\ndk-build.cmd', '-C', file('src/main/jni').absolutePath
        } else {
            commandLine '/home/xxxxx/Android/android-ndk-r11b/ndk-build', '-C', file('src/main/jni').absolutePath
        }
    }

注意windows下"\"需要转义为"\\"
目录
相关文章
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
2250 0
Android Studio插件版本与Gradle 版本对应关系
|
Java 开发工具 Android开发
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
Cocos Creator 2.4.6 Android Gradle 版本升级为 6.5.1(插件4.1.0)
310 1
|
存储 Java Android开发
Android 开发 - 充分利用Gradle
Android 开发 - 充分利用Gradle
168 2
|
22天前
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
|
20天前
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
|
25天前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
52 0
玩转安卓之配置gradle-8.2.1
|
3月前
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
989 0
Android Studio: 解决Gradle sync failed 错误
|
3月前
|
Java 开发工具 Maven
Flutter和Android中覆盖gradle中的repositories仓库地址
Flutter和Android中覆盖gradle中的repositories仓库地址
161 4
|
3月前
|
Android开发 Kotlin
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.10 and higher
56 3
|
3月前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
61 0