小编YoM*_*ero的帖子

如何仅将 manifestPlaceholders 分配给检测 APK

我的 AAR 清单中有一个占位符。当我使用 assembleRelease/assembleDebug 时,AAR 构建没有问题,但是当我运行我的 Android 检测测试时,gradle 无法构建检测 APK 并抛出一个错误,看起来像这样

Attribute <blah-blah>@<xyz> at manifestMerger....xml requires a placeholder substitution but no value for <my-place-holder> is provided.
Run Code Online (Sandbox Code Playgroud)

仅出于测试目的(并确认我是否可以为特定构建类型设置占位符的值),我在调试构建类型中设置了占位符值:

android { ... buildTypes { debug { manifestPlaceholders = [my-place-holder:"my-value"]
Run Code Online (Sandbox Code Playgroud)

它起作用了(发布版本保留了占位符,而在调试版本中替换了占位符)。但是,我不想(实际上也不应该)这样做,因为这意味着我的调试版本将覆盖 AAR 清单中的占位符,但我必须将占位符保留在清单中,以便我的 AAR 用户可以覆盖它.

有人知道如何将 manifestPlaceholders 分配给检测 APK?

android android-testing android-gradle-plugin

7
推荐指数
0
解决办法
295
查看次数

Android插孔内部未知错误415

我正在Mac(macOS Sierra 10.12.6)中构建AOSP 8,而Jack因未知内部错误而失败

Internal unknown error (415), try 'jack-diagnose' or see Jack server log
Run Code Online (Sandbox Code Playgroud)

杰克诊断显示:

ps: illegal argument: -o
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
          [-g grp[,grp...]] [-u [uid,uid...]]
          [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
       ps [-L]
Port 8073 is used by another process (pid=), please ensure to free the port or change port configuration in '/Users/user/.jack-settings' and '/Users/user/.jack-server/config.properties'
ps: illegal argument: -o
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
          [-g grp[,grp...]] …
Run Code Online (Sandbox Code Playgroud)

android android-build android-source android-jack-and-jill

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

AOSP的libc ++。so是否与NDK的libc ++ _ shared.so相同?

我正在一个Android应用程序中工作,其中一个共享库(我在Android Studio中构建,我们称之为libA.so)动态地由供应商加载另一个共享库提供程序(我们称之为libB.so)。我知道我不应该在我的应用程序中使用多个C ++运行时库(https://developer.android.com/ndk/guides/cpp-support.html#important_considerations),因此我们决定在其中使用c ++ _ shared两个库。

libB.so(由卖方提供的库)在构建AOSP时进行编译和链接(卖方坚持以这种方式构建库,对此无法做很多事情)。的makefile libB.so将此STL标志设置为c ++ _ shared:

LOCAL_NDK_STL_VARIANT := c++_shared
Run Code Online (Sandbox Code Playgroud)

当我查看libB.so库中的NEEDED标签时,可以看到对libc++.so

 0x0000000000000001 (NEEDED)             Shared library: [libdl.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc++.so] <----
 0x0000000000000001 (NEEDED)             Shared library: [libc.so]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so]
 0x000000000000000e (SONAME)             Library soname: [libB.so]
Run Code Online (Sandbox Code Playgroud)

当我运行readelf -d libc++.so检查AOSP的libc ++。so的内容时

Dynamic section at offset 0xe4b40 contains 29 entries:
  Tag        Type                         Name/Value
 0x0000000000000003 (PLTGOT)             0xe6310
 0x0000000000000002 (PLTRELSZ)           22128 (bytes)
 0x0000000000000017 (JMPREL)             0x39ff8
 0x0000000000000014 …
Run Code Online (Sandbox Code Playgroud)

android android-ndk android-source

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

JaCoCo + Mockito + Android测试:报告零覆盖率

我知道这个主题有很多问题(和答案),但我已经尝试了在SO和其他网站上找到的所有内容,而且我还没有找到一种方法让JaCoCo包括使用Mockito的Android测试的覆盖范围.

我的问题:我想使用JaCoCo生成单元测试和仪器测试(androidTest)的代码覆盖率.我正在使用Mockito来模拟一些课程.我在GitHub中找到了一个使用JaCoCo的样本并将其作为起点.

https://github.com/rafaeltoledo/unified-code-coverage-android

当我运行该示例中包含的自定义jacocoTestReport任务时,代码覆盖率报告已正确生成,代码覆盖率为100%.该报告包括单元测试和android测试.但是,该示例不使用Mockito(我需要),因此我将以下内容添加到app/build.gradle中

dependencies {
 ...
 androidTestCompile 'org.mockito:mockito-android:2.10.0'
}
Run Code Online (Sandbox Code Playgroud)

我在app/src/main/java/net/rafaeltoledo/coverage/Util.java中添加了一个名为Util的非常简单的Java类

public class Util {
    public int anIntMethod() {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

并将以下简单测试添加到app/src/androidTest/java/net/rafaeltoledo/coverage/MainActivityTest.java中的现有android测试

@Test
public void utilMethod() {
    Util util = Mockito.mock(Util.class);
    Mockito.doReturn(10).when(util).anIntMethod();
    assertThat(util.anIntMethod(), is(10));
}
Run Code Online (Sandbox Code Playgroud)

当我再次运行jacocoTestReport时,代码覆盖率降至88%,并且报告实际上显示我的测试未涵盖Util类,即使我显然有一个练习该类的测试.

(我想添加报告的截图,但我没有足够的声誉,所以这里有一个覆盖报告和执行报告的链接,表明两个测试实际上都已执行)

版本信息:Gradle插件:2.3.3 Jacoco:0.7.8.201612092310 Android Studio:2.3.3 Android构建工具:25.0.2

这是Jacoco限制还是我做错了什么?

android mockito jacoco android-gradle-plugin android-instrumentation

2
推荐指数
1
解决办法
2200
查看次数