Android Studio NDK正确配置

Eclipse与AS很难说哪个工具比较厉害,从谷歌的更新历史来说,AS肯定是趋势,Eclipse对后续的SDK等不再支持。在同事的强烈建议之下,还是从Eclipse转向万能的AS了,转的过程中单纯从Eclipse导入到AS中,这一步是比较简单的,AS会寻找Eclipse中的prject.properties文件,当AS选择import时会自动导入到AS中,同时会在AS下生成跟Eclipse一样project 名字。但是由于项目包含NDK,因此AS中进行了对NDK相关的配置以及系统自动签名,这些也都是Stackflow上一些大牛的建议。我的系统环境是ubuntn12.04。

1. NDK配置

AS貌似对NDK的支持不是很好,因此我不打算使用AS IDE 环境自动编译,选择ndk-build方式进行编译。首先下载ndk-build工具,这个在android.developer上有资源,可自行下载,下载解压后,在/etc/profile下增加对NDK环境变量的支持。

NDK_HOME=/home/..... (NDK解压目录)

export PATH=$PATH:$NDK_HOME

进行source /etc/profile更新环境变量。

在project中加入jni文件夹,把相关的文件加入其中,并添加Android.mk编译文件,至于Android.mk是怎么写的,大家自行google吧,网上太多。加入Android.mk文件后,可以在app/src/main位置执行ndk-build操作,成功执行后会在app/src/mian/libs下生成*.so文件,如果有错,就看看Android.mk或者源文件有什么错误,进行debug。

上述ndk-build后,会在app/src/mian/libs下生成*.so库文件,我们的目的也达成了,但是我想着能否让AS IDE自动执行,而不是每次修改文件后都在Terminal中执行ndk-build操作,在Stackflow中找到了解决方法。

在AS IDE中左侧选择Android,找到build.gradle(Moule: app),我们可以输入类似下面操作方法。

import org.apache.tools.ant.taskdefs.condition.Os

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig{
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 101
        versionName "1.0.1"
    }

    sourceSets.main {
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    // call regular ndk-build(.cmd) script from app directory
    task ndkBuild(type: Exec) {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
        } else {
            commandLine 'ndk-build', '-C', file('src/main').absolutePath
        }
    }

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

上述srcipt code中,绿色为禁止AS IDE自动编译,红色为根据系统平台选在ndk-build工具,这样当Make Project时会在app/src/main/libs下生成相应的*.so库文件。

2. AS IDE系统自动签名

由于APK以及*.so文件需要进行系统签名,但是想让AS IDE工具进行自动系统签名,不想自己每次都通过命令重复简单劳动。

2.1 让Android Studio集成系统签名,需要用到一个工具keytool-importkeypair。

keytool-importkeypair

keytool-importkeypair – A shell script to import key/certificate pairs into an existing Java keystore

keytool-importkeypair工具,可以通过git clone (github源地址)进行下载。

相关文件

platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

在app根目录(下面有build, src等目录)下新建signature目录,在AS中生成demo.jks签名文件。


上述是网上找到别人的图片,如果冒犯请原谅。

2.2 编写签名脚本signature.sh,内容如下:

    	#!/bin/sh
./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo

为脚本文件添加可执行权限:

   	$ sudo chmod a+x signature.sh

执行脚本:

   	$ ./signature.sh

2.3 配置builde.gradle

在android区域下(与defaultConfig同级)添加配置:

   signingConfigs {
      release {
        storeFile file("./signature/demo.jks")
        storePassword '123456'
        keyAlias 'demo'
        keyPassword '123456'
    }

    debug {
        storeFile file("./signature/demo.jks")
        storePassword '123456'
        keyAlias 'demo'
        keyPassword '123456'
    }
}
    	3. 完成上述步骤2之后,如果需要build apk release中自动加入签名,则需要在build.gradle中buildTypes下
    	buildTypes{
    		release{
        		signingConfig signingConfigs.release
    		}
		debug{
			sigingConifg signingConfigs.release
		}
    	}
	加入上述code之后,当选择build apk时,会在outputs下自动生成app-release.apk文件,此文件即为release + signature apk。
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值