小编Ped*_*dro的帖子

ConsumerProguardFiles vs ProguardFiles

我试图构建一个包含La带有proguard 的库模块的应用程序,我注意到该库没有被混淆.试图理解为什么.在这个时刻,这是我的buildType:

release {
 minifyEnabled false
 useProguard true
 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} 
Run Code Online (Sandbox Code Playgroud)

经过一些搜索后,我遇到了ConsumerProguardFiles函数,该函数指出:

ProGuard规则文件将包含在已发布的AAR中.

然后,任何使用AAR的应用程序项目都会使用这些proguard规则文件(如果启用了ProGuard).

这允许AAR指定收缩或混淆排除规则.

这仅适用于Library项目.这在Application项目中被忽略.

现在buildType,我的库La中有以下内容:

release {
 minifyEnabled false
 useProguard true
 consumerProguardFiles 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)

现在我的库La正在使用它的proguard规则,库代码被混淆了.

所以我的问题是:

1)这种不同行为的原因是什么.为什么ProguardFiles不会混淆库的规则,而是忽略它?

2)我猜测ConsumerProguardFiles所做的是将库的规则与主应用程序proguard规则合并.这个假设是否正确?

3)简而言之:对应用程序使用proguardFiles,对库使用ConsumerProguardFiles.正确?

感谢您抽出宝贵的时间阅读!

android android-gradle-plugin android-proguard

21
推荐指数
1
解决办法
7933
查看次数

Dagger 2.10/2.11注射活动失败

我一直试图在ViewUtils类中注入Activity,但没有成功.我已经关注了几个不同的帖子,但我似乎无法理解我在实现中缺少的内容.

我知道这可能是下面帖子的重复,我真的为此道歉但老实说我看不出我错过了什么.这些是我发现的帖子:

我的实现如下:

AppComponent

@Component(modules = {
        AppModule.class, AndroidSupportInjectionModule.class, ActivityBindingModule.class
}) @Singleton public interface AppComponent extends AndroidInjector<EmblyApp> {

    @Component.Builder abstract class Builder extends AndroidInjector.Builder<EmblyApp> {}
}
Run Code Online (Sandbox Code Playgroud)

ActivityBindingModule

@Module public abstract class ActivityBindingModule {

    @ContributesAndroidInjector
    abstract LoginActivity loginActivity();
}
Run Code Online (Sandbox Code Playgroud)

LoginSubcomponent

@Subcomponent(modules = LoginSubcomponent.LoginActivityModule.class)
public interface LoginSubcomponent extends AndroidInjector<LoginActivity> {

    @Subcomponent.Builder abstract class Builder extends AndroidInjector.Builder<LoginActivity> {}

    @Module abstract class LoginActivityModule {

        @Binds abstract Activity bindActivity(LoginActivity activity);

        @Provides @ActivityScope static ViewUtils viewUtils(Activity activity) {
            return new …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection dagger dagger-2

7
推荐指数
1
解决办法
1835
查看次数

RxJava同时删除操作

我试图以一种被动的方式理解同一个observable的同时操作应该如何工作.

方案如下:

我有一个用户列表和一个删除按钮.每当我按下remove我正在调用API时:UsersApi.removeUser.可以同时删除多个用户.这意味着多个UsersApi.removeUser同时发生.

每次之后UsersApi.removeUser我都需要打个UsersApi.refreshUser电话

所以就伪代码而言,点击删除时我正在做的事情如下:

主持人:

public Observable<User> removeUser(int userId) {
        return UsersApi.removeUser(userId)
                .flatMap(user -> UsersApi.refreshUser(userId));
    }
Run Code Online (Sandbox Code Playgroud)

分段:

public void removeUser() {
   presenter.removeUser(userId)
     .subscribe(user -> {
        //remove user from ui
        // update number of total users
   })
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,由于remove的异步性质(允许多次删除),我无法保证到达订阅的内容是最新的.订阅将达到两次,每次删除一次,用户信息可能不会更新或最新.那有意义吗?

我想要发生什么:

  1. 并行/同时使用被动方法删除呼叫(由用户多次删除点击触发)
  2. 删除呼叫完成后,启动下一个删除呼叫

编辑:我想知道的是如何做/如果可以使用Rx运算符做我做的解决方案(参见edit2).

Edit2:我的解决方案是将用户操作(在这种情况下remove)排入队列,并在UsersApi.refreshUser(userId)调用完成时使用PublishSubject发出.

基本上我所做的是(伪代码):

private final PublishSubject<UserOperation> userOperationObs;
private final ConcurrentLinkedQueue<UserOperation> pendingOperations;
private boolean executingOperation;

private void emitUserOperation(final UserOperation operation) {
      if (!executingOperation) {
            executingOperation …
Run Code Online (Sandbox Code Playgroud)

android rx-java rx-java2

5
推荐指数
1
解决办法
197
查看次数

左侧固定侧边栏菜单和顶部固定标题

所以我想要做的是一个固定的侧边栏,顶部有一个固定的菜单,中间的内容可以滚动。

body,
html {
  height: 100%;
  margin: 0;
}
aside {
  background: #90EE90;
  height: 100%;
  left: 0;
  position: fixed;
  top: 0;
  width: 120px;
}
ul {
  list-style: none;
}
section {
  background: #ADD8E6;
  height: 100%;
  margin-top: 60px;
}
header {
  background: #FF0;
  height: 60px;
  left: 0;
  margin-left: 120px;
  position: fixed;
  text-align: center;
  top: 0;
  width: 100%;
  z-index: 99;
}
.container {
  left: 0;
  margin-left: 120px;
  min-height: 100%;
  position: relative;
  text-align: center;
}
figure {
  margin: 0;
}
img {
  height: …
Run Code Online (Sandbox Code Playgroud)

html css header sidebar fixed

4
推荐指数
1
解决办法
1万
查看次数