⑴ 如何使用Gradle构建不同版本的app
对于多种类型的apk包构建,通常有以下需求:
各版本有不同的代码、资源
上述代码中各版本有不同的依赖
各版本有不同的Manifest中元素需求
各版本有不同的proGuard
android
Studio中使用Gradle编译多种apk包需要靠proctFlavors或者buildTypes实现,如果有两种proct
flavor和两种build
type,则他们可以生成2*2=4种不同类型的apk包。下文主要使用proctFlavors自定义apk内容,而buildTypes使用默认
⑵ android studio gradle build后为什么没生成apk
gradle build如果要直接生成apk的话,需要自己写脚本,类似于当年的ant,如果不写脚本的话,建议使用android strudio的Build菜单里有make apk选项,其中有两个,一个是生成未签名apk,一个是生成签名apk。生成签名apk时需要你先做一个签名文件,然后根据生成apk向导导入签名文件
⑶ gradle可以编译android源码吗
方法/步骤
1
(可以省略)通过cmd命令行下载gradle源码:
git clone https://github.com/spring-guides/gs-gradle-android.git
2
下载最新的gradle安装包,地址:
http://gradle.org/downloads
点击下载二进制文件
3
解压到d盘,路径为:D:\gradle-2.4
4
打开“计算机”-“右键”-“属性”-“更改设置”-“高级”-“环境变量”,
在系统变量中,点击新建,属性名为GRADLE_HOME,属性值为"D:\gradle-2.4"
5
打开“计算机”-“右键”-“属性”-“更改设置”-“高级”-“环境变量”,
在系统变量中,找到Path,将";D:\gradle-2.4\bin"加入到Path中
6
打开cmd命令行,执行gradle,如果出现如图所示,则说明gradle安装成功
7
打开cmd命令行,进入android工程目录,找到build.gradle文件,在目录执行执行
gradle build
既可开始使用gradle打包apk,在成功后会在同目录生成build文件夹,
⑷ Android Studio非gradle工程编译后的apk文件在哪
1.选中工程,右键:
⑸ 安卓导入一个文件后,编译apk出现问题
在 build.gradle 中将 version 那里改成 2.14.1
⑹ android studio怎么编译apk文件
Android Studio编译出来的APK无法安装如何解决?随着Android8.0的发布,国内虽然没上8.0但是7.0、7.1已经比较普遍了。Android Studio也做了不少更新。
但是有不少人发现,我更新了Android Studio,发现我的手机无法调试了?根本无法直接安装调试,就算先生成APK,在安装也总是说安装失败,或者解析包错误我该怎么办?
在这里我也不知道具体原因,反正我是遇到过几次。有的情况,我的猜测是因为了更新了build tool不知道它加了什么限制条件。因为在低版本没出现问题,更新了它之后就出现了!
第一种情况:直接无法安装,并出现:Failed to finalize session : INSTALL_FAILED_INTERNAL_ERROR
这种情况比较好解决,本身AS也有提示:关闭选项 File--> settings-> Istant Run
第二种情况:虚拟机可以安装调试,发送到真机上无法安装。甚至是提示安装包解析失败?
我经常遇到就是这个,有时候让我们怀疑是不是在传输过程安装包损坏了,还是手机出问题了。其实都不是,我还在真感觉是build tool版本导致的。
因为有一个解决方案是这样的:
请修改 project 的biuld.gradle
classpath 'com.android.tools.build:gradle:2.3.3'
改为
classpath 'com.android.tools.build:gradle:2.2.0'以下
还有另一个解决方案:
我们平时习惯都是生成debug包进行安装,造成这个原因就是因为他是debug包!我自己测试出来的,估摸是Android加了什么条件,限制了debug包的安装。生成release包就没任何问题,亲测。
第三种情况,APK在大多数设备上能运行,但是有的设备却不能安装?
亲~请查看你配置文件中的最低支持的Android版本,你设置最低5.0安装在4.4的机器当然不行了!
这就是目前我遇到的三种情况,如果大家还有其他情况以及其他解决方案不妨分享出来~
⑺ 如何建立与 Android studio和 gradle android 库
注: 此应答是纯 Gradle 应答、 在这中使用 IntelliJ 定期但我不知道怎么整合是以 Android 的工作室。我知道发生了什么事对我来说,这我如何使用 Gradle 和 Android 的信徒。
Gradle 已定义的结构 (即您可以更改底部链接将告诉您如何),是与 Maven 非常相似,如果您曾经使用过它。
Project Root
+-- src
| +-- main (your project)
| | +-- java (where your java code goes)
| | +-- res (where your res go)
| | +-- assets (where your assets go)
| | \-- AndroidManifest.xml
| \-- instrumentTest (test project)
| \-- java (where your java code goes)
+-- build.gradle
\-- settings.gradle
如果你仅有的一个项目,不是需要的 settings.gradle 文件。但是你想要添加更多的项目,所以我们需要它。
现在让我们看一看那个 build.gradle 文件。你会需要这个在它 (要添加的 android 工具)
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.3'
}
}
现在我们需要告诉 Gradle 一些 android 系统部件。它是相当简单的。一个基本的那个 (在大多数我情况下的工作方式) 如下所示。我在此块中有一个注释,它将允许我指定的版本名称和代码生成 APK 时。
build.gradle
apply plugin: "android"
android {
compileSdkVersion 17
/*
defaultConfig {
versionCode = 1
versionName = "0.0.0"
}
*/
}
东西我们要想要添加,然而,就没见过的 Gradle 光的人帮助他们使用该项目,而不安装它的方式。
build.gradle
task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper) {
gradleVersion = '1.4'
}
所以现在我们有一个要生成的项目。现在我们要添加其他人。我把它们放在一个目录中,或许称之为指标或子项目。这是无关紧要的但你需要知道你把它放哪。要告诉 Gradle 项目在哪里你都需要将它们添加到 settings.gradle。
目录结构:
Project Root
+-- src (see above)
+-- subProjects (where projects are held)
| +-- reallyCoolProject1 (your first included project)
| \-- See project structure for a normal app
| \-- reallyCoolProject2 (your second included project)
| \-- See project structure for a normal app
+-- build.gradle
\-- settings.gradle
settings.gradle:
include ':subProjects:reallyCoolProject1'
include ':subProjects:reallyCoolProject2'
您应该确保的最后一件事是subProjects/reallyCoolProject1/build.gradle apply plugin: "android-library" 而不是 apply plugin: "android" 。
像每个 Gradle 项目 (和 Maven) 我们现在需要告诉关于它的依赖性的根项目。这还可以包含任何你想要的正常 Java 依赖。
build.gradle
dependencies{
compile 'com.fasterxml.jackson.core:jackson-core:2.1.4'
compile 'com.fasterxml.jackson.core:jackson-databind:2.1.4'
compile project(":subProjects:reallyCoolProject1")
compile project(':subProjects:reallyCoolProject2')
}
我知道这看起来像很多步骤,但他们是很容易的一旦你这样做一次或两次。这种方式也将允许您可以假设你有没有安装了 Android SDK 的 CI 服务器上生成。
NDK 侧注: 如果您要使用 NDK 你需要的东西喜欢下面。可以在这里找到 build.gradle 文件的示例:https://gist.github.com/khernyo/4226923
build.gradle
task NativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: '**/*.so' ) into 'build/native-libs'
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn NativeLibs }
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniDir new File('build/native-libs')
}
⑻ 如何创建使用 Gradle 发布签名的 apk 文件
我设法解决它添加此代码,以及与建立 gradle build :
android {
...
signingConfigs {
release {
storeFile file("release.keystore")
storePassword "******"
keyAlias "******"
keyPassword "******"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
这将生成签名的发布的 apk 文件。
⑼ 怎么查看gradle编译apk使用的jdk版本
我不知道我是不是正确的理解了你的意思,你是说你把一个APK反编了,然后再打包成APK是么,用SDK里面提供的打包工具,?你这个不靠谱,你反编译过的东西是不能直接运行的,你放进Eclipse就会发现一堆错,你把文件一个个都拷贝进Eclipse以后再把资源文件也拷贝进去,然后修改每个.java文件中的错误,然后修改清单文件,这就是一整套流程,一般我不这样干,太麻烦,
⑽ android gradle打包生成两个包,怎么去掉debug版本
Gralde 打包参数详解
上面说了一大堆东西,其实并不吸引人去使用gradle,如果只是构建项目的话,adt不是更合适吗?如果,你看完以下内容还是这么觉得的话,你就没必要折腾gradle了。。。。。。
打签名包
看附录 默认输出 release apk 是没有签名的,那么我们需要签名的很简单,只需要在android{}里面补充加上加上即可。完整build.gradle 请点击我的gist
build.gradle
signingConfigs {
myConfig{
storeFile file("gradle.keystore")
storePassword "gradle"
keyAlias "gradle"
keyPassword "gradle"
}
}
buildTypes{
release {
signingConfig signingConfigs.myConfig
}
}
然后,运行gradle clean gradle build ,这次在build/apk 你看到了多了一个[项目名]-release-unaligned, 从字面上面我就可以知道,这个只是没有进行zipAlign 优化的版本而已。而[项目名]-release 就是我们签名,并且zipAlign 的apk包了. ###打混淆包### 只需要在原来的基础上加上,完整的proguad.gradle 代码 build.gradle
gradle clean
gradle build
打多渠道包(Proct Flavor)
现在来解释一下上一节的问题,apk目录下的两个apk 的含义
为什么产生了两个apk?
默认的android gralde 插件定义了两种apk 的类型debug, release,这两种类型的详细对比看附录。
这个是android gralde 插件 buildTypes{} 方法产生的,默认配置好了两个默认模板,当然你也可以修改,前面我们就是在修改默认的release 的配置,让输出release类型的的apk,具有签名和混淆。
对于多渠道包,android 插件提供了一个名为Proct Flavor{} 的配置,用于进行多渠道打包。
例如,我的android应用有海外版,和国内版本,而且这两个版本的包名是不一样的!!(我就举两个市场的例子安装这个思路,你要打包100个不同的市场只是几行代码的事情。)。
你只需要在android{} 补充上
build.gradle
proctFlavors {
playstore {
packageName='com.youxiachai.androidgradle.playstore'
}
hiapk {
packageName='com.youxiachai.androidgradle.amazonappstore'
}
}
仅此而已?然后gradle clean,gradle build,在build/apk 下面你会看到一堆的包,命名格式[项目名]-[渠道名]-release
Proct Flavor{} 不只是能改包名那么简单,还能够对编译的源码目录进行切换。
什么意思? 不知道各位有没有用过友盟做用户统计,如果,你用的是分发渠道分析,你需要修改AndroidManifest.xml 添加上
如果,你很多渠道,,然后你就会很痛苦,现在用gradle 就非常舒服,你只需要在android.sourceSets指定我们的渠道名就行,android gradle 插件,会自动打包!!!例如
build.gradle
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
hiapk {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
playstore {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
instrumentTest.setRoot('tests')
}
然后运行gradle clean,gradle build,省下的时间去喝杯咖啡,睡个觉什么的都好。。。 ###外部依赖### android gradle 对于外部jar 包的应用支持maven/ivy 管理的包,也支持指定具体文件,前面已经在上文说过。上面演示的完整 build.gradle gist 里面也有写。你需要加上如下代码即可: build.gradle