zoukankan      html  css  js  c++  java
  • Android NDK开发 Android Studio使用新的Gradle构建工具配置NDK环境(一)

    本文主要讲述了如何如何在Android Studio使用新的Gradle构建工具配置NDK环境,现在把相关的步骤整理出来分享给Android程序员兄弟们,希望给他们在配置NDK环境时带来帮助。

    从Android Studio 1.3 Beta1开始,就支持了NDK。不过使用的是一个全新的实验性的gradle构建工具。官方地址 http://tools.android.com/tech-docs/new-build-system/gradle-experimental ,英文好的可以直接看原文。

    在进行配置前请先将Android Studio更新至最新版本,目前最新版本是2.1.2

    并且使用Android Studio内置的SDK管理器下载NDK。

    由于google的问题一直下不来。我用了手动下载配置

    Downloading https://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip

    注意这个NDK安装好后其目录在SDK目录下的ndk-bundle目录下,与以往的不同。

    要修改的文件见下图

    Android Studio使用新的Gradle构建工具配置NDK环境

    首先需要将根目录下的gradle修改为实验性的gradle

    classpath 'com.android.tools.build:gradle-experimental:0.2.0'

    最终是这样的

    Android Studio使用新的Gradle构建工具配置NDK环境

    并且需要gradle 2.5的支持,将gradle/gradle-wrapper.properties中的版本修改为2.5

    distributionUrl=https/://services.gradle.org/distributions/gradle-2.5-all.zip

    最终是这样的

    Android Studio使用新的Gradle构建工具配置NDK环境

    然后修改原来的app/build.gradle,注意现在各项配置都是有等号的,并且使用的是 com.android.model.application而不再是原来的com.android.application,如果是Library,则 是com.android.model.library。然后android外围包了一层model。原来在android里面的buildTypes 移到了外面。等等,看下面内容,注意变化。

    model {
        android {
            compileSdkVersion = 23
            buildToolsVersion ="23.0.2"
     
            defaultConfig.with {
                applicationId ="com.qihoo.test"
                minSdkVersion.apiLevel  = 19 // Unable to load class com.android.build.gradle.managed.ProductFlavor_Impl
                targetSdkVersion.apiLevel = 23
                versionCode = 1
                versionName ="1.0"
            }
     
        }
        android.buildTypes {
            release {
                minifyEnabled =false
                proguardFiles += file('proguard-rules.pro')
            }
        }
     
     
        compileOptions.with {
            sourceCompatibility = JavaVersion.VERSION_1_7
            targetCompatibility = JavaVersion.VERSION_1_7
        }
        android.ndk {
            moduleName ="NdkSample"
            cppFlags +="-std=c++11"
            cppFlags +="-fexceptions"
            cppFlags +="-I${file("src/main/jni//include")}".toString()
            ldLibs += ["android","log"]
            stl ="gnustl_shared"
        }
     
        android.productFlavors {
            create("arm7") {
                ndk.abiFilters.add("armeabi-v7a")
            }
            create("arm8") {
                ndk.abiFilters.add("arm64-v8a")
            }
     
        }
    }
     
     
    dependencies {
        compile fileTree(dir:'libs', include: ['*.jar'])
        compile'com.android.support:appcompat-v7:23.1.0'
    }

    在android.ndk中进行ndk的配置,模块名字是必须的。然后使用了log,并且支持armeabi,armeabi-v7a,x86三个平台。

    新建一个Test的类,加载jni库,声明native方法

    记得添加System.loadLibrary("hello-jni")

    public class TestJni {
        static {
            System.loadLibrary("hello-jni");
        }
        public static native   String getString();
    
    }

    这时候你会发现getString方法是红色的

    在上面按alt+enter生成c层的方法

     
  • 相关阅读:
    Unity 小笔记
    UE4 Pure函数的特点
    C++ const总结
    配色问题lingo实现
    选址问题lingo求解
    迷宫问题python实现(靠右手摸墙)
    环形队列C++实现
    排队论的C实现
    递归实现全排列序列C语言实现
    双人贪吃蛇小游戏C++原创
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/5842209.html
Copyright © 2011-2022 走看看