当前位置: 首页 > 知识库问答 >
问题:

AAPT2编译失败:Android 3.0 Canary 1上的dimen无效

梁浩涆
2023-03-14

我正在玩Android的即时应用程序。我安装了所有正确的包,并厌倦了用即时应用程序支持创建新的应用程序(在打包新应用程序时勾选即时应用程序的框)。问题是我总是遇到编译工具的问题。其他人有这个问题吗,并且能够找到任何解决办法。

我的环境:

  • AndroidStudio 3.0金丝雀1
  • 编译SDK:25
  • 构建工具:“26.0.0 rc2”
  • Gradle插件:3.0.0-alpha1
  • Gradle:尝试了Gradle-4.0-milestone1和2
  • Java 1.8/1.7
  • 操作系统:尝试了Windows 10和Linux Ubuntu 16.4 LTS

错误是:

Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
aapt2 compile -o /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/res/merged/androidTest/debug /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml
Issues:
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:520 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:521 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:568 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:594 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:595 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:597 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:598 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:599 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:600 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:601 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:602 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:603 invalid dimen
:feature:mergeDebugAndroidTestResources FAILED

该行包含(520):

<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>

希望我能为你提供足够的信息来解决这个问题。非常感谢。

共有3个答案

傅明知
2023-03-14

通过在渐变中添加以下行,我解决了这个问题。属性文件

android.enableAapt2=false
陆仲渊
2023-03-14

解决方法是将开发机器切换到使用“”的区域设置作为小数点。

可以通过以下方式进行更改:

秦滨海
2023-03-14

下面提到四种不同的解决方案:A、B、C和D;选择一个适合你的:

这是修复Android Studio的通用方法(见下文)的唯一Ubuntu替代方案。请注意,您可能仍然希望实现关于修复shell的部分,甚至可能将任何修改还原到studio。sh以完全确认此修复。

我厌倦了修补我的工作室。sh对于每一个金丝雀更新,所以我想出了一个更好的解决方案,消除了这个步骤。它在Ubuntu上运行,只需要创建一个。设置有问题的病态环境变量的桌面启动器。

>

准备您的本地图标和应用程序目录,以防不存在:

mkdir -vp ~/.local/share/icons ~/.local/share/applications

创建一个Android Studio 3图标,使你的启动器从默认图标中脱颖而出,并将其保存到~/。local/share/icons/android-studio-3。png。或者你也可以用我在原稿上摩擦一块奶酪制作的(~/opt/android-studio-3/bin/studio.png):

通过复制并粘贴到shell中创建Android Studio 3启动器文件:

cat <<-EOF > ~/.local/share/applications/android-studio-3.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Android Studio 3
Icon=android-studio-3
Exec=env LC_NUMERIC="en_US.UTF-8" opt/android-studio-3/bin/studio.sh "%f"
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-studio
EOF

使其可执行:

chmod +x ~/.local/share/applications/android-studio-3.desktop

现在是棘手的部分。理想情况下,您应该能够从Dash中找到、开始并创建Android Studio 3的短片:

但是就我个人而言,我几乎总是很难让Ubuntu检测到我的新文件或更改的桌面文件。一个解决方案是退出并再次登录。如果有人知道如何强制重新扫描,请告诉我!

这里有一个简单、优雅、半永久性的解决方案:只需修改Android Studio的启动脚本即可更改其自身的区域设置:

>

  • 编辑studio。sh例如~/opt/android studio/bin/studio。sh或任何安装路径。

    在文件顶部的某个地方,在#下面/bin/sh在第一行代码出现之前,添加以下内容:

    LC_NUMERIC=“en_US.UTF-8”。

    下面是我的studio.sh的顶部部分:

    #!/bin/sh
    #
    # ---------------------------------------------------------------------
    # Android Studio startup script.
    # ---------------------------------------------------------------------
    #
    
    LC_NUMERIC="en_US.UTF-8"
    
    message()
    {
      TITLE="Cannot start Android Studio"
    ...
    

    重启Android Studio

    当您稍后升级您的Android Studio安装时,它将检测到您已经修改了studio.sh。您应该让安装程序替换文件,然后按照上述方法再次执行补丁。最后重启Android Studio,您将再次准备好。其他解决方案不受此影响。

    使用gradlew从外壳构建也需要应用修复。这只会影响shell,而不会影响Android Studio。挑一个:

    >

    LC_NUMERIC="en_US. UTF-8".

    或者,要使其永久用于项目,请编辑项目根目录中的gradlew文件,并在顶部某处添加以下内容:

    LC_NUMERIC=“en_US.UTF-8”

    比如这里:

    #!/usr/bin/env bash
    
    ################################################################################    
    ##
    ##  Gradle start up script for UN*X
    ##
    ################################################################################
    
    LC_NUMERIC="en_US.UTF-8"
    
    # Add default JVM options here. You can al...
    DEFAULT_JVM_OPTS=""
    
    APP_NAME="Gradle"
    ...
    

    当然,您也可以通过使用别名gr添加全局和永久修复:

    cat <<EOF>>~/.bash_aliases
    
    # Fixing Android Studio 3 Canary bug https://stackoverflow.com/a/44304075/2412477
    alias gr='LC_NUMERIC="en_US.UTF-8" ./gradlew'
    EOF
    

    请注意,这是在Ubuntu上添加bash shell别名的方式;如果你在不同的操作系统上,也许你应该附加到~/. bashrc或~/. file中。

    然后启动一个新的shell,现在不再调用/gradlew使用新别名gr

    gr清理assDebug

    #2的明显缺点是必须手动将其应用于所有项目。我认为这样做的好处是,当安装了新的gradlew时,它会自动被覆盖,就像studio一样。sh被替换,因此您可以测试错误是否已修复=)

    就我个人而言,我不会这么做,但为了完整起见,我添加了它,因为这绝对是一种让appt2停止给出错误的方法。将这一行添加到你的渐变中。属性Android。enableApt2=false

  •  类似资料:
    • 我在Arch Linux上使用Android Studio3.0Canary3,我正在玩它,试图制作一个小应用程序。我做了一些研究后,张贴的问题,但没有一个解决方案,我找到对我不工作。任何帮助都将不胜感激。谢谢

    • 尝试使用aapt2而不是aapt。编译似乎还可以,但我有一个问题: 这是清单,正如你所看到的属性 android:compileSdkVersion 明确定义: 怎么会呢? 编辑:在AndroidManifest.xml.使用xmllint没有运气。然后我刚刚从清单中删除了android: compileSdkVersion。它链接成功了。我很困惑。

    • 我试图在eclipse中用maven构建一个spark应用程序,但我遇到了一个编译失败。我修正了系统变量,给它提供到JDK的路径,而不是到JRE的路径,如下所示: 并且我将这个字符串添加到变量中,但是没有起作用。因此,我尝试不使用如下但没有新内容。 因此,我尝试通过eclipse来指出我的JDK,如下所示:,我也选择了JDK,但这个解决方案也不起作用,所以我决定使用cmd来修复它: 我检查了,结果

    • 在两台不同的笔记本电脑上使用maven构建相同的项目。一个是运行良好,一个是显示错误。 状态:两个系统的配置相同。 使用的命令:mvn clean install-DskipTests=true 错误: 我什至尝试删除所有内容,例如再次创建. m2文件夹。

    • 我尝试匹配这个表达式: * ^X-Spam-Flag:是的 我用这个代码: 但是我有这个错误: PHP警告:preg_match():编译失败:在偏移量0处没有任何重复 regex和*和^有问题,但我能纠正吗?

    • 2017-05-23T15:14:03.19+0000[STG/17]出---->下载的应用程序包(59M)2017-05-23T15:14:03.36+0000[STG/0]出站失败:Buildpack编译步骤失败2017-05-23T15:14:03.36+0000[STG/0]错误2017-05-23T15:14:03.46+0000[API/0]错误遇到错误:应用程序在Buildpack编