这篇文章主要围绕android-studio–如何使用包含ARM程序集优化的gradle编译AndroidNDK和androidstudioforarm展开,旨在为您提供一份详细的参考资料。我们将全面
这篇文章主要围绕android-studio – 如何使用包含ARM程序集优化的gradle编译Android NDK和android studio for arm展开,旨在为您提供一份详细的参考资料。我们将全面介绍android-studio – 如何使用包含ARM程序集优化的gradle编译Android NDK的优缺点,解答android studio for arm的相关问题,同时也会为您带来Android Emulator 是否包含 Android SDK 或 Android Studio?、Android Gradle编译学习日记之二(使用 Gradle 编译 Eclipse,引入依赖资源以及迁移 Android Studio)、Android Studio Gradle编译输出信息乱码、Android Studio 升级后Gradle编译报错问题的实用方法。
本文目录一览:- android-studio – 如何使用包含ARM程序集优化的gradle编译Android NDK(android studio for arm)
- Android Emulator 是否包含 Android SDK 或 Android Studio?
- Android Gradle编译学习日记之二(使用 Gradle 编译 Eclipse,引入依赖资源以及迁移 Android Studio)
- Android Studio Gradle编译输出信息乱码
- Android Studio 升级后Gradle编译报错问题
android-studio – 如何使用包含ARM程序集优化的gradle编译Android NDK(android studio for arm)
我正在使用:
> Android Studio 1.3.1稳定
> Gradle 2.5,实验插件0.2.0
谢谢!
解决方法
你可以做的是切换到使用标准的Android.mk/Application.mk文件自己使用ndk-build.
在build.gradle中设置它,所以它不会尝试编译你的代码,它将从src / main / libs /获取你的.so文件:
android.sources{ main.jni { source { srcDirs = [''src/main/none''] // [] Could be set instead but will disable even symbol resolution inside the editor } } main.jniLibs { source { srcDirs = [''src/main/libs''] } } }
Android Emulator 是否包含 Android SDK 或 Android Studio?
来自Android Emulator release notes
Android 模拟器包含在 Android Studio 中。
25.3.0 之前的模拟器版本作为 Android SDK 工具。
为确保您拥有最新版本,请检查 SDK Manager 更新。
对于 25.3.0 之前的 Android Emulator 版本,请参阅 Android SDK 工具发行说明。
Android Gradle编译学习日记之二(使用 Gradle 编译 Eclipse,引入依赖资源以及迁移 Android Studio)
大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢
转载请标明出处(http://my.oschina.net/u/1785888/blog),再次感谢
Android Gradle编译学习日记(基于 Android Studio 1.0):
Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用)
在上一篇文章中,我简单介绍了一个 Gradle 环境变量的搭建,以及如何使用 Gradle 编译 Android 项目,但是对于国内的大部分开发人员来说,我们通常都是使用 Eclipse进行 Android 开发,对于大部分人而言从一个平台迁移到另一个平台所花费的成本太高。因此本文就将介绍如何通过 Gradle 编译 Eclipse 代码结构下的Android 项目,以及将 Eclipse 下的 Andorid 项目迁移到 Android Studio 下,让大家更加轻松的转移项目代码。
一、在 Eclipse 下创建一个 Android 项目
相信大家都不希望我再这里演示如何在 Eclipse 下创建一个 Android 项目,因此我也不再花费时间在这上面,先上传一张创建后的项目结构图:
再来一张 Gradle 的默认目录结构图:
通过对比两个目录结构图,我们可以发现,Eclipse 默认的代码目录结构和 Gradle 支持的代码目录结构是不同的,因此,如果我们使用上一篇文章中的方法直接进行 Android 项目编译,会发现无法进行正常编译,原因就是没有找到对应的 Android 配置文件。
二、配置 Gradle 的资源路径
为了让 Gradle 能够找到响应的源文件和资源文件,我们先看一下Gradle 的目录结构,从第二张图中我们能够发现 Gradle 的默认编译结构中将程序源码分为了几个不同的部分:java、jni、rs、aidl,而 Eclipse 的目录中java 和 aidl 是放置在同一个目录下的,所以我们需要在 build.gradle 文件根据项目结构定义好对应的路径。
定义路径位置的代码如下:
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'']
}
androidTest.setRoot(''tests'')
}
}
请把 sourceSets 部分添加到 build.gradle 中的 android 域内。
其实 Gradle 默认的源码路径设置位置应该是在最外层,但是由于Andorid 插件拥有自己的代码设置,因此我们将 sourceSets 放置到 android 域内。
之后执行
gradle check
你现在应该能够进行正常的编译工作了,具体如何编译请查看我上一篇文章。
三、引入项目依赖包
What?你出错了,不可能吧?
当然其实这是可能的,注意查看第一张图,里面除了 TestGradle 目录以外,还有一个 appcompat_v7,这是项目的依赖包,如果你不进行配置,那么 Android 编译时无法找到他,自然会报错。
现在我们来看看如何将依赖包引入 Android,让他能够正常编译
(1)使用 maven
之前我就说过,Gradle 能够使用 Maven 的几乎所有特性,因此当我们需要使用依赖包的时候,而且该依赖包在 maven 中央库中存在的时候,我们不妨直接在配置文件中配置,配置方法也十分简单地说,以 appcompat_v7包为例,在 build.gradle 的最外层加入以下信息:
dependencies {
compile ''com.android.support:appcompat-v7:21.0.3''
}
compile 代表着你希望在编译的时候将某个 maven 包打入程序中,而后面的信息则是对应 maven 包的相关信息,方便从 maven 中央仓库中进行获取。
然后你再执行一下:
gradle check
现在是不是提示你程序能够正常打包了呢。
(2)引入 jar 包
有时候我们在 libs 目录下有存放 jar 包类型或者 so 链接库类型的依赖资源,但是当你进行编译时,你会发现找不到这些资源,原因只有一个: Gradle 不知道你需要编译的资源对象在哪里,因此我们需要手动在 build.gradle 进行路径配置,大致方法与上面的类似,我就简单叙述一下就好了。
打开你的 build.gradle,在 dependencise 域,没错,就是刚才我们添加 appcompa_v7包的那个域,在域中我们加入一下代码:
compile fileTree(dir: ''libs'', include: [''*.jar''])
该代码就将所有在 libs 目录下的 jar 包引入了,如果要引入 so 库,再加一句
compile fileTree(dir: ''libs'', include: [''*/*.so''])
(3)引入依赖项目
如果你实在找不到对应的 maven 项目或者不能单纯使用 jar 包进行引入,实在需要使用一个依赖工程,那我们就得考虑通过将依赖项目先转换为 Gradle 类型的 Android Library,然后再进行项目关联。
面对这种情况,我们可以像 Eclipse 一样将应用项目和依赖工程放在同一目录下,方便关联。
我们先将 TestGradle 中 build.gradle 中关于 appcompat 依赖包得引用去掉
在顶层目录中,我们建立一个 build.gradle 和 setting.gradle 文件分别存放项目依赖。
build.gradle 用于存放通用的配置信息,例如通用依赖:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ''com.android.tools.build:gradle:1.0.0''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
setting.gradle 用于存放项目信息,例如这里,我们可以像这样命名:
include '':TestGradle'','':appcompat_v7''
TestGradle 和 appcompat_v7分别为应用项目和依赖工程的名称,如果你的工程是在某个子目录下,那么你可以使用类似于‘:libraries:lib1''这种形式标明在 libraries 文件夹下的 lib1文件夹也是一个 Gradle 项目
之后我们进入 appcomp_v7目录,建立对应的 build.gradle 配置文件,由于我们在上层目录中已经创建了一个 build.gradle 并且配置了通用的依赖信息,因此在这个配置文件中我们可以不必写入 buildscript 的相关属性。
apply plugin: ''com.android.library''
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
}
这里需要留意的是,这里的插件类型是'' com.android.library'' 标明他是一个依赖包。另外如果你的项目配置是 Eclipse 目录类型,请根据上文,配置对应的源码位置。
如此一来,你已经配置好了相关的依赖工程,接下来我们需要将这个依赖工程配置到主工程中。
方法为在主工程 build.gradle 中加入
dependencies {
compile project('':appcompat_v7'')
}
之后你再使用 Gradle 命令行就能够针对本地的依赖库进行编译。
四、使用 Android Studio 引入工程
这里简单说说如何通过 Android Studio 使用 Eclipse 的项目目录结构进行开发。
其实方法并不复杂,通过上面的步骤我们已经成功的配置好了一个 Gradle 工程的相关环境,因此我们只需要通过点击 File->ImportProject,选中 appcompat_v7和 TestGradle 所在的父目录即可,然后一路 Next,之后,你能看到你的项目被引入到了 Android Studio 中
除了代码结构以外,与 Android Studio 建的一模一样有没有!!!
本篇博文就到这里,主要介绍了如何通过建立 Gradle配置文件将 Eclipse 项目彻底导入 Android Studio。希望大家喜欢,看到这里的点个赞可好。
Android Studio Gradle编译输出信息乱码
有时候Android Studio Gradle编译时输出的信息是乱码,这是因为输出信息和信息的窗口不统一。
首先,我们先修改设置里的文件编码
Settings->Editor->File Encodings
打开都改成UTF-8
方法一
Android Studio help 菜单中“Edit Custom VM Options”
添加如下代码
-Dfile.encoding=UTF-8
添加后重新编译工程,如果还是乱码,需要关闭Android Studio重新启动有效。
方法二
在对应的module的build.gradle 中添加如下代码
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
缺点是如果module比较多就挺麻烦
方法三
增加环境变量
打开电脑高级设置
在环境变量中增加一个GRADLE_OPTS,值为-Dfile.encoding=UTF-8,记得保存
注意:保存完成后,如果还是乱码,需要关闭Android Studio 重新启动有效
Android Studio 升级后Gradle编译报错问题
又快一年没有使用AS了,正好要查看一个Android项目代码,干脆升级到新版试试看新变化,旧版本为3.1.2,目前最新版本为3.4.2,AS的升级是很简单的直接update等待即可.
升级完了,打开GIT下载的项目,启动重新编译,额额额,出现了编译错误,无法编译通过,关键是没有详细的错误提示,“error:failed link file resources”资源文件无法找到。
这个问题通常出现为资源文件出现了问题无法正常使用,可能是layout中使用的资源被删除了或者是文件名错误,或者是资源格式错误等等,具体是什么错误呢,这里没有给出详细提示.
后来发现AS一直提示升级Gradle,好吧每次升级AS好像都要升级Gradle,那就升级吧,提示升级到Gradle5.1.1,OK升级,关于Gradle的升级方法有很多种,如果能直接update成功最好,如果失败了,可以直接到官网下载相应的版本解压到AS安装目录下的Gradle下即可.
gradle安装参照:android studio gradle 两种更新方法更新
升级后记得给AS重新指定gradle,选择“use local gradle distribution”.我是手动下载的版本5.4(AS3.4.2要求gradle最低版本5.1.1,由于最新版本已经到了5.5这里使用5.4稳定版)
查看项目的build.gradle,更新到新版本,一般是和AS使用同一个版本号,如下图红色部分.
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
classpath ''com.android.tools.build:gradle:3.4.2''
classpath ''com.github.dcendents:android-maven-gradle-plugin:2.0''
}
}
allprojects {
repositories {
mavenCentral()
google()
jcenter()
maven { url ''https://www.jitpack.io'' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
更新后重新编译,依然是“error:failed link file resources",不过这次出现了详细的错误提示:
很多很多,有资源文件丢失的,layout文件缺失的,有多语言配置在默认语言strings里未设置的等等,按照提示一个一个把错误改正.再重新编译就好了.
这样一圈下来又是几个小时,似乎每次升级AS都会出现编译不通过的情况,不知道google什么时候能把AS升级Gradle升级做到向下兼容,不然就项目升级新版AS始终是个麻烦问题.
这也难怪IdeaUI java开发还是使用Maven构建的比较多,至少每次升级没有发现需要来回改动源码的情况,看来gradle还需要再健壮稳定些才能更好的推广,毕竟稳定兼容还是比较重要的.
我们今天的关于android-studio – 如何使用包含ARM程序集优化的gradle编译Android NDK和android studio for arm的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android Emulator 是否包含 Android SDK 或 Android Studio?、Android Gradle编译学习日记之二(使用 Gradle 编译 Eclipse,引入依赖资源以及迁移 Android Studio)、Android Studio Gradle编译输出信息乱码、Android Studio 升级后Gradle编译报错问题的相关信息,请在本站查询。
本文标签: