文章目录 一、org.gradle.api.tasks.testing.Test 单元测试配置类 1、Test 单元测试配置回顾 2、启动单元测试 3、设置 JVM 系统属性 4、打开命令行标准输出...二、单元测试示例 单元测试类 gradle 配置 1、右键运行单元测试 3、执行单元测试 Gradle 任务 4、查看单元测试命令行输出 5、查看单元测试报告 Android Plugin DSL Reference...org.gradle.api.tasks.testing.Test 单元测试配置类 : https://docs.gradle.org/current/javadoc/org/gradle/api.../tasks/testing/Test.html 一、org.gradle.api.tasks.testing.Test 单元测试配置类 ---- UnitTestOptions ( build.gradle...org.gradle.api.tasks.testing.Test 单元测试配置类 : https://docs.gradle.org/current/javadoc/org/gradle/api/tasks
Android 官方库也会被扫描出非 SDK API 调用,针对这种情况,需要分情况讨论: [2.png] 该 API 调用查看 v7 support 包源码可以发现已经被 try-catch 住了,测试了相关类也可以正常运行...四、Apache HTTP client 相关类找不到 将 compileSdkVersion 升级到 28 之后,如果在项目中用到了 Apache HTTP client 的相关类,就会抛出找不到这些类的错误...五、其余适配 4.1 前台 Service 在 Android P 中,如果 targeSdkVersion 升级到 28,使用前台 Service 必须要申请 FOREGROUND_SERVICE 权限...4.3 com.android.internal 包下某些类找不到 升级到 28 之后,应用编译后抛出 com.android.internal 包下面有些类找不到的异常,经过查找发现这些类已经从 SDK...针对这种情况目前有两种处理办法: 移除该类的调用逻辑; 在应用中新建一个同名类,将被移除类的所有代码逻辑复制到新建类中(必要时可能需要将被移除类相关类同时拷贝一份到应用中),然后将应用中所有相关 import
Android 官方库也会被扫描出非 SDK API 调用,针对这种情况,需要分情况讨论: 该 API 调用查看 v7 support 包源码可以发现已经被 try-catch 住了,测试了相关类也可以正常运行...四、Apache HTTP client 相关类找不到 将 compileSdkVersion 升级到 28 之后,如果在项目中用到了 Apache HTTP client 的相关类,就会抛出找不到这些类的错误...五、其余适配 4.1 前台 Service 在 Android P 中,如果 targeSdkVersion 升级到 28,使用前台 Service 必须要申请 FOREGROUND_SERVICE 权限...4.3 com.android.internal 包下某些类找不到 升级到 28 之后,应用编译后抛出 com.android.internal 包下面有些类找不到的异常,经过查找发现这些类已经从 SDK...针对这种情况目前有两种处理办法: 移除该类的调用逻辑; 在应用中新建一个同名类,将被移除类的所有代码逻辑复制到新建类中(必要时可能需要将被移除类相关类同时拷贝一份到应用中),然后将应用中所有相关 import
该 API 调用查看 v7 support 包源码可以发现已经被 try-catch 住了,测试了相关类也可以正常运行,而且在适配过程中升级 rc 版本的 support-v7 包会导致应用编译不过,所以目前...四、Apache HTTP client 相关类找不到 将 compileSdkVersion 升级到 28 之后,如果在项目中用到了 Apache HTTP client 的相关类,就会抛出找不到这些类的错误...五、其余适配 4.1 前台 Service 在 Android P 中,如果 targeSdkVersion 升级到 28,使用前台 Service 必须要申请 FOREGROUND_SERVICE 权限...4.3 com.android.internal 包下某些类找不到 升级到 28 之后,应用编译后抛出 com.android.internal 包下面有些类找不到的异常,经过查找发现这些类已经从 SDK...针对这种情况目前有两种处理办法: 移除该类的调用逻辑; 在应用中新建一个同名类,将被移除类的所有代码逻辑复制到新建类中(必要时可能需要将被移除类相关类同时拷贝一份到应用中),然后将应用中所有相关 import
:xx.xx → Android 2.1,增加了很多Material Design的兼容类和素材,包含v4的全部内容,用得最多; support-v13 → Android 3.2,为平板开发推出的版本兼容包...0x2、AndroidX Library的出现 从Android 9.0 (API 28) 开始,appcompat-v7:28.0.0 作为 Support Library的 终结版本,未来的新特性和改进都会进入...中修改distributionUrl指向版本号; compileSdkVersion → 升级到28及以上; buildToolsVersion → 升级到28.0.2及以上; ② 迁移AndroidX...④ 依赖类重新打包 参照AndroidX变化中的类映射改,可直接查 官方文档 或下载映射的 CSV文件,修改示例如下: import android.support.v7.app.AlertDialog...② 执行完Migrate to AndroidX后就完成AndroidX迁移了?
Beta 3 是下个版本 Android 的早期发布候选版,拥有接近最终版的系统行为和官方 Android P API (API 等级28)。...在您准备好后,请尽情探索 Android P,了解您能在自己的应用中使用哪些新功能和新 API。...想要使用新 API 进行构建,您只需将官方版 API 28 SDK 和工具下载到 Android Studio 3.1,或使用最新的 Android Studio 3.2 版本。...随后将您的项目的 compileSdkVersion 和 targetSdkVersion 升级到 API 28。 您可以观看这支视频快速了解 Android P 开发者预览版新亮点。...API 28 编译,可能也已经 target 到 API 28 的 APK 更新发布出来。
com.android.support:appcompat-v7:xx.xx→ Android 2.1,增加了很多Material Design的兼容类和素材,包含v4的全部内容,用得最多。...AndroidX Library 的出现 从Android 9.0 (API 28) 开始,appcompat-v7:28.0.0 作为 Support Library的 终结版本,未来的新特性和改进都会进入...,意味着后续android.*包下的API都是随系统发布的,而androidx.包下的API都是随着扩展库发布的,API基本不依赖于操作系统的具体版本。...如果迁移失败,就重复下面的①②③④步进行手动迁移吧~ ① 版本要求 Android Studio → 升级到3.2及以上; Gradle插件 → 升级到4.6及以上,可在gradle/wrapper/gradle-wrapper.propertie...中修改distributionUrl指向版本号; compileSdkVersion → 升级到28及以上; buildToolsVersion → 升级到28.0.2及以上; ② 迁移AndroidX
从2019年下半年,所有安卓外部应用市场强制要求应用升级到TargetVersion 28。斗破苍穹的升级过程需要分以下两步来做。...一、升级到Target23,兼容Android6.0 问题:敏感权限需要动态申请,不会安装时自动授权。...目前,API-> 敏感权限可以查看google的Android开发文档。但是敏感权限->API,这个目前没有官方文档可以查。...1、 确认各个组件的SDK编译版本 2、 与组件方确认是否需要升级 3、 逐个升级与测试 AndroidP升级过程总结 从2019年下半年,所有安卓外部应用市场强制要求应用升级到TargetVersion...目前,API-> 敏感权限可以查看google的Android开发文档。但是敏感权限->API,这个目前没有官方文档可以查。
原来的是 targetSdkVersion = 25,因vivo应用市场提醒需要升级到 28,可能出现一系列问题,现记录如下: 1.微信登录异常错误 Only fullscreen opaque activities...can request orientation 点击微信登录,确定授权后提示“应用程度崩溃”,后台报错如上。...opaque activities can request orientation The problem seems to be happening when your target sdk is 28... Note:parent="Theme.AppCompat.Light.NoActionBar" is needed for api 28....Previously had something else at api 26. Was working great but started to give problem at 28.
SDK 版本号升级 和尚首先对 SDK 版本号进行升级,之后对升级后的应用逐步进行适配更新; 当前版本 minSdkVersion = 17 targetSdkVersion = 28 compileSdkVersion...= 28 buildToolsVersion = '28.0.3' 升级后版本 minSdkVersion = 17 targetSdkVersion = 31 compileSdkVersion...A1: 升级 Android 12 对应 Gradle 版本 历史版本 Gradle 对应版本是 3.3.3,升级到最新的 7.0.4; classpath 'com.android.tools.build...A2: 升级 Android 12 对应 distributionUrl Gradle 版本 和尚将本地 gradle-wrapper.properties 中升级到与 classpath 一致的...A12: Gradle 升级后 dexOptions 已弃用,删除即可 dexOptions { preDexLibraries = true } Tips: 和尚在测试过程中,明明代码中所有涉及
正文 ---- AS升级到 Android Studio 3.x(Stable 3.0.0 ~ 3.4.0)之后,会遇到一些版本升级变更的问题。...关键字依赖发生变化: compile(implementation/api),provided(compileOnly),apk(runtimeOnly) AS 3.0后,在使用新依赖配置项时,引用本地库使用...关于implementation和api的区别,请移驾 Android Studio Gradle依赖项配置 6....AS 3.2注意事项 AS升级到 3.2 时应该注意: 1)compileSdkVersion 版本升级到28及以上; 2)buildToolsVersion 版本改为28.0.3及以上; 3)Gradle...AS 3.3.0警告问题 在 AS升级到 3.3.0,Gradle升级到 4.10.1+ 时,编译会一直提示警告。
在 2018 Google I/O 大会上,Android 团队发布了 AndroidX。它是 Android 团队用于开发、测试、打包、定版以及在 Jetpack 中发布库时所用到的开源代码。...这对 Support 库而言尤其是一个好主意,因为升级到 28.0.0(截至撰写本文的最终版本)将使迁移更加顺畅。...同样的,自动转化可能使得某些类需要使用它们的完整类路径。做最少的手工修正是一个好的思路。作为清理工作的一部分,我们移除了完整类路径,并在必要时重新添加了相关引用。...最后,一些少量测试相关的修改被加入工程,围绕着测试过程中的依赖冲突(参考这次提交)和 Room 的测试用例(参考这次提交)。这时我们的工程完成全部转化,并且我们的测试都已通过。...遇到的问题主要涉及依赖库或类的错误转换,以及新库中的 API 变化。 幸运的是这些都相对容易解决。Plaid 现在已经准备好再被用起来了!
果然,在Android 6.0 (API level 23)及以前,APP默认信任系统自带的CA证书以及用于导入的CA证书,Android 6.0 (API level 23)以后,APP默认只信任系统自带的...3.准备一个 targetSdkVersion < 24 的 APP 安装包 Google Play Store要求今年 8 月之后上线、11 月之后更新的 App 必须升级到 Target API 28...没有办法老大说话了,国内各大应用市场手机APP纷纷响应号召在2019 年统一要求 APP API 版本必须大于 28,这种安装包很难找到了,而且互联网产品迭代这么快,不一定能保证安装包可用。...但是,因为测试的是企业微信小程序,想让企业微信的开发人员帮我这么干,简直是白日做梦,更不用说安全等问题… 6.webview抓包失败 上面可以解决android原生抓包问题,但在android7.0以上的手机...注释是为了忽略掉父类的处理,默认执行下去。 6.1警告 这样的配置操作是敏感且危险的,只能用于测试环境方便抓包,线上包一定注意要恢复配置。
换logo 简单粗暴制作符合微信要求的logo 百度上搞了个512×512的png图片,微信要求大图108*108像素 ,小图28*28像素 看动画~ ?...同样的方式制作28*28像素的png图片 如何生成应用签名 ? 官方提供了签名工具,现在后安装到手机上,如下所示: ?...在测试微信分享的时候,如果你直接在Android Studio运行项目,那样使用的肯定是debug的keyStore了,这样分享的时候会被微信拒绝,微信会生成缓存,即便后来你更换了正式的keystore...生成APK后,安装到手机,再分享下,good ,233333333333…. ---- 添加微信SDK到工程 微信SDK下载 ? 下载解压后,我们可以看到 ?...这里我将APP_ID封装到了Constants类中。
深灰名单: 对于 Target Api SDK 低于 API 28 的应用,允许使用深灰名单接口。 对于 Target Api SDK 为 API 28 或更高级别的应用:行为与黑名单相同。...影响范围最大的当属 深灰名单, 因为官方强烈不推荐使用,但是为了给开发者缓冲时间,只有 Target Api 28+ 才会出现异常,代表性的 Api 有 DexFile 类: Ldalvik/system...热修复 框架, 这意味着如果您的App 是以 28+为目标版本,并且运行在 android P 之上,则这些热修复框架可能无法正常运行。..." android:required="false"/> Target 28 可以和 android 6.0 一致。...我们可以通过 adb命令 让我们的调试设备处于特定分组来测试相关的行为。
当应用的 targetSdkVersion 升级到 Android 11 时,分区存储特性会强制生效。...但如果应用 targetSdkVersion 未升级到 Android 11,运行在 Android 11 系统上时,分区存储不会强制生效。...API 01 Q: Android 10 或者 Android 11 中使用了黑名单或者灰名单的 API 后,会被 Google Play 应用商店拒绝吗?...Android 11 上的 App,Android 会根据各 App 的 targetSdkVersion = 30 / 29 / 28 来执行不同的代码吗?...即将到来的 Android 11 Beta Android 11 第四个开发者预览版现已发布,带来了最新的 bug 修复、API 更新,以及可供您的应用测试的最新功能。
这样做是没问题的,但如果把项目的 SDK 升级到 28 或以上,它就不再有效了,原因是 TabLayout 源码中的变量名修改了,所以代码也要改成这样: public void setIndicatorWidth...="@android:color/transparent" /> 复制代码 在代码中,当 Tab 添加完毕后,替换成自定义的 Tab: TabLayout.Tab tab = tabLayout.getTabAt...SDK 28+ 属性配置 如果你使用的 SDK 版本是 28 或以上,并且需要将 Indicator 的宽度修改成和文字宽度一样,那么太棒了,现在你只需要给 TabLayout 配置一个属性就好了: <..." android:layout_height="wrap_content" app:tabIndicatorFullWidth="false" /> 复制代码 当 tabIndicatorFullWidth...android:color="@color/colorAccent" /> 复制代码 然后在布局文件中配置
新增执行批量操作 为实现各种设备之间的一致性并增加用户便利性,Android 11 向 MediaStore API 中添加了多种方法。...MediaStore API 新增的方法 ? 系统在调用以上任何一个方法后,会构建一个 PendingIntent 对象。...使用直接文件路径和原生库访问文件 为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 访问共享存储空间中的媒体文件。...意思就是在新系统新安装的应用才会启用,覆盖安装会保持传统分区模式,例如: 系统通过 OTA 升级到 Android 10/11 应用通过更新升级到 targetSdkVersion >= 29 补充 Q...这类接口以前就设计好了,我也觉得也不算特别友好;最后测试也需要重新进行。
在 Android 11 上,ART (Android 运行时) 扩展了 JVMTI API,引入了一个名为 Structural Class Redefinition (类的结构性重定义) 的新功能。...对于类的结构性重定义而言,将具有新增方法的类发送到 ART,这与之前的 Android 版本没有什么不同。...如今新增了一个入口 API,为此您需要将 Android Studio 升级到 4.1 或更高版本,以利用动态在运行中添加新方法的优势,包括静态方法和虚方法。...long x = System.currentTimeMillis(); public final static long y = System.currentTimeMillis(); } 复制代码...这种轻量级的检查 API 能够在 DEX 比较过程中计算出一些额外的信息,而仅需增加少量开销 (仅检查发生修改的 Java 类)。