在Android studio IDE中采用自己编写的Android.mk

来源:互联网 发布:淘宝没发票可以投诉吗 编辑:程序博客网 时间:2024/05/16 12:09

在app/src/main/ 新建jni文件夹


/app/src/main/jni


在里面创建一个.cc文件,编写Android.mk  Application.mk

本人的实例如下:

Android.mk


LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := HellJniLOCAL_SRC_FILES := HelloJni.cppinclude $(BUILD_SHARED_LIBRARY)
Application.mk
APP_STL := gnustl_staticAPP_ABI := armeabi armeabi-v7a
接下来是build.gradle 这个文件是在工程的顶层目录下的,与settings.gradle 文件在同一个目录下
我这边的修改如下:
buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle-experimental:0.7.0-rc1'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}
上面标记红色 地方是我修改的地方,
之后到app目录下,修改此目录下的build.gradle
具体如下:
import org.apache.tools.ant.taskdefs.condition.Osapply plugin: 'com.android.model.application'model {    android {        compileSdkVersion = 23        buildToolsVersion = "23.0.2"        defaultConfig {            applicationId "com.example.administrator.myjni"            minSdkVersion.apiLevel = 15            targetSdkVersion.apiLevel = 23            versionCode = 1            versionName = "1.0"            ndk{                moduleName = 'HelloJni'            }        } //       ndk{ //           moduleName = "HelloJni" //           stl = 'gnustl_static' //           cppFlags.addAll(['-std=c++11']) //           ldLibs.addAll(['android', 'log']) //           abiFilters.addAll(['armeabi', 'armeabi-v7a']) //       }        sources{            main{                jni{                    source{                        srcDirs = []                    }                }                jniLibs{                    source{                        srcDir 'src/main/libs'                    }                }            }        }        task ndkBuild(type: Exec) {            if (Os.isFamily(Os.FAMILY_WINDOWS)) {                commandLine 'E:\\Android_SDKS\\ndk-bundle\\ndk-build.cmd', '-C', file('src/main').absolutePath            }            else{                commandLine 'ndk-build', '-C', file('src/main').absolutePath            }        }        tasks.withType(JavaCompile){            compileTask -> compileTask.dependsOn ndkBuild        }        buildTypes {            release {                minifyEnabled false                proguardFiles.add(file('proguard-android.txt'))            }        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.3.0'}
标记为蓝色的部分,是需要同时设置的
标记为紫黑色的部分,是需要特别注意的,否则会出现错误:  "  A problem occurred starting process 'command 'ndk-build.cmd''  "
紫黑色部分标记的是本人的ndk包安装的地方
标记为紫红色的部分是Android studio按照动态生成的Android.mk文件进行编译的方式
以上就是自己写的一个简单的jni 测试,采用自己写的Android.mk
当然采用自己的写的Android.mk 有优点,特别是已经有Android.mk的工程,直接导入进来就好了,但是也有其缺点,如果是一个linux工程文件,只有Makefile文件,这时则需要
自己去编写Android.mk文件,对于Android的编译系统了解不是很深的,估计很难写出来



0 0
原创粉丝点击