首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android实现同时安装测试环境与生产环境,及区分app图标

***Android***实现同时安装测试环境与生产环境 众所周知,相同名的APP,是不能同时安装的,但是我们实际开发中,测试同学往往在测试环境没问题,上了生产环境,却发现了bug,这时候就只能卸载生产环境的...那么有没有一种可能,同时安装测试与生产环境的呢?...中含有 ContentProvider或者FileProvider(Android7.0文件适配必备),也就是名相关的;或者你想更直接点,直接区分测试与生产app名及图标,那么你可能需要如下操作了...-- 应用下载服务 --> 当我们的项目中包含华为push时,往往会有如上代码,此时如果不处理名,就会出现同时只能安装一个APP,否则adb就会提示 com.huawei.hms.update.provider.UpdateProvider.../> 适配也很简单,将 authorities="" 里的名改为 ${applicationId} 即可 补充进阶 动态替换app名,图标 都到这一步了,那不如更友好点,让测试同学更好辨认: 修改app.build

94950

ProGuard 在 Android 上的使用姿势

有的开发者更关心混淆这块功能,对我而言最大的用处是打包时移除 dex 中的无用代码。 ? 一个 Android 示例应用的空间分布图,源码地址 Topeka sample app。...如果以上还不足以说服使用 ProGuard,其实移除无用代码混淆所有名称还有其他更多的优化效果: 在一些版本的 Android 设备上,DEX 代码会在安装或者运行时被编译成机器码。...ProGuard 除了可以大幅减少代码的空间之外,还可以让所有的标识符(、类成员)都使用更短的名字,如 a.A a.a.B。这个过程就是混淆。...当 ProGuard 移除过少的类 所有应用都可以使用 Android 内置的 ProGuard 的一些安全的默认规则,如保留 View 的 getter setter 方法,因为他们通常会被反射来访问...如果希望 ProGuard 移除所有未使用的代码,应当避免 keep 规则写的太宽泛,如加入通配符匹配整个,而是使用类相关的匹配规则或者使用上面提及的 @Keep 注解。 ?

2.6K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    API level targeting to 28,准备好了吗?

    app应用请求 理论上都换成https,如有抓到http,需开发确认,Android9.0限制了明文流量的网络请求,非加密的流量请求,都会被禁止掉。...app应用涉及下载任务的模块 例如地图项目:离线地图、离线导航、导航音色(语音广场)、样式文件、模板 (3)....弃用 Apache HTTPClient】 说明 官方在Android 9.0 中,移除所有 Apache HTTP Client 相关的类。...如果应用有多个使用Web View,CookieManager或android.webkit中的其他API的进程,则当第二个进程调用WebView方法时,应用将崩溃。 【6....如果应用在运行Android 9 设备的后台运行,系统将对应用采取以下限制: 应用不能访问麦克风或摄像头。 使用连续报告模式的传感器(例如加速度计陀螺仪)不会接收事件。

    1.3K20

    Android 混淆打包

    :保留类类中的成员防止被混淆,但成员如果没有被引用将被删除 keepclassmembers :只保留类中的成员,防止被混淆移除。...层下所有的类默认不会进行混淆; Parcelable的子类Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常; 使用GSON、fastjson...jar,并且混淆jar里面的class -verbose #混淆时记录日志(混淆后生产映射文件 map 类名 -> 转化后类名的映射 #指定混淆时的算法,后面的参数是一个过滤器 #这个过滤器是谷歌推荐的算法...* extends android.support.v4.** -keep public class * extends android.app.Fragment  #所有fragment的子类不要去混淆...-keep public class * extends android.app.Activity  #所有activity的子类不要去混淆 -keep public class * extends

    1.4K30

    Android 11 应用兼容性适配,看这篇就够了

    能读取所有App的多媒体文件 不能读取非多媒体文件 无 只能读取、修改自己新建的文件 1.3.2.1.4....MediaStore.Files表内容 注意:即便授予了所有文件访问权限,应用不能获取其他app应用专属的文件。...2.4应用可见性 1 背景 应用可见性(Package Visibility),是Android 11上提升系统隐私安全性的一个新特性。...2 兼容性影响 如果应用targetSdkVersion为30,安装文件中的resources.arsc文件有压缩或者未进行4字节对齐,则应用将无法在运行Android 11设备上进行安装。...当完成切换后,请务必从应用的清单文件的元素中移除对V1版Google地图共享库的引用,因为现在应用无法再将Google Play过滤与V1版Google地图共享库<uses-library

    12.5K42

    如何在10分钟内让Android应用大小减少 60%?

    一个APP之所以大,主要包括一下文件 代码 lib so本地库 资源文件(图片,音频,字体等) 瘦身就主要瘦这些。...如果你的应用没用到兼容库,可以考虑去掉support。...-dontoptimize: 不进行优化,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行。 -dontpreverify: 不进行预校验。...res —— 这个文件夹包含了所有在 res 文件夹下的文件。大部分情况下它包含所有图片,图标源文件,菜单文件布局。...希望读到这的您能转发分享订阅一下我,以后还会更新技术干货,谢谢的支持! 转发+点赞+订阅,第一时间获取最新知识点 Android架构师之路很漫长,一起共勉吧!

    1.6K10

    Android 代码混淆规则

    如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方都进行混淆,可是有些代码或者第三方不能混淆的,这就需要我们手动编写混淆规则来保持不能被混淆的部分。 2....2.1 代码混淆 压缩(Shrinking):默认开启,用以减小应用体积,移除未被使用的类成员,并且会在优化动作执行之后再次执行(因为优化后可能会再次暴露一些未被使用的类成员)。...该列表可用于验证是否真的找到了预期的类成员,特别是如果使用通配符。 4....它的内容可以使用: 匹配所有构造器 匹配所有域 匹配所有方法 通配符*,匹配任意长度字符,但不含名分隔符(.)...{ public static final android.os.Parcelable$Creator *; } #需要序列化反序列化的类不能被混淆(注:Java反射用到的类也不能被混淆

    2.5K10

    「玲珑宝塔」优化 Apk 大小

    CPU 与指令集的每种组合都有专属的应用二进制接口,即 ABI。ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。必须为应用要使用的每个 CPU 架构指定 ABI。...: 代码优化:通过检测并安全移除未使用的类、字段、方法属性; 资源压缩:从应用移除未使用的资源,此过程包含移除库依赖项中未使用的资源文件。...例如,如果 R8 检测到从未采用过给定 if/else 语句的 else {} 分支,R8 便会移除 else {} 分支的代码。 这里需要注意一下: 默认情况下并不启用压缩、混淆代码优化功能。...(引入官方解释) 混淆处理的目的是通过缩短应用的类、方法字段的名称来减小应用的大小 混淆效果(摘自官方): androidx.appcompat.app.ActionBarDrawerToggle$DelegateProvider...简单摘自官方解释: zipalign 是一种归档对齐工具,可对 Android 应用文件进行重要的优化。其目的是要确保所有未压缩数据的开头均相对于文件开头部分执行特定的对齐。

    83120

    Android P 适配指南

    1.1.1 SDK 接口非 SDK 接口 SDK 接口指在 Android 框架 软件索 中记录的接口, Google为了让开发者有过渡的时间并且起到警示的作用, 针对 non-sdk 接口设定了不同级别的名单类型...1.3 隐私相关 后台应用访问受限 应用不能访问麦克风或摄像头。 使用连续报告模式的传感器(例如加速度计陀螺仪)不会接收事件。 使用变化或一次性报告模式的传感器不会接收事件。...Android 9及更高版本: 成功调用 WifiManager.startScan() 需要满足以下所有条件: 应用具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION...FCM是指google推送啦,国内不要想了,至于长连接心跳是否会限制要看国内厂商具体操作了。 工作集 如果应用经常运行,但当前未处于活跃状态,它将被归到“工作集”群组中。...更重要的是,所有这些工作都发生在 UI线程 上,它可能会导致应用程序 丢帧 测量文本可能占用设置文本所需时间的 90% android P 正式引入, 对于 android P 之前通过 Jetpack

    3.6K20

    Android应用实现安装后自启动的方法

    网上大多数方法一样,使用广播手段: ACTION_PACKAGE_ADDED 一个新应用已经安装在设备上,数据包括名(最新安装的程序不能接收到这个广播) ACTION_PACKAGE_REPLACED...一个新版本的应用安装到设备,替换之前已经存在的版本 ACTION_PACKAGE_CHANGED 一个已存在的应用程序已经改变,包括名 ACTION_PACKAGE_REMOVED 一个已存在的应用程序已经从设备上移除...,包括名(正在被安装的程序不能接收到这个广播) ACTION_PACKAGE_RESTARTED 用户重新开始一个所有进程将被杀死,所有与其联系的运行时间状态应该被移除,包括名(重新开始程序不能接收到这个广播...) ACTION_PACKAGE_DATA_CLEARED 用户已经清除一个的数据,包括名(清除程序不能接收到这个广播) 直接思路:注册广播接收以上需要的action来实现。...覆盖安装未运行过的app,不会触发广播 安装完运行app后,退出App(点击返回键、并从recent任务中移除,此时在设置-应用中查看,app仍未处于stop状态)。覆盖安装后,app成功自动运行。

    4.2K31

    Android性能优化之APK 极限压缩(资源越多,效果越显著)

    用 node-webkit 开发的程序,用 WebP 可以减少文件的体积。...移动应用 或 网页游戏 ,界面需要大量图片,可以嵌入 WebP 的解码,能够节省用户流量,提升访问速度优势: 对于 PNG 图片,WebP 比 PNG 小了45%。 2....去除多语言 在 app/build.gradle 添加 android{ ... defaultConfig{ ......例如,如果明知给定资源表面上会在代码中使用(并因此不会被压缩器移除),但实际不会用于给定构建变体,就可以将所有资源放入公用项目目录,然后为每个构建变体创建一个不同的 keep.xml 文件。...当执行这一调用时,默认情况下资源压缩器会采取防御性行为,将所有具有匹配名称格式的资源标记为可能已使用,无法移除。 例如,以下代码会使所有带 img_ 前缀的资源标记为已使用。

    3.7K30

    Android11 (API30)适配

    MediaStore.Files表内容 注意:即便授予了所有文件访问权限,应用不能获取其他app应用专属的文件。...2.4应用可见性 1 背景 应用可见性(Package Visibility),是Android 11上提升系统隐私安全性的一个新特性。... 不过若您的应用有指针使用上的问题,关闭并不能帮助解决问题,建议如果有相关问题,直接解决。同时以上的规避方案在后续的Android版本中,将会移除。...2 兼容性影响 如果应用targetSdkVersion为30,安装文件中的resources.arsc文件有压缩或者未进行4字节对齐,则应用将无法在运行Android 11设备上进行安装。...当完成切换后,请务必从应用的清单文件的元素中移除对V1版Google地图共享库的引用,因为现在应用无法再将Google Play过滤与V1版Google地图共享库<uses-library

    7.8K11

    深入探索 Android 瘦身(下)——终篇

    1、So 移除方案 So 是 Android 上的动态链接库,在我们 Android 应用开发过程中,有时候 Java 代码不能满足需求,比如一些 加解密算法或者音视频编解码功能,这个时候就必须要通过...2、So 移除方案优化版 上面我们说到了想要完美支持所有类型的设备代价太大,那么,我们能不能采取一个 折中的方案,就是 对于性能敏感的模块,它使用到的 So,我们都放在 armeabi 目录当中随着 Apk...但是,如果要把这项技术 稳定落地到实际生产项目中需要解决一些问题,具体的 so 动态化关键技术点需要避免的坑可以参见 动态下发 so 库在 Android APK 安装瘦身方面的应用,这里就不多赘述了...3、转变开发模式 如果所有的功能都不能移除,那就可能需要去转变开发模式,比如可以更多地 采用 H5、小程序 这样开发模式。...六、体积监控 对于应用体积的监控,也应该内存监控一样,去作为正式版本的发布流程中的一环,并且应该 尽量地去实现自动化与平台化。

    2.1K10

    Android开发:请你吃一顿史上最全的Android混淆大餐

    Affected Modules: app 自定义要保留的资源 当我们开启了资源压缩之后,系统会默认替我们移除所有未使用的资源,假如我们需要保留某些特定的资源,可以在我们项目中创建一个被 <resources...这时,资源压缩器会采取防御性行为,将所有具有匹配名称格式的资源标记为可能已使用,无法移除。...移除备用资源 Gradle 资源压缩器只会移除未被应用引用的资源,这意味着它不会移除用于不同设备配置的备用资源。...必要时,我们可以使用 Android Gradle 插件的 resConfigs 属性来移除应用不需要的备用资源文件(常见的有用于国际化支持的 strings.xml,适配用的 layout.xml...其他应用程序访问组件时可能会用到类的名加类名,如果经过混淆,可能会无法找到对应组件或者产生异常。

    4.5K30

    一篇文章带你领略Android混淆的魅力

    Affected Modules: app 2.4 自定义要保存的资源 当我们开启了资源压缩之后,系统会默认替我们移除所有未使用的资源,假如我们需要保留某些特定的资源,可以在我们项目中创建一个被标记的...这时,资源压缩器会采取防御性行为,将所有具有匹配名称格式的资源标记为可能已使用,无法移除。...2.6 移除备用资源 Gradle 资源压缩器只会移除未被应用引用的资源,这意味着它不会移除用于不同设备配置的备用资源。...必要时,我们可以使用 Android Gradle 插件的 resConfigs 属性来移除应用不需要的备用资源文件(常见的有用于国际化支持的 strings.xml,适配用的 layout.xml...其他应用程序访问组件时可能会用到类的名加类名,如果经过混淆,可能会无法找到对应组件或者产生异常。

    95920

    Android 应用启动性能 | 延迟初始化

    既可以指定应用启动库该如何初始化其他的库,也可以从合并后的 manifest 文件中移除其他库的 content provider。...这正是应用启动库高明的地方,它能帮从合并的 manifest 文件中和应用启动的过程中移除隐藏的 content provider,也能帮延迟或者更有目的地加载这些库。...其实上面的代码已经很接近了,在 build.gradle 文件中需要同样的启动依赖其他您想使用的库,也还是需要特殊的 "移除" provider 标签来去除每个库自动生成的 content provider...您能否利用应用启动库从合并的 manifest 文件中移除一些甚至所有这些 content provider,并观察它如何影响启动时间?您能否在实现这个的同时不影响运行时行为呢?...(值得注意的是: 需要保证在应用开始依赖相关库的功能之前,确保初始化它们。) 最后,尽情享受性能测试优化。我会继续找寻更多分析优化应用的性能办法,如果发现什么有价值的东西我会发布相关的内容。

    65720
    领券