【发布时间】:2018-10-12 01:27:25
【问题描述】:
我创建了一个库项目,我将其构建为 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;
}
}
知道为什么我不能从主项目访问这个类吗?
谢谢!
【问题讨论】:
-
当您反编译 APK(不仅仅是 AAR)时,该类是否存在,或者只是在 Android Studio 中查看它?同一个包中的其他类是否使用这个类?通过无法访问该类,您是否意味着当您尝试使用它时另一个项目无法编译/自动完成不起作用/通过双击 shift 键搜索该类不起作用?
-
是的,如果我反编译 aar(将 aar 重命名为 zip,解压缩,打开 class.jar 文件),这个特定的类就在那里。自动完成适用于 aar 中的其他类,但不适用于
Builder类。
标签: android proguard android-proguard aar