前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

作者头像
粲然忧生
发布于 2022-08-02 06:58:39
发布于 2022-08-02 06:58:39
78000
代码可运行
举报
文章被收录于专栏:工程师的分享工程师的分享
运行总次数:0
代码可运行

       最近一直在做android自动打包,之前已经完成了用纯命令行的形式打包、原生态ant脚本打包,和基于android的SDK的打包,并且实现了多渠道打包,后来同事推荐了gradle,网上的资料说gradle各种好,自己也感兴趣是实现一下,其实一般来说由于android对eclipse的支持减弱,大部分的人都是用gradle与android studio融合,这样面的例子也会比较多,但笔者所在的项目还是在eclipse的比较多,由于开发人员在移植过程中发现报错比较多所以一直没有完全移植(好吧,其实早晚会移植),所以笔者是用eclipse的IDE做的实验,下面先贴几个基础知识

     首先是新建一个android项目,然后用自带的IDE生成gradle文件,具体参考http://blog.csdn.net/x605940745/article/details/41242687,有兴趣的同志们可以采取纯手写的方式,这种方式可以不依赖IDE,所以会比较好

  这个是原始的build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

下面我先附上自己的build.gradle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}
apply plugin: 'android'

ant.importBuild 'build.xml'  //这里导入了ant的脚本

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"
    
    
     signingConfigs {       //签名,这里的文件名和密码是错的,后面还会有从外部导入的语句
   		myConfig {
        //绝对路径和相对路径都可以
        	storeFile file("E:\\keystore\\mydemo.keystore")  //签名文件
        	storePassword "276021750"                       //密码
        	keyAlias "mydemo.keystore"                       
       		keyPassword "111"
  	 	}
 	 }
    
    
     buildTypes{
      release {           //这里就是用来生成apk的步骤,具体看备注
      //1.添加签名
      signingConfig  signingConfigs.myConfig
      //2.runProguard 执行混淆代码
      runProguard true
      //混淆规则文件
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
      }	
  	 }
    
    
      productFlavors {      //这里是多渠道的地方,AndroidManifest.xml文件里面要有标示,下面会贴文件
        yingyongbao {  
            manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]  
        }  
        umeng {  
            manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]  
        }  
        wandoujia {  
            manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]  	
        }  
    }  
    
    allprojects {       //在这里是外部导入文件,然后更改本身文件的属性,这里只改了签名,还可以改其他的
    afterEvaluate { project ->
        def propsFile = rootProject.file('E:\\keystore\\keystore.properties')
        def configName = 'myConfig'

        if (propsFile.exists() && android.signingConfigs.hasProperty(configName)) {
            def props = new Properties()
            props.load(new FileInputStream(propsFile))
            android.signingConfigs[configName].storeFile = file(props['storeFile'])
            android.signingConfigs[configName].storePassword = props['storePassword']
            android.signingConfigs[configName].keyAlias = props['keyAlias']
            android.signingConfigs[configName].keyPassword = props['keyPassword']
        }
    }
}
    

    
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
        
        
        
        

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

这里的具体功能看备注就可以了,暴力的贴上去就没问题,下面要贴几个文件,一个是AndroidManifest.xml文件,里面就是加了一行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${CHANNEL_NAME}" />

build.xml添加了一个target,用cmd命令写gradle deploy就可以执行里面的内容了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	<target name="deploy">   
    <!-- 	<replaceregexp flags="g" byline="true">   
        	 <regexp pattern="public static final Host host = Host.Development;" />   
        	 substitution expression 中是替换的值,替换的值都定义在相对应的配置文件中  
        	 <substitution expression="public static final Host host = Host.Test;" />  
         	fileset 属性中的 dir 用来指定被替换文件所在的目录  
          	includes 用来指定要替换哪个文件。   
         	<fileset dir="./src/net/xtion/crm/base" includes="CrmAppContext.java" />   
    	</replaceregexp> --> 
    	<replace encoding="utf-8" dir="./src/com/example/learn723">
			<include name="MainActivity.java" />
			<replacefilter token="public static final String host = "Host.Test";" value="public static final String host = "Host.abc";" />
		</replace>
	</target>  

还有一个签名文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
storeFile=E:\\keystore\\mydemo.keystore
storePassword=276021750
keyPassword=276021750
keyAlias=mydemo.keystore

具体demo可以在这下载

http://download.csdn.net/detail/killer1989/8927225

这样的好处我们可以看到,用ant专职改文件的信息,这里专门做多渠道的打包,可以分开,其实要做到全自动还有两步,一个是从svn自动获取,这个网上有很多的版本可以学习,另一个是用脚本修改build.gradle文件,动态变换签名(其实也可以做批量修改)和动态增加这些功能的代码,可以用shell,可以用python,各位用需要可以试一下

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
YOLO11优化:图像去噪 | AAAI2025 Transformer |一种基于Transformer的盲点网络(TBSN)架构 ,结合空间和通道自注意力层
💡💡💡 提出了一种基于Transformer的盲点网络(TBSN)架构,通过分析和重新设计Transformer运算符以满足盲点要求。TBSN遵循扩张BSN的架构原则,并结合空间和通道自注意力层来增强网络能力。
AI小怪兽
2025/01/15
4790
CeiT:训练更快的多层特征抽取ViT
来自商汤和南洋理工的工作,也是使用卷积来增强模型提出low-level特征的能力,增强模型获取局部性的能力,核心贡献是LCA模块,可以用于捕获多层特征表示。相比DeiT,训练速度更快。
BBuf
2022/02/11
1.1K0
CeiT:训练更快的多层特征抽取ViT
YOLOv8改进:引入CVPR 2023 BiFormer, 基于动态稀疏注意力构建高效金字塔网络架构,对小目标涨点明显
背景:注意力机制是Vision Transformer的核心构建模块之一,可以捕捉长程依赖关系。然而,由于需要计算所有空间位置之间的成对令牌交互,这种强大的功能会带来巨大的计算负担和内存开销。为了减轻这个问题,一系列工作尝试通过引入手工制作和内容无关的稀疏性到关注力中来解决这个问题,如限制关注操作在局部窗口、轴向条纹或扩张窗口内。
AI小怪兽
2023/10/07
3K0
CVPR 2022 | Restormer:高分辨率图像恢复的高效Transformer
由于卷积神经网络(CNN)在从大规模数据中学习可概括的图像先验方面表现良好,因此这些模型已被广泛应用于图像恢复和相关任务。最近,另一类神经架构Transformers在自然语言和高级视觉任务上表现出显着的性能提升。虽然Transformer模型减轻了CNN的缺点(即,有限的接收场和对输入内容的不适应性),其计算复杂度随着空间分辨率二次增长,因此使得其不可行地应用于涉及高分辨率图像的大多数图像恢复任务。
JOYCE_Leo16
2024/03/19
1.3K0
CVPR 2022 | Restormer:高分辨率图像恢复的高效Transformer
【图像分类】Vision Transformer理论解读+实践测试
Vision Transformer是2021年谷歌在ICLR上提出的算法,算法原理并不复杂,但是其价值是开创性的。它首次将NLP领域火热的Transformer模型架构移植到了CV领域,打破了这两个领域壁垒,并取得不错的成效。
zstar
2022/09/20
3K0
【图像分类】Vision Transformer理论解读+实践测试
CvT: 如何将卷积的优势融入Transformer
与之前BoTNet不同,CvT虽然题目中有卷积的字样,但是实际总体来说依然是以Transformer Block为主的,在Token的处理方面引入了卷积,从而为模型带来的局部性。最终CvT最高拿下了87.7%的Top1准确率。
BBuf
2022/01/27
9430
CvT: 如何将卷积的优势融入Transformer
YoloV8改进策略:注意力改进|引入DeBiLevelRoutingAttention注意力模块(全网首发)
在计算机视觉领域,目标检测任务的性能提升一直是研究热点。我们基于对YoloV8模型的深入理解,创新性地引入了DeBiLevelRoutingAttention(简称DBRA)注意力模块,旨在进一步增强模型的特征提取能力和目标检测精度。
AI浩
2024/10/22
8420
YoloV8改进策略:注意力改进|引入DeBiLevelRoutingAttention注意力模块(全网首发)
CoAtNet: 90.88% Paperwithcode榜单第一,层层深入考虑模型设计
CoAt=Convolution + Attention,paperwithcode榜单第一名,通过结合卷积与Transformer实现性能上的突破,方法部分设计非常规整,层层深入考虑模型的架构设计。
BBuf
2022/02/11
1.3K0
CoAtNet: 90.88% Paperwithcode榜单第一,层层深入考虑模型设计
图像恢复SwinIR: Image Restoration Using Swin Transformer
在图像超分辨率、图像去噪、压缩等图像修复(Image restoration)任务中,卷积神经网络目前仍然是主流。但是卷积神经网络有以下两个缺点:
JOYCE_Leo16
2024/03/19
1.3K0
图像恢复SwinIR: Image Restoration Using Swin Transformer
CNN、Transformer、MLP架构的经验性分析
ViT的兴起挑战了CNN的地位,随之而来的是MLP系列方法。三种架构各有特点,为了公平地比较几种架构,本文提出了统一化的框架SPACH来对比,得到了具有一定insight的结论。论文来自微软的A Battle of Network Structures: An Empirical Study of CNN, Transformer, and MLP
BBuf
2021/12/27
1.1K0
CNN、Transformer、MLP架构的经验性分析
金字塔ViT | 华为提出使用金字塔结构改进Transformer,涨点明显(Pytorch逐行解读)
新的“PyramidTNT”通过建立层次表示,显著地改进了原来的TNT。PyramidTNT相较于之前最先进的Vision Transformer具有更好的性能,如Swin-Transformer。
集智书童公众号
2022/02/10
1K0
金字塔ViT | 华为提出使用金字塔结构改进Transformer,涨点明显(Pytorch逐行解读)
使用Pytorch手写ViT — VisionTransformer
《The Attention is all you need》的论文彻底改变了自然语言处理的世界,基于Transformer的架构成为自然语言处理任务的的标准。
deephub
2022/11/11
8170
使用Pytorch手写ViT — VisionTransformer
YOLOv8优化策略:全新的聚焦线性注意力模块(Focused Linear Attention)| ICCV2023 FLatten Transforme
本文独家改进:全新的聚焦线性注意力模块(Focused Linear Attention),既高效又具有很强的模型表达能力,解决视觉Transformer计算量过大的问题,最终引入到YOLOv8,做到二次创新;
AI小怪兽
2023/11/10
8750
YOLOv8改进:全网原创首发 | 多尺度空洞注意力(MSDA) | 中科院一区顶刊 DilateFormer 2023.9
本文全网首发独家改进:多尺度空洞注意力(MSDA)采用多头的设计,在不同的头部使用不同的空洞率执行滑动窗口膨胀注意力(SWDA),全网独家首发,创新力度十足,适合科研
AI小怪兽
2023/10/20
2.2K0
SVTR文字识别模型介绍
一般的文字识别会包含两个阶段,一个是CNN,一个是RNN,可以参考PaddleOCR使用指南 中的CRNN 文字识别。这种架构虽然准确,但复杂且LSTM的效率较低,很多移动设备对LSTM的加速效果并不好,所以在实际的应用场景中也存在诸多限制。随着swin transformer在计算机视觉领域大放光彩,swin的这种金字塔结构(像CNN里面的下采样一样)也被引入到文字识别。
算法之名
2022/09/28
2.2K0
SVTR文字识别模型介绍
preprint版本 | 何凯明大神新作MAE | CVPR2022最佳论文候选
本文证明了蒙面自动编码器(MAE)是一种可扩展的计算机视觉自监督学习器。我们的MAE方法很简单:我们屏蔽输入图像的随机补丁并重建丢失的像素。
机器学习炼丹术
2021/12/06
1.3K0
preprint版本 | 何凯明大神新作MAE | CVPR2022最佳论文候选
Vision Transformer 必读系列之图像分类综述(二): Attention-based
https://github.com/open-mmlab/awesome-vit
OpenMMLab 官方账号
2022/02/28
1.9K0
Vision Transformer 必读系列之图像分类综述(二): Attention-based
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
基于Transformer的体系结构在自然语言处理(NLP)领域取得了巨大的成功。受Transformer在语言领域的巨大成功的启发,Vision Transformer被提出,并在ImageNet数据集上取得了优秀的性能。Vision Transformer就像NLP中的word token一样,将图像分割成patches并输入Transformer之中,并通过Transformer的几个multi-head self-attention层来建立远程依赖关系。
集智书童公众号
2022/02/11
9730
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
OutLook Attention:具有局部信息感知能力的ViT
近段时间,Transformer-based模型在Visual Recognition领域取得了非常大的进展。但是如果不借助额外的训练数据,Transformer-based模型离CNN-based模型还是具有一定的差距(NFNet-F5(CNN-based):86.8%,CaiT(Transformer-based):86.5%)。作者认为,这是因为token embedding并没有进行细粒度特征表示,因此本文提出了一种新的Attention方式,通过局部信息的感知,能够获得更加细粒度的特征表示。
BBuf
2021/07/23
7580
FAST-VQA(论文复现)
现实世界视频分辨率的提高对于深度视频质量评估(VQA)在效率与准确性之间提出了一个难题。一方面,保持原始分辨率将导致不可接受的计算成本。另一方面,现有的实践方法,如图像缩放和裁剪,会因为细节和内容的丢失而改变原始视频的质量,因此对质量评估是有害的。通过对人类视觉系统中的时空冗余以及视觉编码理论的研究,我们观察到,一个邻域周围的质量信息通常是相似的,这促使我们研究一种有效的、对质量敏感的邻域表征方案用于VQA。在这项工作中,我们提出了一种统一的方案,即时空网格小立方体采样(St-GMS),以获得一种新型样本,我们称之为片段。首先将全分辨率视频按照预设的时空网格划分为小型立方体,然后对齐时间上的质量代表进行采样,以组成用于VQA的片段。此外,我们设计了一个专门为片段量身定制的网络架构,即片段注意力网络(FANet)。利用片段和FANet,所提出的效率端到端的FAST-VQA和FasterVQA在所有VQA基准测试上的性能显著优于现有方法,同时仅需要1/1612的FLOPs,相较于当前最先进技术大幅降低。
Srlua
2024/11/30
1700
FAST-VQA(论文复现)
推荐阅读
YOLO11优化:图像去噪 | AAAI2025 Transformer |一种基于Transformer的盲点网络(TBSN)架构 ,结合空间和通道自注意力层
4790
CeiT:训练更快的多层特征抽取ViT
1.1K0
YOLOv8改进:引入CVPR 2023 BiFormer, 基于动态稀疏注意力构建高效金字塔网络架构,对小目标涨点明显
3K0
CVPR 2022 | Restormer:高分辨率图像恢复的高效Transformer
1.3K0
【图像分类】Vision Transformer理论解读+实践测试
3K0
CvT: 如何将卷积的优势融入Transformer
9430
YoloV8改进策略:注意力改进|引入DeBiLevelRoutingAttention注意力模块(全网首发)
8420
CoAtNet: 90.88% Paperwithcode榜单第一,层层深入考虑模型设计
1.3K0
图像恢复SwinIR: Image Restoration Using Swin Transformer
1.3K0
CNN、Transformer、MLP架构的经验性分析
1.1K0
金字塔ViT | 华为提出使用金字塔结构改进Transformer,涨点明显(Pytorch逐行解读)
1K0
使用Pytorch手写ViT — VisionTransformer
8170
YOLOv8优化策略:全新的聚焦线性注意力模块(Focused Linear Attention)| ICCV2023 FLatten Transforme
8750
YOLOv8改进:全网原创首发 | 多尺度空洞注意力(MSDA) | 中科院一区顶刊 DilateFormer 2023.9
2.2K0
SVTR文字识别模型介绍
2.2K0
preprint版本 | 何凯明大神新作MAE | CVPR2022最佳论文候选
1.3K0
Vision Transformer 必读系列之图像分类综述(二): Attention-based
1.9K0
MoA-Transformer | Swin-Transformer应该如何更好地引入全局信息?
9730
OutLook Attention:具有局部信息感知能力的ViT
7580
FAST-VQA(论文复现)
1700
相关推荐
YOLO11优化:图像去噪 | AAAI2025 Transformer |一种基于Transformer的盲点网络(TBSN)架构 ,结合空间和通道自注意力层
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验