导航:首页 > 操作系统 > gradle构建android

gradle构建android

发布时间:2022-10-06 22:13:36

1. 如何配置android eclipse gradle环境

方法/步骤

1
首先当然是到官网gradle.org下载最新的gradle版本了,这里我下的是1.1版本,最新是2.0,不过没影响我们使用

2
下载完成后,放到任意的位置,我的是在D:/gradle-1.1,然后需要放到换进配置,步骤是右键“计算机”-“属性”,进入“高级配置”,选择“环境变量”,点击”新建“,配置”GRADLE_HOME“

3
继续在此处选择“path”,进行修改,加入“;%GRADLE_HOME%\bin”,注意此处没有引号,记得前面要加分号,这样就配置好gradle的环境变量了

4
命令窗口输入”gradle -version“,进行验证,出现以下提示则表示成功

5
接下来是构建一个java项目,可以随便建一个文件夹,如:D:\javapro1,按照gradle的规约新建相应的文件目录,类似于maven的一样,如下

6
最主要的是在该目录下新建一个gradle文件,build.gradle,文件内容只要一句话即可:
apply plugin:'java'

7
在命令窗口中,进入项目对应文件夹,输入gradle build,即可完成构建,然后可以在项目文件夹中发现多了一些构建完的文件,这时就完成了一个最简单的项目构建

8
后面的一些基本命令就是clean、check、assemble等待,具体也可以直接查看官网文档
http://jingyan..com/article/9225544684a97c851648f486.html

2. 如何为Android NDK的gradle构建文件中指定NDK

apply plugin: 'com.android.model.application'
model{
android {
compileSdkVersion = 22
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "com.kltz88.car.jnidemo"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 22
versionCode = 1
versionName = "1.0"
}
tasks.withType(JavaCompile) {
//指定编译JDK版本
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
}
android.ndk {
moleName = "test"
ldLibs +="log"
abiFilters +="armeabi"
abiFilters +="armeabi-v7a"
abiFilters +="x86"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file( 'proguard-rules.pro')
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
}

3. gradle是什么呢

Gradle是一个构建工具。它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的命令自动为我们构建app。AndroidStudio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。

gradle构建工具多项目管理

实际使用中,往往需要管理的都不是单单一个项目,maven使用依赖,继承,组成的概念,在父模块指定自己的子模块,并且准备一些各个子模块公用的资源,配置信息等等。将打包的模块与实现具体功能的模块分开的做法来管理多个项目。Gradle在这一方面做得更加清楚。

4. 如何使用Gradle构建不同版本的app

对于多种类型的apk包构建,通常有以下需求:
各版本有不同的代码、资源
上述代码中各版本有不同的依赖
各版本有不同的Manifest中元素需求
各版本有不同的proGuard
Android
Studio中使用Gradle编译多种apk包需要靠proctFlavors或者buildTypes实现,如果有两种proct
flavor和两种build
type,则他们可以生成2*2=4种不同类型的apk包。下文主要使用proctFlavors自定义apk内容,而buildTypes使用默认
配置用于处理debug版本和release版本。
以下依次来看这4点怎样实现

一、不同的代码和资源
要实现build时使用不同的代码和资源:
在build文件中定义proctFlavors
为每个Flavor创建对应的文件夹
将每个Flavor特有的文件放入文件夹
1.在build文件中定义proctFlavors...
android {
...
defaultConfig { ... }
signingConfigs { ... }
buildTypes { ... }
proctFlavors {
demo {
applicationId "com.buildsystemexample.app.demo"
versionName "1.0-demo"
}
full {
applicationId "com.buildsystemexample.app.full"
versionName "1.0-full"
}
}
}
...

其中defaultConfig{}中为默认值,proctFlavors{}会复写所有可以复写的值。

2.为每个Flavor创建对应的文件夹
在上面两个Flavor的基础上,假设你想在每个Flavor使用不同的SecondActivity文件,按照下面的步骤:
展开app目录
右击src目录,选择New>Directory
输入Flavor的名字,也就是demo,新建
在demo中创建以下文件夹 app/src/demo/java app/src/demo/res app/src/demo/res/layout app/src/demo/res/values 如下图:
PS:上述过程就是将默认的main下的目录结构复制过来,想添加其他资源也是同样的操作

3. 将每个Flavor特有的文件放入文件夹
向上一步新建的目录中,先在java目录下建立对应的package,向其中放入SecondActivity.java和其layout文件,并在res目录下添加本Flavor的AndroidManifest.xml文件。Manifest的merge规则见下文。
另外一种方法是右击app目录,选择添加Activity,在引导界面中最后一项Target Source Set选择你想添加到的Flavor,Android Studio就会自动为你生成对应的AndroidManifest,不过需要稍加修改。
在添加demo所需文件后,为了添加full所需文件和包,需要在Android Studio中将build variants切换为fullDebug,否则Android Studio不会将full下的java目录识别为源文件目录,导致不能添加package。
对于demo和full中对应的相同的文件,注意要保证包名的相同,否则main中代码对于不同部分的引用,会因为有不同包名而失败。

二、不同的依赖
在build.gradle中,使用Flavor名+Compile来规定特定Flavor所需依赖:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
demoCompile 'com.android.support:design:22.2.0'
fullCompile 'com.jakewharton:butterknife:6.1.0'
}

三、不同的Manifest需求
Manifest可以通过Merge的方式合并多个Manifest源。通常来说,有三种类型manifest文件需要被merge到最终的结果apk,下面是按照优先权排序:
proctFlavors和buildTypes中所指定的manifest文件
应用主manifest文件
库manifest文件
简单来说,manifest的merge会将每个元素及其子元素的节点和属性进行合并。
例如:
<activity
android:name=”com.foo.bar.ActivityOne”
android:theme=”@theme1”/>


<activity
android:name=”com.foo.bar.ActivityOne”
android:screenOrientation=”landscape/>

合并会成为
<activity
android:name=”com.foo.bar.ActivityOne”
android:theme=”@theme1”
android:screenOrientation=”landscape/>

不过
<activity
android:name=”com.foo.bar.ActivityOne”
android:theme=”@theme1”/>


<activity
android:name=”com.foo.bar.ActivityOne”
android:theme=”@theme2”
android:screenOrientation=”landscape/>

合并会产生一个冲突,因为都有theme,而theme的属性不同。
要了解manifest合并的更高级应用,查看Manifest Merger

四、不同ProGuard需求android {
buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}

proctFlavors {
flavor1 {
}
flavor2 {
proguardFile 'some-other-rules.txt'
}
}
}

Android Studio将使用所有的定义在相应buildTypes和相应proctFlavors中的规则文件。
有两个默认的规则文件:
proguard-android.txt
proguard-android-optimize.txt 存放在SDK中。可以使用getDefaultProguardFile()来获得文件的完整路径,他们除了优化的开启是否不同之外都相同。

5. 如何使用Gradle构建不同版本的app

各版本有不同的代码、资源上述代码中各版本有不同的依赖各版本有不同的Manifest中元素需求各版本有不同的proGuardAndroidStudio中使用Gradle编译多种apk包需要靠proctFlavors或者buildTypes实现,如果有两种proctflavor和两种buildtype,则他们可以生成2*2=4种不同类型的apk包。下文主要使用proctFlavors自定义apk内容,而buildTypes使用默认配置用于处理debug版本和release版本。以下依次来看这4点怎样实现一、不同的代码和资源要实现build时使用不同的代码和资源:在build文件中定义proctFlavors为每个Flavor创建对应的文件夹将每个Flavor特有的文件放入文件夹1.在build文件中定义proctFlavorsandroid{defaultConfig{}signingConfigs{}buildTypes{}proctFlavors{demo{applicationId"com.buildsystemexample.app.demo"versionName"1.0-demo"}full{applicationId"com.buildsystemexample.app.full"versionName"1.0-full"}}}其中defaultConfig{}中为默认值,proctFlavors{}会复写所有可以复写的值。2.为每个Flavor创建对应的文件夹在上面两个Flavor的基础上,假设你想在每个Flavor使用不同的SecondActivity文件,按照下面的步骤:app目录右击src目录,选择New>Directory输入Flavor的名字,也就是demo,新建在demo中创建以下文件夹app/src/demo/javaapp/src/demo/resapp/src/demo/res/layoutapp/src/demo/res/values如下图:PS:上述过程就是将默认的main下的目录结构复制过来,想添加其他资源也是同样的操作3.将每个Flavor特有的文件放入文件夹向上一步新建的目录中,先在java目录下建立对应的package,向其中放入SecondActivity.java和其layout文件,并在res目录下添加本Flavor的AndroidManifest.xml文件。Manifest的merge规则见下文。另外一种方法是右击app目录,选择添加Activity,在引导界面中最后一项TargetSourceSet选择你想添加到的Flavor,AndroidStudio就会自动为你生成对应的AndroidManifest,不过需要稍加修改。在添加demo所需文件后,为了添加full所需文件和包,需要在AndroidStudio中将buildvariants切换为fullDebug,否则AndroidStudio不会将full下的java目录识别为源文件目录,导致不能添加package。对于demo和full中对应的相同的文件,注意要保证包名的相同,否则main中代码对于不同部分的引用,会因为有不同包名而失败。二、不同的依赖在build.gradle中,使用Flavor名+Compile来规定特定Flavor所需依赖:dependencies{compilefileTree(dir:'libs',include:['*.jar'])compile'com.android.support:appcompat-v7:22.2.0'demoCompile'com.android.support:design:22.2.0'fullCompile'com.jakewharton:butterknife:6.1.0'}三、不同的Manifest需求Manifest可以通过Merge的方式合并多个Manifest源。通常来说,有三种类型manifest文件需要被merge到最终的结果apk,下面是按照优先权排序:proctFlavors和buildTypes中所指定的manifest文件应用主manifest文件库manifest文件简单来说,manifest的merge会将每个元素及其子元素的节点和属性进行合并。例如:和合并会成为不过和合并会产生一个冲突,因为都有theme,而theme的属性不同。要了解manifest合并的更高级应用,查看ManifestMerger四、不同ProGuard需求android{buildTypes{release{('proguard-android.txt')}}proctFlavors{flavor1{}flavor2{proguardFile'some-other-rules.txt'}}}AndroidStudio将使用所有的定义在相应buildTypes和相应proctFlavors中的规则文件。有两个默认的规则文件:proguard-android.txtproguard-android-optimize.txt存放在SDK中。可以使用getDefaultProguardFile()来获得文件的完整路径,他们除了优化的开启是否不同之外都相同。

6. 如何为android ndk的gradle构建文件中指定ndk

一个新的项目中就包含这些文件,build 是两个,一个项目一个是 APP Model 的。另外在 APP 中可以看见有一个 manifest 文件夹,这意味着着可以有多 AndroidManifest 文件。
另外值得一说的是 gradle.properties 文件也是含有两个,但是却是一个是全局,一个是项目的;这与上面的 Build 文件有何区别?区别在于全局文件存在于 C:Users用户名.gradle文件夹中,该文件有可能没有,需要自己创建,创建后所有项目都将具有访问权限,在该文件中一般保存的是项目的一些变量等,如果是无关紧要的变量可以保存在项目文件中,如果是用户名密码等变量则需要保存在全局文件中。

至于项目的配置文件一般是空的。
local.properties

?

1
2
3
4
5
6
7
8
9
10

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=D:ToolKitsAndroidsdk

其中包含了你的 sdk 配置,当然你还可以配置 ndk 路径;格式与 sdk 一样。

settings.gradle

?

1

include ':app'

该文件中就仅仅只包含了一句话,在你的项目中如果有多个 Model 存在的时候,就可以选择包含哪些进行编译。

7. 如何用gradle执行ionic build android

如何用gradle执行ionic build android –release的时候自动签名

假设android的platform和keystore已经有了,我们可以看到如下目录结构

其中release-signing.properties这个时候应该是没有的,现在我们新建一个release-signing.properties

storeFile=YiShangpu.keystore
key.store.password=your password
key.alias=YiShangpu
key.alias.password=your password

8. 如何为Android NDK的gradle构建文件中指定NDK

我一直在尝试过解决这个问题。但在通过编写自定义任务,使Android工作室在Eclipse中使用Application.mk和Android.mk就像结束了。
我的build.gradle看起来像这样
应用插件:'com.android.application“安卓{ buildTypes {
发布 {
runProguard假
proguardFiles getDefaultProguardFile('proguard的-android.txt'),'proguard-rules.pro“
}
} compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
} compileSdkVersion 20
buildToolsVersion“20.0.0” defaultConfig {
15的minSdkVersion
targetSdkVersion 20
版本code 1
} packagingOptions {
排除“META-INF /相关内容”
排除“META-INF / LICENSE”
排除“META-INF /注意事项”
} sourceSets.main {
jniLibs.srcDir'的src / main /库“
jni.srcDirs = [] //禁用自动NDK的构建通话
}
}任务buildNative(类型:执行){
高清ndkBuild = NULL;
高清ndkBuildingDir =新的文件(“钢骨混凝土/主/ JNI”);
高清hasNdk = FALSE;
如果(System.getenv(“NDK_BUILD_CMD”)!= NULL){
hasNdk = TRUE;
ndkBuild =新的文件(System.getenv(“NDK_BUILD_CMD”))
} 命令行ndkBuild,“--directory”,ndkBuildingDir doFirst {
如果(!hasNdk){
logger.error('##################')
logger.error(“NDK构建失败!”)
logger.error('原因:NDK_BUILD_CMD未设置。')
logger.error('##################')
}
断言hasNdk:“NDK_BUILD_CMD未设置。”
}
}
tasks.withType(JavaCompile){compileTask - &GT; compileTask.dependsOn buildNative}任务cleanNative(类型:执行){
高清ndkBuild = NULL;
高清ndkBuildingDir =新的文件(“钢骨混凝土/主/ JNI”);
高清hasNdk = FALSE; 如果(System.getenv(“NDK_BUILD_CMD”)!= NULL){
hasNdk = TRUE;
ndkBuild =新的文件(System.getenv(“NDK_BUILD_CMD”))
} 命令行ndkBuild,“--directory”,ndkBuildingDir,“干净” doFirst {
如果(!hasNdk){
logger.error('##################')
logger.error(“NDK构建失败!”)
logger.error('原因:NDK_BUILD_CMD未设置。')
logger.error('##################')
}
断言hasNdk:“NDK_BUILD_CMD未设置。”
}
}
clean.dependsOn“cleanNative”

对于这个工作,你需要设置一个环境变量NDK_BUILD_CMD要设置的确切NDK建造可执行文件。
在Windows上,你可以设置环境变量NDK_BUILD_CMD点到你的NDK-build.exe
在Mac上,你在你的.bash_profile设置路径变量不在GUI应用程序访问(因此Android的Studio将无法读取它们)。
所以,编辑你的.bash_profile是像
GRADLE_HOME = {} path_to_gradle
ANDROID_SDK_ROOT = {} path_to_sdk_dir
ANDROID_HOME = $ ANDROID_SDK_ROOT /平台的工具
ANDROID_NDK_HOME = {} path_to_ndk
NDK_BUILD_CMD = $ ANDROID_NDK_HOME / NDK的构建出口PATH=$GRADLE_HOME/bin:$ANDROID_HOME:$ANDROID_SDK_ROOT/tools:$ANDROID_NDK_HOME:/opt/local/bin:/opt/local/sbin:$PATHlaunchctl SETENV GRADLE_HOME $ GRADLE_HOME
launchctl SETENV ANDROID_HOME $ ANDROID_HOME
launchctl SETENV ANDROID_NDK_HOME $ ANDROID_NDK_HOME
launchctl SETENV NDK_BUILD_CMD $ NDK_BUILD_CMD

该launchctl线将使您的环境变量的Android Studio中可见。
PS:本.bash_profile中运行每次打开终端的时间。因此,对于这个正确与Android工作室工作,你需要启动一次终端,然后运行Android的工作室。否则,构建就会失败说NDK_BUILD_CMD未设置。我还没有发现任何方式的Mac启动时设置的值。如果有人能找到一个办法,请随时提出。

9. android studio 怎么配置gradle

build.gradle

//设置脚本的运行环境
buildscript {
//支持java 依赖库管理(maven/ivy),用于项目的依赖。
repositories {
mavenCentral()
}
//依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
//声明构建的项目类型,这里当然是android了
apply plugin: 'android'
//设置编译android项目的参数
android {
compileSdkVersion 17
buildToolsVersion "17"

defaultConfig {
minSdkVersion 8
targetSdkVersion 17
}
//Android默认配置
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
//测试所在的路径,这里假设是tests文件夹,没有可以不写这一行
instrumentTest.setRoot('tests')
}

//这个是解决lint报错的代码
lintOptions {
abortOnError false
}
/**
* 签名设置
*/
signingConfigs {
myConfigs {
storeFile file("签名文件地址")
keyAlias "..."
keyPassword "..."
storePassword "..."
}
}
/**
* 混淆设置
*/
buildTypes {
release {
signingConfig signingConfigs.myConfigs
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/**
* 渠道打包(不同包名)
*/
proctFlavors {
qqqq {
applicationId = '包名'
}
hhhhh {
applicationId='包名'
}
}
}
/**
* .so文件的导入
*/
task NativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'
}

tasks.withType(Compile) {
options.encoding = "UTF-8"
}

tasks.withType(Compile) {
compileTask -> compileTask.dependsOn NativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = [new File(buildDir, 'lib')]
}
//依赖库
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
gradle 作为构建工具,能够很方便的使用本地jar包,以下为使用的代码块。
ependencies {
//单文件依赖
compile files('libs/android-support-v4.jar')
//某个文件夹下面全部依赖
compile fileTree(dir: 'libs', include: '*.jar')
}

android {

}
gradle 同时支持maven,ivy,由于ivy我没用过,所以用maven 作为例子,以下为代码块:
repositories {
//从中央库里面获取依赖
mavenCentral()
//或者使用指定的本地maven 库
maven{
url "file://F:/githubrepo/releases"
}
//或者使用指定的远程maven库
maven{
url "远程库地址"
}
}

dependencies {
//应用格式: packageName:artifactId:version
compile 'com.google.android:support-v4:r13'}

android {

}
对于项目依赖 android library的话,就不是依赖一个jar,那么简单了,在这里需要使用gradle mulit project 机制。在过去,android library并没有一个很好的包管理方式,简单来说,在gradle出现以前,官方并没有一种用于管理android library 依赖包的方式,一般我们都是直接下载别人的android library project 源码进行集成,而对于第三方的android-maven-plugin 用的是apklib 格式。
而现在,官方终于推出一种android library的打包格式,扩展名为*.aar。前面提到,目前android gradle插件并不支持本地直接使用*.aar文件,不过,支持包管理库的引用方式,下面,我为大家说一下,怎么对android library 发布使用。
打包android library
对android library 进行打包直接在library项目下面使用gradle build 即可,然后,你就会在 build/libs 目录下看到两个*.aar文件,一个debug包用的,一个是release 下用的,看个人需求使用,这里我们用的是release 版本的 .aar 文件。

10. 如何为Android NDK的gradle构建文件中指定NDK

apply plugin: 'com.android.model.application'
model{
android {
compileSdkVersion = 22
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "com.kltz88.car.jnidemo"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 22
versionCode = 1
versionName = "1.0"
}
tasks.withType(JavaCompile) {
//指定编译JDK版本
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
}
android.ndk {
moleName = "test"
ldLibs +="log"
abiFilters +="armeabi"
abiFilters +="armeabi-v7a"
abiFilters +="x86"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file( 'proguard-rules.pro')
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
}

附上出处链接:http://www.codeceo.com/article/android-studio-gradle-ndk.html

阅读全文

与gradle构建android相关的资料

热点内容
日本电影 网站 浏览:357
抗战大片60部 浏览:67
校园卡是否经过加密 浏览:270
泰国电影免费 浏览:43
女主通过系统慢慢变美的小说 浏览:483
国术电影大全 浏览:756
三星贴片机离线编程 浏览:669
完美世界txt下载全本精校小说 浏览:935
轰炸机电影有哪些 浏览:906
国外嗨皮咳嗽服务器地址 浏览:101
爱妾电影里面女演员的名字 浏览:693
电子回单溯源码 浏览:318
幽幻僵尸演员 浏览:83
女主重生从小就有系统变美 浏览:865
盗墓类电影 浏览:203
186app改成什么了 浏览:886
创为线切割数控编程 浏览:518
老电影抗战老电 浏览:160
超级逼真的解压神器 浏览:584
萌芽视频网站 浏览:763