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

时间:2018-10-12 01:27:25

标签: android proguard android-proguard aar

我创建了一个库项目,该项目作为AAR文件构建,后来包含在另一个项目中。它在libs文件夹中,并且主要gradle.build文件包括它:implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')

当我尝试使用此aar文件的类时,除一个类外,所有其他类均可用。我最初以为它可能是Proguard,但我什至删除了Proguard,但它仍然不可用。这是一个公共类,甚至在我反编译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;
    }

}

有什么主意为什么不能从主项目访问此类?

谢谢!

2 个答案:

答案 0 :(得分:2)

您好,您检查了依赖性吗?如果添加到那里?我的意思是这个enter image description here。关于实现和api之间的区别,也请参考此documentation

答案 1 :(得分:1)

随机工作然后不工作后,看来Android Studio中的File -> Invalidate caches / restart可以解决问题。

因此,显然Android Studio缓存了aar的某些部分,甚至CleanRebuild都可以解决。