PS: 最近没工作,没工作就没需求,没需求就没什么技术总结的灵感,那就没更新什么。但是两个月不更新了,要是三个月不更新就会出大事,所以这次打算做一件有意思又不难的事。
之前有发文章写过反编译,今天就来试试反编译之正编译,开玩笑的,就是试试手动编译的过程, 平时我们在项目中编译出包都是使用Gradle直接执行assemble任务就能解决,我打算试试手动模拟整个过程。当然我也是第一次这样搞,所以如果有写得不对的地方,还望指出。
众所周知,apk实质上就是一个压缩包。复习一下,我们写个最简单的Demo,然后打包,然解压,注意是解压,不是反编译,意义是不同的。
注意我这个Demo很简单,什么都不引入
然后我们看看整个出包的过程,随便从网上拿张图
然后这里我们用Android SDK给我们提供的工具来完成整个流程,工具在sdk文件夹下的build-tools文件夹下,有什么aapt.exe、dx.bat,用的就是这些
这步应该是整个流程最简单的吧,我感觉,所以从最简单的开始。
我们先看看生成的dex有什么
对比项目,我是一开始最基本的项目,什么都没动,所以只有一个MainActivity.clas,所以这里肯定是要先想办法得到BuildConfig.class和R.class。
输入命令:
aapt p -f -m -J <输出路径> -S <res路径> -I <android.jar路径> -M <Manifest路径>
下一步,我们需要BuildConfig.class
这个BuildConfig.java是由gradle在我们配置好gradle之后自己帮我们生成的,所以我们直接拿来用,然后再javac就得到class文件了
然后我们再编译我们的MainActivity.java并将它们放到同一个文件夹下, MainActivity因为引用了Android.jar和R文件,所以编译时注意点,我为此被动好好的复习了一遍javac,都是泪
最后一步,我们用dx工具就能打出dex文件了
然后执行命令就得到一个Dex文件,看看这个文件里面和上面直接打出的apk中的Dex文件有什么不同:
看图,我们上一步已经生成.dex了,那么我们需要和compiled Resource 还有 Other Resource 一起生成APK。
我们先来生成compiled Resource,也就是resources.arsc
发现之前使用aapt生成R文件的时候没写完整,当时可以加一个-F参数直接生成arsc和Manifest
导出的abc.zip里面就有resources.arsc和AndroidManifest.xml。
因为之前写漏了,所以肯定要重新编一次MainActivity.java和Dex
我们把刚才的dex文件和aapt生成的resources.arsc、AndroidManifest.xml和res放到一个文件夹里面。
PS:res文件夹也是上面aapt的命令生成的
然后我们对比这个文件夹和之前apk解压的文件夹
最后运行
看来是成功了。
再说说遇到的还有两个问题,并说下我解决问题的思路
(1)我把它们都放到一个文件夹之后,我压缩成压缩包,然后改后缀成.apk,然后发现安装不了,我就直接反编译,发现发编译失败,提示包有问题,以我多点玩包的经验,我感觉就是压缩工具出了问题,然后我去下个“好压”(这不是广告啊),然后就能正常反编译了。
(2)但是还是安装不了,再根据我多年的玩包经验,我感觉是签名问题,然后我随便给这个包上一个签名,就能正常安装得到上图的结果了。
总体来说,还真挺好玩的,这整个过程,就是翻车了几次。做完之后感觉非常牛逼,为什么这样说,因为我知道这整个过程,我就可以做到,我不经过gradle来打包,我自己写个python脚本来调用aapt和dx来打包也是能做到的。
当然上面纯属异想天开,因为这是个什么都没有的Demo所以觉得简单,要是一个真实的项目,我感觉肯定要有很多坑,别的先不说,一个项目那么多依赖关系,我这javac要搞死人。
最后如果有不对的地方,希望有大佬能够指出,毕竟能运行也不能证明完全没问题。然后我使用的build-tools是28的,不敢保证其它版本包括以后版本的玩法都一样。
2. 编译文章跟翻译有区别吗 是原版吗看编译的文章好吗
编译文章跟翻译是有区别的。
编译是在翻译的基础上根据需要进行内容选择,选取一部分构成一篇文章,而翻译多数是中英翻译。
3. 什么是编译文章,和翻译有区别吗编译会构成侵权吗
有区别,编译是在翻译的基础上进行内容选择,最够选取一部分构成一篇文章,而翻译就是中英翻译
4. 报刊上,文章旁的作者名字有编译字样是什么意思
指的是该文是作者从外国的相关文章中翻译过来的。所谓“编”字,可以对应于“编着”,是指这个翻译,是经过作家的一些处理的,包括文字上或者编辑上的处理,总体和原文的中心思想是一致的,但不是百分百的翻译过来的。
5. 机器之心编译的文章“线性回归的局限性”如何
原文链接:http://tecdat.cn/?p=20882
1导言
这篇文章探讨了为什么使用广义相加模型是一个不错的选择。为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择。
2回归模型
假设我们有一些带有两个属性Y和X的数据。如果它们是线性相关的,则它们可能看起来像这样:
a<-ggplot(my_data, aes(x=X,y=Y))+geom_point()+
10它比线性模型好吗?
让我们对比具有相同数据的普通线性回归模型:
我们的方差分析函数在这里执行了f检验,我们的GAM模型明显优于线性回归。
11小结
所以,我们看了什么是回归模型,我们是如何解释一个变量y和另一个变量x的。其中一个基本假设是线性关系,但情况并非总是这样。当关系在x的范围内变化时,我们可以使用函数来改变这个形状。一个很好的方法是在“结”点处将光滑曲线链接在一起,我们称之为“样条曲线”
我们可以在常规回归中使用这些样条曲线,但是如果我们在GAM的背景中使用它们,我们同时估计了回归模型以及如何使我们的模型更光滑。
上面的示例显示了基于样条的GAM,其拟合度比线性回归模型好得多。
12参考:
NELDER, J. A. & WEDDERBURN, R. W. M. 1972. Generalized Linear Models. Journal of the Royal Statistical Society. Series A (General), 135, 370-384.
HARRELL, F. E., JR. 2001. Regression Modeling Strategies, New York, Springer-Verlag New York.
最受欢迎的见解
1.R语言多元Logistic逻辑回归 应用案例
2.面板平滑转移回归(PSTR)分析案例实现
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
4.R语言泊松Poisson回归模型分析案例
5.R语言回归中的Hosmer-Lemeshow拟合优度检验
6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
7.在R语言中实现Logistic逻辑回归
8.python用线性回归预测股票价格
9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标
6. 专着、编着、编书、教材如何来区分和界定
一、专着、编着、编书、教材的区别和界定
1、含义:专着指的是针对某一专门研究题材的,是着作的别称;编着,一种着作方式,基本上属于编写;编书是指对一门科目进行的论述;教材是依据课程标准编制的、系统反映学科内容的教学用书。
2、对象:专着的对象是某一专门研究的题材;编着的对象是独自见解的陈述,或补充有部分个人研究、发现的成果;编书的对象是某一科目,某一知识编辑成册;教材的对象是目录,课文、习题、实验、图表、注释和附录等部分构成,课文是教材的主体。
3、形式:专着可以分为单篇学术论文、系列学术论文和学术专着三种;编着、教材、编书大致是以书的形式展现出来。
二、专着、学术专着、个人学术专着的区别和界定
1、含义:专着指的是针对某一专门研究题材的,是着作的别称;学术专着是指作者根据在某一学科领域内科学研究的成果撰写成的理论着作,该着作应对学科的发展或建设有重大贡献和推动作用,并得到国内外公认;个人专着是指由个人完成的一项研究成书的专着。
2、范围:,专着的范围包含学术专着,也就是学术专着是专着中的一种,同时个人学术专着有是学术专着中的一种。
3、完成人数:专着和学术专着都可以由多人完成,个人专着只能由一个人完成。
(6)自己编译的文章扩展阅读
专着深层解析
1、学术论文
学术论文,学术通常是指专深而系统的学问,而论文则是指研究、讨论问题的文章。因此,所谓学术论文就是在科学领域内表达科学研究成果的文章。从这一意义上理解,学术论文一般也可以称为科学论文。
其一,学术论文的范围限制在科学研究领域,非此领域的文章,不能算学术论文,如新闻报道、报告文李、散文和杂文等就不能算学术论文。
其二,我们说学术论文限制在学术领域,但并非说,科学领域的所有的文章都是学术论文,而只有表达科学研究新成果的文章才是学术论文。照这样理解,科幻和科普作品就应被排除于学术论文之外了。
2、投稿论文
研究人员写给学术期刊、杂志或学术出版社要求发表的文章。
3、命题论文
上级领导部门根据社会的需要提交给科研人员的研究项目文章,或者由指导教师提交给研究生、大学生的研究课题文章。
4、毕业论文
大学生毕业时编撰的论文。
5、学位论文
授予学位的人(硕士或博士)撰写的论文。
6、计算机软件论文