3

我有一个应用程序,我正在尝试使用我的原始包名称进行编译,与此非常相似:com.mypackage.name_.app'

到目前为止,该应用程序已成功编译,我将其迁移到最新版本的 Gradle,并且正在使用 API 24 进行编译。之前我使用的是旧版本的 Gradle 和 API 23。

现在,在尝试编译该应用程序时,我收到此错误:

    APT: error: attribute 'package' in tag is not a valid Java package name: 'com.mypackage.name_.app'.
    .
    .
    Failed to execute aapt
    com.android.ide.common.process.ProcessException: Failed to execute aapt
    .
    .
    Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
    at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
    at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)

我在这里发现 AAPT2 不允许在您的包名称的一部分末尾添加下划线:我的所有 android studio 项目和所有新项目都给我来自调试 android 清单文件的错误

但是,如果您之前编译并发布到 Google Play 中的应用程序在您的包名称的一部分末尾带有下划线,会发生什么情况?例如我发现了这个例子:https ://play.google.com/store/apps/details?id=com.mobincube.tarifas_taxi_.sc_35K1XV

它以这个包名部分“ .tarifas_taxi_.”发布到 Google Play

那位开发人员(和我)现在如何在那个位置用下划线编译我们的应用程序?

4

1 回答 1

3

AAPT2 不允许以“单词”结尾或以下划线字符开头的包名称。
这里对于包“com.mypackage.name_.app”,违规词是“name_”。删除下划线或使用“name_foo”(单词中间允许下划线)使工作正常。
问题跟踪器上有一个未解决的问题,AAPT2 的所有者正在查看它。

更多信息:https ://issuetracker.google.com/68468089

于 2018-03-15T16:46:25.977 回答