标签: android-build

如何构建Android系统映像

我在框架/基础上做了一些小改动,并在该文件夹下做了一个"mm".现在我不想在项目根目录上运行"make",因为包含进程的makefile非常慢.

是否有一种快速的方法来构建系统映像而无需经历冗长的包含过程?

android android-build android-source

11
推荐指数
1
解决办法
9604
查看次数

ProGuard构建失败"未解析的引用"

我一直在研究我的应用程序的最新版本,它测试得很好,但是当我发布ProGuard版本时,我会收到许多错误,主要是因为无法找到org.apache.http.*,我在项目中没有使用.我在整个项目中搜索了该文本但找不到它.我添加了一些依赖项,但没有我认为会使用HTTP.

我如何弄清楚为什么 ProGuard会抱怨并妥善解决?它说我可以用"--stacktrace选项"运行,但我无法弄清楚如何做到这一点.

我感谢任何帮助,因为我发现ProGuard常常令人困惑.

构建输出:

Warning: com.google.android.gms.internal.zzw$zza: can't find superclass or interface org.apache.http.client.methods.HttpEntityEnclosingRequestBase
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class …
Run Code Online (Sandbox Code Playgroud)

android proguard android-build android-proguard

11
推荐指数
1
解决办法
1万
查看次数

Android soong/android.bp构建如何工作?

谷歌推出了Soong构建系统,取代了旧的makefile系统.知道它是如何工作的吗?请告诉我有关Android.bp的信息

android android-build android-source android-soong

11
推荐指数
3
解决办法
1万
查看次数

安装的构建工具修订版 31.0.0 已损坏。使用 SDK 管理器删除并重新安装

安装的构建工具修订版 31.0.0 已损坏。使用 SDK 管理器删除并重新安装。

工作室版本4.2.1

尝试重新安装和删除以前的版本尝试从 build-tools-30.0.3 添加 dx.jar 和 dx.bat (这不是一个好的解决方案,即使添加后显示 dx.jar 文件不存在)

android android-build android-studio android-sdk-build-tools

11
推荐指数
3
解决办法
3万
查看次数

使用dexpreopt禁用构建单独的Android模块

对于我的论文,我正在修改android框架并构建源代码(4.1.1 Jelly Bean).我可以做一个完整的构建,但因为这是非常耗时的(我正在开发一个ubuntu 12.04 64位虚拟机)我想构建单独的模块.

例如:在对位置模块进行更改时,应该可以只构建已更改的模块,并创建一个新的系统映像:

mmm frameworks/base
make snod
Run Code Online (Sandbox Code Playgroud)

但这不起作用.每次我尝试启动时,新的系统映像都将无法启动,因为:

I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我试图用环境变量禁用dexpreopt

export $WITH_DEXPREOPT=false 
Run Code Online (Sandbox Code Playgroud)

export $DISABLE_DEXPREOPT=true 
Run Code Online (Sandbox Code Playgroud)

并使用'make installclean'进行完全重建.完全重建工作,并且构建中存在对框架的更改.但在做了一个新的改变之后,仍然是'mmm frameworks/base'和'make snod'导致dexpreopt不匹配.

来自'make snod'的build/core/makefile也会发出警告:'警告:启用dexpreopt,你可能需要一个完整的重建.',它来自makefile中的这一行:

ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
Run Code Online (Sandbox Code Playgroud)

这让我相信$ WITH_DEXPREOPT变量没有正确设置或读取?到目前为止,在没有进行干净的完全重建的情况下,我无法获得可引导的系统映像.我遵循的程序是否正确禁用dexpreopt,或者在更改框架并获取新的系统映像后是否还有其他方法来构建单独的模块?

构建目标是'full-eng'.

android android-build android-source android-framework

10
推荐指数
1
解决办法
8859
查看次数

Android库项目瞬态依赖松散AAR类型

我正在开发一个包含两个Android库项目的项目.当我将这些库上传到我的Maven仓库(Nexus)时,生成的pom不包含<type>aar</type>依赖项中的元素.

这是我的依赖树

* App1
 \
  * lib1
  |\
  | * lib2
  * Other libs
Run Code Online (Sandbox Code Playgroud)

您可以在此图中看到我的app依赖lib1,这取决于lib2.这两个库都是Android库项目,因此是AAR.

LIB1 /的build.gradle

apply plugin: 'com.android.library'
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    provided project(':lib2')

    compile 'com.squareup.picasso:picasso:2.3.3'
}
Run Code Online (Sandbox Code Playgroud)

LIB2 /的build.gradle

apply plugin: 'com.android.library'
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion …
Run Code Online (Sandbox Code Playgroud)

android maven android-build android-gradle-plugin

10
推荐指数
1
解决办法
663
查看次数

Android Gradle Plugin 1.1.0 - 找不到getNdkFolder(),有什么替代品吗?

我刚刚从1.0.0更新了Android Gradle插件到1.1.0,我收到了这个错误:

没有方法签名:com.android.build.gradle.LibraryPlugin.getNdkFolder()适用于参数类型:()值:[]

我试图找到gradle插件1.0.0到1.1.0的差异,但无法在网上找到任何地方.

似乎getNdkFolder方法已被更改或删除.

有替代品吗?或者任何其他方式获得NdkFolder?

我正在使用这样的方法,

def ndkDir = project.plugins.findPlugin('com.android.library').getNdkFolder()

我还针对Android问题跟踪器中的工具团队提出了问题:https://code.google.com/p/android/issues/detail? id = 152810

谢谢 !

android android-ndk android-build android-studio android-gradle-plugin

10
推荐指数
2
解决办法
7622
查看次数

如果SDK中缺少导入的类,Android项目如何编译?

好吧,也许这很简单,但我现在无法理解.

我在Android Studio 1.5.1中导入了google示例项目读卡器,它在compileSdkVerison 23上编译,它可以在我的手机上运行.

然后我走过SDK来源代码android.nfc.tech.BasicTagTechnology,我发现TransceiveResult内部android.nfc.tech.BasicTagTechnology#transceive无法解决然后我发现我的课程TransceiveResult中缺少了这个D:\Android\sdk\platforms\android-23\android.jar,但是在Android源代码中出现D:\Android\sdk\sources\android-23\android\nfc\TransceiveResult.java然后我意识到它可以隐藏在公众面前,而不是出口,实际上是

/**
 * Class used to pipe transceive result from the NFC service.
 *
 * @hide
 */

public final class TransceiveResult implements Parcelable
Run Code Online (Sandbox Code Playgroud)

然后我做了一些随机的事情,在我同步项目后,清理并重建,无效缓存/重启,仍然无法解决TransceiveResult方式,我想知道因为符号已经丢失在SDK中,如何编译项目顺利?

编辑我终于啊哈

我们调用android.nfc.tech.BasicTagTechnology#transceive代码而不是TransceiveResult在编译时我们不需要解决TransceiveResult,我们只需要解析android.nfc.tech.BasicTagTechnology#transceive代码中引用的代码,那时我就迷失了.

android android-build android-sdk-tools android-studio android-studio-import

10
推荐指数
1
解决办法
972
查看次数

Android Instant Run慢速构建

我一直在讨论即时运行,好像它处于一个很好的状态,但是我和我的团队经常会遇到这个功能的重大问题,并且由于它而导致编码体验降级.

在即时运行之前,我们的干净构建是〜1分30秒,之后我们得到的构建大约是25秒或偶尔的40秒.虽然即时运行确实似乎有时会将构建减少到6-12秒,但有时候,它会导致我们进入疯狂的长版本,我们已经看到长达13分钟,大大抵消了增量编译的任何收益.

它似乎在大多数时候,小的变化仍然需要40秒.有时它是6秒,但这是非常罕见的.

感觉很像是即时运行降低了我们始终如一地高效工作的能力.以下是我们的一些应用程序特定配置:

Android Studio 2.1.1,Android插件2.1

multiDexEnabled true

dexOptions {
  preDexLibraries true
  javaMaxHeapSize "4g"
  maxProcessCount 4
  incremental true
  dexInProcess true
}

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx6g -XX:MaxPermSize=512m
Run Code Online (Sandbox Code Playgroud)

我们做错了什么,或者有人找到了解决方法吗?

编辑:几个开发人员似乎遇到了这个问题.我在这里跟踪一个错误.随意加星标并添加到讨论中.

android android-build android-gradle-plugin android-instant-run

10
推荐指数
1
解决办法
879
查看次数

Gradle插件更新后,Android Databinding构建失败并迁移到annotationProcessor

  • 要在我的Android Studio版本中支持Instant Run,我需要将Gradle插件从版本升级2.2.32.3.3
  • 我知道我应该迁移到annoationProcessor,我相信我已经正确地遵循了该指南
  • 执行此操作后,Android DataBinding代码生成失败

与之前相关的迁移指南指出,我所需要的只是

  • 确保您使用的是Android Gradle 2.2插件或更新版本
  • 从构建脚本中删除android-apt插件
  • 将所有apt,androidTestApt和testApt依赖项更改为新格式

这应该是成功构建项目所需的全部内容.但它没有建立.

构建输出

Gradle构建完成了101个错误和23个警告(12秒481ms)

所有错误都遵循相同的模式:

  • C:\用户\ FooAdapter.java
    • 错误:包com.example.app.databinding不存在
    • 错误:找不到符号类 ItemFooBinding

在构建控制台中可以找到一条有趣的消息:

警告:任何处理器都无法识别以下选项:'[android.databinding.minApi,android.databinding.enableDebugLogs,android.databinding.sdkDir,android.databinding.bindingBuildFolder,android.databinding.enableForTests,android.databinding.modulePackage, android.databinding.generationalFileOutDir,android.databinding.xmlOutDir,android.databinding.artifactType,android.databinding.printEncodedErrors,android.databinding.isTestVariant]'

我想指出......

  • 我认为我在某些XML文件,绑定表达式或命名问题中没有错误.当我使用旧的gradle插件版本(以及所有其他源文件是最新的)切换回Git分支时,同一组源和XML构建
  • 我也随着讨论的输出生成错误的极限在这里,虽然这似乎并不相关,现在,因为你可以看到,我现在有"只有" 101个错误.:)

附加信息

以下差异显示了我如何修改我的gradle文件:

  1. build.gradle DiffChecker链接
  2. app/build.gradle DiffChecker链接

另外,作为一个快速概述,这里是项目使用的一些"更有趣"的插件和库的列表:

  • 科特林
  • Android数据绑定
  • 领域
  • 改造
  • 匕首
  • ButterKnife(我知道......)
  • Multidex支持库

有没有人知道可能是什么问题?任何帮助或想法将非常值得赞赏!

android android-build android-studio android-gradle-plugin android-databinding

10
推荐指数
2
解决办法
6383
查看次数