android - AAR 文件中的类在 Android Studio 中不可用

标签 android proguard android-proguard aar

我创建了一个库项目,我将其构建为 AAR 文件,然后将其包含在另一个项目中。它位于 libs 文件夹中,主 gradle.build 文件包含它:implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')

当我尝试使用这个 aar 文件的类时,除了一个类之外,所有类都可用。我一开始以为是Proguard,后来我连Proguard都去掉了,还是不可用。这是一个公共(public)类,甚至在我反编译 AAR 文件时它也存在。

这是内容:

package com.onboarding;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.Keep;


/**
 *
 */
@Keep
public class Builder {


    /**
     *
     */
    public static String mainColor = null;
    public static String baseUrl = null;
    public static Class firstActivity = null;
    public static Class onboardingSettingsActivity = null;


    /**
     *
     */
    public static String tosUrl = null;
    public static String privacyUrl = null;
    public static String cookieUrl = null;
    public static String contactsLearnMoreUrl = null;


    /**
     *
     */
    private static Builder builder = null;


    /**
     *
     */
    private Builder() {}


    /**
     *
     */
    public static Builder init() {
        if (builder == null) {
            builder = new Builder();
        }
        return builder;
    }


    /**
     *
     */
    public void start(final Context context) {
        final Intent intent = new Intent(context, Onboarding1.class);
        context.startActivity(intent);
    }


    /**
     *
     */
    public Builder setMainColor(final String color) {
        mainColor = color;
        return this;
    }


    /**
     *
     */
    public Builder setBaseUrl(final String url) {
        baseUrl = url;
        return this;
    }


    /**
     *
     */
    public Builder setFirstActivity(final Class c) {
        firstActivity = c;
        return this;
    }


    /**
     *
     */
    public Builder setOnboardingSettingsActivity(final Class c) {
        onboardingSettingsActivity = c;
        return this;
    }


    /**
     *
     */
    public Builder setTosUrl(final String u) {
        tosUrl = u;
        return this;
    }


    /**
     *
     */
    public Builder setPrivacyUrl(final String u) {
        privacyUrl = u;
        return this;
    }


    /**
     *
     */
    public Builder setCookieUrl(final String u) {
        cookieUrl = u;
        return this;
    }


    /**
     *
     */
    public Builder setContactsLearnMoreUrl(final String u) {
        contactsLearnMoreUrl = u;
        return this;
    }

}

知道为什么我不能从主项目访问这个类吗?

谢谢!

最佳答案

在随机工作然后不工作之后,Android Studio 中的 File -> Invalidate caches/restart 似乎成功了。

显然 Android Studio 缓存了 aar 的某些部分,即使是 CleanRebuild 也无法修复。

关于android - AAR 文件中的类在 Android Studio 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52770966/

相关文章:

proguard - Proguard 什么时候可以优化枚举?

android - Proguard 与 Roboguice

java - 如何更改 ListView 的顺序

android - 如何动态更改依赖项?

java - ProGuard 包名称缩写

Android Proguard Kotlinx 协程警告

java - 开发第一个 Android 应用程序时出错

android - Selendroid 不会启动某些应用程序

annotations - 防止 Proguard 使用注释混淆子类

Android库模块使用proguard