bytedance / AabResGuard

The tool of obfuscated aab resources.(Android app bundle资源混淆工具)
Apache License 2.0
1.3k stars 179 forks source link

build.gradle 没有配置 signingConfigs 时构建失败 #88

Open drumge opened 1 year ago

drumge commented 1 year ago

失败堆栈如下:

Caused by: java.lang.NullPointerException
    at com.bytedance.android.plugin.internal.SigningConfigResolutionKt.getSigningConfigByAppVariant(SigningConfigResolution.kt:37)
    at com.bytedance.android.plugin.internal.SigningConfigResolutionKt.getSigningConfigForAGP4(SigningConfigResolution.kt:33)
    at com.bytedance.android.plugin.internal.SigningConfigResolutionKt.getSigningConfig(SigningConfigResolution.kt:23)
    at com.bytedance.android.plugin.tasks.AabResGuardTask.execute(AabResGuardTask.kt:48)
image

SigningConfig 这个定义看,storeFile 等字段都是可以为null,是不是可以理解为设计上允许不设置 signingConfigs 的,但是 SigningConfigResolution#getSigningConfigByAppVariant中的 variant.signingConfig 是可能会为 null 的, gradle api 可能为null的部分代码如下

    @Override
    public SigningConfig getSigningConfig() {
        return readOnlyObjectProvider.getSigningConfig(
                component.getVariantDslInfo().getSigningConfig());
    }
    @Nullable
    public SigningConfig getSigningConfig(@Nullable SigningConfig signingConfig) {
        if (signingConfig == null) {
            return null;
        }

        SigningConfig readOnlySigningConfig = this.readOnlySigningConfig.get(signingConfig);
        if (readOnlySigningConfig == null) {
            this.readOnlySigningConfig.put(signingConfig,
                    readOnlySigningConfig = new ReadOnlySigningConfig(signingConfig));
        }

        return readOnlySigningConfig;
    }
litchi98 commented 1 year ago

一样的问题, 请问有解决方案了吗

hanliuxin5 commented 1 year ago

如果只是想在没有密钥的情况下看输出文件的话,建议 bundleDebug 就行。