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

手摸手教你如何轻松发布私有 App

除此之外,私有 App 发布 API 允许拥有管理权限的 Google Play 用户在跳过 最低版本检查 的情况下创建并发布私有的 App。...Managed Google Play 是为企业版 Android 用户提供私有应用程序支持的应用商店。私有 App 只会被分发给内部用户而不会被大众获取。...因为一旦你将它应用于 Google Play 上的某一个 App ID(包括私有 App),你将永远不能在不创建新的应用程序列表及修改其 App ID 的情况下更换 keystore。...使用 API — 有点复杂 如果 你不打算为了管理你的 App 做一个基于 Web 的前端页面,你可以使用下面的 node 脚本以及 Firebase 的功能来快速获取你的开发者账户 ID。...如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。

3.2K00

Android Studio Gradle中buildTypes + flavor(flavor group, flavor dimensions)组合依赖编译,添加buildTypes

比如debug情况下,我要打包带日志的,release情况下,我要打包带日志,不带日志,含其他module的,不含其他module的两两组合(也就是flavorDimensions)。现分享方法。...但如果要使用buildTypes + flavor依赖,直接使用flavor1DebugCompile或debugFlavorCompile是不行的,会提示没有这个方法。...原因是,flavor+buildType的组合依赖在最开始检测的时候是不存在的,我们需要先用configurations定义出来,此时该组合是一个空的配置。...(gradle 2.2.3) 于是我兴高采烈的使用了mixedReleaseCompile,以达到mixed+Release的组合依赖。结果并没有依赖成功。...我想了半天,终于想到我用的是flavorDimensions(旧版gradle称为flavorGroups)特性,所以结果应该是定义withoutLogsMixedReleaseCompile和withLogsMixedReleaseCompile

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

    【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )

    , 主包之外的类打包到其它分包 , 每个分包都有固定大小 , 分包会自动根据大小分为若干分包 ; 1、多 Dex 支持 首先 , 在 build.gradle 中配置 implementation '...Dex 打包规则 , 为 multiDexKeepFile 文件 , 定义规则 , 该定义规则有一定的语法 , 哪些 Java 源码文件打包在主 Dex 中 , 可以通过该配置进行定义 ; 在 app..., 否则在高版本的 Gradle 插件的情况下会报错 ; android { defaultConfig { // 维度版本号 flavorDimensions...系统上进行测试 // 无需进行耗时的 dex 合并过程 minSdkVersion 21 } // 产品风格...Gradle 插件 // 为每个 Module 模块产生一个 APK 安装包 , 可以在 Android Lollipop 系统上进行测试 // 无需进行耗时的

    96421

    ProductFlavors 简单使用

    而很多路径在实际使用中是用不到的,造成代码质量差。 用业务逻辑去区分情况加载资源,会导致包内需要包含大量的资源,造成包体积过大。 所以,我们需要在编译阶段,就区分种种情况,给予相应的资源。...Android中build.gradle的productFlavors为我们提供了这样的能力。...快速使用 在module的build.gradle中,我们通过flavorDimensions和productFlavors的配合,来实现多维度的区分: android { compileSdkVersion...在Android Studio中,我们可以选择想要打包的flavor: ? 获取使用命令行: ....此外,ProductFlavors还可以定义一些自定义的变量,我们甚至可以打入一些Json等各种编码数据,为我们快速构建多个不同版本提供了基础。 如有问题,欢迎指正。

    2.7K31

    【错误记录】Gradle 配置 productFlavors 报错 ( All flavors must now belong to a named flavor dimension. )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- 在 build.gradle 中配置 productFlavors 后报错 ; 配置内容 : // 定义不同的开发和产品风格...productFlavors { // 开发风格 dev { // 开发时使用 minSDKVersion = 21 允许 Android Gradle...插件 // 为每个 Module 模块产生一个 APK 安装包 , 可以在 Android Lollipop 系统上进行测试 // 无需进行耗时的 dex...* Get more help at https://help.gradle.org BUILD FAILED in 198ms 二、解决方案 ---- 使用低版本的 Gradle 插件不会报错..., 使用高版本的 Gradle 插件报错 ; 在 build.gradle 中的 " android / defaultConfig " 层级下 , 配置 flavorDimensions 维度版本号

    59740

    Android—Gradle教程(九)完结篇

    因此,在本篇里,将会以Gradle的构建优化以及如何从Groovy迁移到KTS进行详解! 话不多说,直接开始! 1、Gradle构建优化 优化都是些配置,快速过一下就行了!...在gradle.properties中设置:org.gradle.jvmargs=-Xmx4096m //这里也就是4G大小 1.4 ZipAlign优化 在应用程序上运行zipalign,使得在运行时...当你在build.gradle文件中声明依赖的时候,你应该避免在版本号结束的地方使用+号,比如:com.android.tools.build:gradle:4.+ 因为Gradle的检查更新,用动态的版本号会导致未知的版本更新...过去在Gradle配置文件中使用的编程语言) 将来,KTS会比Groovy更适合用于编写Gradle脚本,因为采用Kotlin编写的代码可读性更高,并且Kotlin提供了更好的编译时检查和IDE支持 虽然与...KTS:是指Kotlin脚本,这是Gradle在构建配置文件中使用的一种Kotlin语言形式。Kotlin脚本是可从命令行运行的Kotlin代码。

    3.2K20

    Flutter 日志最佳实践

    它通常需要多个模块协同工作,并且通常由不同的开发人员编写。所以,当开发中出现问题,一个人必须通过由多个开发人创建的应用程序流程来确定根本原因。...跟随这些最佳实践,你可以更好地了解自己应用程序的流程,与在没有连贯的日志系统情况下的应用相比,可以更好地排查程序中任何意外的问题。...确保所有的事件被覆盖 应用程序运行后,多个系统会协调工作,包括 UI、网络调用、数据库等。由于多个系统同时工作,很容易忽视对关键事件的报道。这些丢失的日志掩盖了流程内部的运作和错误原因。...在 Flutter 中使用 Logger 包 虽然可以在内部创建不同的日志记录组件,但是这很耗时,而且几乎没有什么好处,因为跨应用程序的日志记录系统很少定制或者不同。...classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' } 另外,在 android/app/build.gradle 中添加下面内容

    5.3K20

    Android 构建多APK

    2, app上线连接生成环境,开发使用开发环境,测试使用测试环境,我想同时安装这3个环境的apk应该怎么办? 这篇文章就是介绍如何解决上述中提出的问题。...APK Flavor定制开发 要想进行APK的定制开发,必须要了解flavorDimensions,flavorDimensions 定义了app中的维度数量。...flavor * 2 (Debug/Release)= 6 多个纬度 一些特殊场景需要需要分类多个纬度,应该如何定义呢 例如,app需要提供给不同地方的客户,那我们定义一个名称为city的纬度,里面包含...city的数量 * color的数量 * 2 (Debug/Release) = 12 APK多环境开发 Studio工程中,默认有Debug/Release 两种环境,在部分场景中,可能两种环境并不能满足我们的开发需求...向app上线连接生成环境,开发使用开发环境,测试使用测试环境,我们想同时在手机种安装这3个环境的app应该如何扩展呢?

    67130

    【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )

    资源 , 该操作等价于在 res/values 目录下的文件中配置一个特定类型的值 ; 如 : 在 build.gradle 的 " android # defaultConfig " 层级中设置如下内容...Config 编译之后 , 可以在 Android 代码中 , 使用 R.string.gradle_res_config 获取该生成的配置数据 ; 在...#dimension 属性 是 维度属性 名称 , 该属性需要配合 AppExtension#flavorDimensionList 属性 和 AppExtension#flavorDimensions...方法一起使用 ; 维度具体用法如下 : 这里以多渠道打包为例 ; 在 build.gradle 的 android 层级下调用 AppExtension#flavorDimensions 方法...定义维度 , 调用 productFlavors 创建产品风味 , 进行多渠道打包配置 ; android { compileSdkVersion 30 buildToolsVersion

    45920

    Android Studio 3.0~3.x正式版填坑之路

    下表列出了 AS Gradle版本对应所需的 Gradle插件版本。为了获得最佳的性能,尽可能使用最新版本的Gradle和插件。...Solution AS 3.0后 gradle添加了flavorDimensions属性,用来控制多个版本的代码和资源,缺失就会报错。...在项目 app下 build.gradle文件中,添加flavorDimensions: android { ......,虽然暂时可以解决输入问题,但是后面升级的时候你还得把2.x 的jre换回3.x的jre,否则升级后将无法正常使用AS; 3 ) 最简单最有效的解决办法就是在使用 AS的时候,切换到 windows自带的中文输入法就可以正常输入中文筛选词语了...此外,还有一些已知的问题,所以暂时不建议在生产项目中使用。 12. AS 3.3.0警告问题 在 AS升级到 3.3.0,Gradle升级到 4.10.1+ 时,编译会一直提示警告。

    1.5K10

    哪怕不学Gradle,这些开发常见操作,你也值得掌握

    gradle文件, // 注意:如果你的default.gradle是在项目目录下,请使用.....其内部的内容都会在 default.gradle 的基础上叠加,对于唯一的键值对,会进行替换。...build类型 ,当新增之后,我们就可以在命令行使用如下匹配的指令,或者点击As 最右侧,gradle图标,选择app(根据自己build的配置位置而定,一般默认是app-model),选择other,...// 每一个变体都必须存在一个风味,默认使用flavorDimensions(仅限其为单个时)的值,否则如果没提供,则会报错。...---- 组合多个变体 在某些场景下,我们可能想将多个产品的变体组合在一起,比如我们想增加一个 api30 的变体,并且针对这个变体,我们想让demo1和demo2与分别也能与其组合在一起 ,即也就是当

    61520

    Android Gradle 2.3.3 升级 3.0.1 小记录

    和尚因为种种原因需要升级 Android Gradle,Gradle > 3.0 时默认支持 Java 8;每次大版本升级都会涉及很多内容,和尚尽可能慎重,但还是简单记录一下升级过程中遇到的问题...Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html ?...必须将所有类型分配给类型维度;在需要修改的 Module.build 添加 flavorDimensions "versionCode" 即可; defaultConfig { minSdkVersion...:3.7.0' //retrolambda } Tips: 和尚建议在升级过程中注意混淆文件的处理,尤其是借助三方 SDK 时,注意官网混淆文件的添加; ---- 至此,和尚在升级过程中遇到的小问题基本解决...,大部分都可以在官网或参考各路大神的博客,但和尚还是记录尝试一下,对以后遇到的问题进行扩展整理;如有问题,请多多指导!

    63221

    哪怕不学Gradle,这些开发中的常见操作,你也值得掌握

    gradle文件, // 注意:如果你的default.gradle是在项目目录下,请使用.....default.gradle 的基础上叠加,对于唯一的键值对,会进行替换。...build类型 ,当新增之后,我们就可以在命令行使用如下匹配的指令,或者点击As 最右侧,gradle图标,选择app(根据自己build的配置位置而定,一般默认是app-model),选择other,.../ 每一个变体都必须存在一个风味,默认使用flavorDimensions(仅限其为单个时)的值,否则如果没提供,则会报错。...组合多个变体 在某些场景下,我们可能想将多个产品的变体组合在一起,比如我们想增加一个 api30 的变体,并且针对这个变体,我们想让demo1和demo2与分别也能与其组合在一起 ,即也就是当channel

    50920

    Android Instant Apps简介

    Instant Apps与安装的对应软件apk共享一个代码库,并也是通过Google Play商店的Android Instant Apps区进行分发的。...:instantapps:1.0.0” 它包含一些有用的静态方法来帮助检查用户是在和即时的还是安装的版本进行交互,并使用系统对话框提示他们安装完整的APK。.../600613 如果你愿意,你可以继续在已安装的应用程序中使用自定义scheme,但是有一个很好的例子可以将所有深层链接切换到URL。...在支持Instant Apps时,使用deep links可以实现所有的应用内导航,在某些情况下也是有必要的。...Bumblebee是一个虚构的商店,有一个简单的目录和可共享的购物车。它使用Firebase进行目录数据,用户数据和资源托管。

    3.6K70

    Android四种依赖管理方法应用对比

    :firebase-core:20.0.0" // 添加更多依赖... } 在主项目的build.gradle中使用这些依赖项: dependencies { implementation...Composing builds Composing builds是Android Gradle插件中的一项新功能,它允许将构建逻辑拆分为多个独立的构建模块。...Catalogs,并使用其中的依赖项: // build.gradle.kts dependencies { // 使用Version Catalogs中的依赖项 implementation...可以轻松共享版本信息到多个项目中。 缺点: 需要学习和使用.toml文件格式。 最佳实践:适用于大型团队合作的复杂项目,需要更严格的版本管理和共享版本信息的情况。...结论 不同的Android项目可能需要不同的依赖管理方法,根据项目的规模、复杂性和团队的需求进行选择。

    91820

    我们弃用 Firebase 了

    你可以编写实现实时数据同步的应用程序,而且不需要开发大量的传输逻辑。那些在自制即时通讯应用程序中使用了长轮询请求的的用户肯定会喜欢它。...事实上,Firebase 有许多方面是我们喜欢的: 使用 Firestore,许多客户端状态管理方面的挑战都不复存在,特别是与数据新鲜度有关的问题。 免费就可拥有的实时体验。...Firebase Hosting 不提供细粒度的文件控制:你可以部署整个应用程序,也可以什么都不部署。也许不常见,但我们在静态页面生成和调试 CDN 问题上遇到了限制。...这个 Web 片段会将站点配置为使用特定的 Firebase 应用程序,并借助环境变量使我们可以跨项目保留脚手架。...对于这个问题,K-Optional Software 几乎在同一时间收到了多个关于项目(不是我们的项目)的咨询请求,一切都表明,是 API 的突然变化造成了麻烦。

    32.7K30

    读书笔记--Android Gradle权威指南(下)前言笔记后记

    上述代码中两种方式是等效的,因为 Android Gradle 插件已经通过一份配置文件,将这两者绑定在一起,使用者不清楚具体要用哪个插件类的话,那么可以直接使用跟它对应的 id 值即可,而且通过 id...但这是通常情况下的配置,如果在 productFlavors 中使用了 dimension 的话,那又是另外一种方式了。...5.5 flavorDimensions 这个是用于将 productFlavors 划分维度的,比如我们打包时不仅需要多个渠道,每个渠道还分收费版、免费版。...flavorDimensions 来实现了,这个需要跟 dimension 一起使用,如: android { flavorDimensions 'channel', 'pay' productFlavors...HttpClient 库移除掉了,这些在高版本被移除掉的库,如果还想再使用,就可以使用 useLibrary 来配置。

    72430

    扩大Android攻击面:React Native Android应用程序分析

    React Native是一款移动端应用程序框架,由于该框架允许开发人员使用React和原生平台功能,目前有很多Android和iOS应用程序都是基于该框架进行开发的。...一般来说,在对Android应用程序进行逆向分析时,我们需要使用dex2jar来对APK文件进行反编译,然后使用JD-GUI来进行下一步分析。...那么在处理React Native应用程序时,如果应用程序拥有原生代码的话,就非常方便了,但是在大多数情况下,应用程序的核心逻辑都是用React JavaScript实现的,而这部分代码可以在无需dex2jar...如果你要逆向分析的React Native应用程序的assets文件夹中拥有这个映射文件,你就可以在该目录中创建一个名为“index.html”的文件来利用这个映射文件了,“index.html”文件的内容如下...在我们之前的研究过程中,发现了很多没有正确使用Firebase认证模型的应用程序,其中就涉及到API密钥的不正确使用。

    9.9K30

    AndroidStudio3.0多渠道打包:我用一行命令打出N个包

    ,而我们需要在发布应用之后统计各个渠道的用户下载量,这个时候就要多渠道打包,也就是对各个渠道进行标识,以便于统计。...多渠道和统计时息息相关的,因为我们做多渠道打包的目的就是要统计,友盟统计是大家日常开发中常用的渠道统计工具,使用相当普遍,接下来我讲到的打包方法就是基于友盟统计实施的。...value值Channel_ID,即渠道标识,例如:360,qq,wandoujia等等,在这里不直接写出某个渠道名,而是写一个占位符,我们会在build.gradle中进行设置,之后gradle编译的时候会动态的替换掉这个占位符...的build.gradle的android{}中添加如下内容: android { flavorDimensions "default" productFlavors {...位置,在local.properties中添加如图代码: ?

    38110
    领券