Android Studio 工具的使用介绍、项目结构,打包、gradle、调试

Android Studio 工具的使用介绍、项目结构,打包、gradle、调试,第1张

刚开始使用,看到这么多东西是不是很方?别怕,慢慢来(笑)

File :新建、打开项目!
Preferences :设置
Edit :主要包括复制粘贴、Find查找
Build :构建项目,构建单个moudle、clean项目、build apk 构建一个没有签名的APK
Build Generate Singed Apk 构建一个有签名的APK,和Ecplise一样如果有现成的签名文件可 以直接导入使用,如果没有 可以创建一个。jks和keystore都是app签名文件使用没区别。
Run :主要包括运行app 或者Debug运行app
VCS :版本控制包含了git github svn vcs等导入导出项目到版本控制服务器

Android工程是通过gradle文件管理各项配置哒,分成两个层级: project 和 module

buildgradle
Module层级的buildgradle的主要用于配置Module的,下面看看它的一些配置

让它运行一下:

这个时候就可以在下面看到当前运行情况

如果是在国外留学或者工作的网友应该都注意到了,国外的手机应用基本上都是通过应用商店下载的,苹果iPhone是Appstore,安卓手机则是谷歌Play商店。甚至一些网站的专属应用也没有提供APK的下载文件,而是直接给一个连接,点击之后就自动打开谷歌Play商店进行下载和安装。国外的安卓应用只提供应用商店的安装方式,而不提供APK的安装包,主要是从以下几个方面考虑的。

1、谷歌Play商店占有率高,使用方便。 国产手机和国外的安卓手机最大的不同就是有无谷歌Play应用商店。国产手机由于各种各样的原因,是不会内置谷歌应用商店的,每个手机品牌都会单独搞一个应用商店,而且还有应用宝、豌豆荚之类的第三方应用商店。所以网站在提供应用的时候如果给应用商店的链接就太麻烦了,也不大可能给每个应用商店都提供一个下载链接,通常就是给用户一个APK文件自己下载安装。

而国外的安卓手机基本上都内置了谷歌Play应用商店,所以网站如果提供应用软件的话,只需要给出谷歌应用商店的链接就可以了,更加方便。

2、节省网站空间和流量。 如果网站提供单独的APK安装文件下载,肯定要用到网站的服务器空间和带宽流量。要知道很多网站的服务商是按照流量计费的,流量如果用的多了,费用就会很高。如果每个用户都通过网站下载APK文件,肯定会产生较大的流量,从而造成多余的费用。而通过谷歌商店下载使用的是谷歌的流量,不会对网站造成负担。

3、应用商店下载安全有保障。 由于安卓是一个开源系统,所以很多网友在安装APK软件的时候,有可能会遇到各种各样的问题。比如我们通过搜索引擎搜索某款应用的时候,最终下载到的往往并不是我们想要的应用,有时候还会下载到恶意软件。而通过应用商店下载应用就不会遇到类似的问题,因为谷歌应用商店里的应用都是经过官方检测审核的,不存在货不对板或者有恶意软件的情况。

总的来说,由于国外的安卓手机都内置了谷歌Play应用商店,所以使用应用商店下载安装和更新应用都比使用APK文件更加方便。不过这也导致用户对谷歌应用商店严重依赖,如果一款手机无法安装谷歌应用商店,那么在海外市场就很难卖出去了。所以谷歌在禁止华为使用其服务和应用商店之后,华为手机在海外市场的销量就受到了很大的影响。虽然华为也在推广自家的HMS和应用商店,但是在短时间内很难与谷歌抗衡。

很高兴回答这个问题。

国外网站不直接提供apk文件而是要到googleplay下载,我认为原因如下:

很多apk是付费软件,需要依赖平台提供支付手段。

付费的apk,通过googleplay这个平台进行支付交易比较便利。 如果直接从网站下载,这些网站势必要为此搭建一套支付平台,增加了不必要的开销。对于那些个人开发者来说,则googleplay这个平台则更有必要,总不能个人开发者也都自己做个独立网站,供人下载自己开发的apk吧。

googleplay提供了完整的apk审核机制。 googleplay可以对apk集中管理,提供检索。

所有的apk集中在一个地方统一管理,有助于用户检索,各取所需。 这个道理应该浅显易懂,googleplay上的apk玲琅满目可供选择,如果网站各自提供各自的apk下载,用户想找到对应功能的apk就会变得非常麻烦。

基于上面的原因, 由googleplay而不是国外网站提供下载apk的服务,是最好的选择。国内的应用市场其实也是同样的道理。

希望我的回答能帮助到你,谢谢。

有官方把关多少能确认应用是安全的,比如你可以确认获取到的微信支付宝以及银行客户端是官方提供的,没有经别人篡改加个木马啥的。

谷歌公司要保证所有app都合理合规,并且没有病毒…最主要是把主动权掌握在自己手里

这个问题首先可能要问:

如果知道并且用过,那就比较好进入下一步;如果还不知道,那就还不算真的安卓用户,类比一下就像腾讯的应用宝,华为的应用市场一样。

下面回答第二步:

google play的第三个作用也很关键:建立交易市场的秩序。

补充一点:

最新版的安卓系统,已经开始限制第三方软件市场了,也就是说,以后应用宝等会遇到麻烦。

我认为并不是网站不愿意提供下载,而是开发商倾向与在GOOGLE PLAY商店里开放下载。这有几个原因首先,国外用户对GOOGLE PLAY商店的使用率非常高,除了苹果用户外,绝大多数用户已经习惯于下载软件 游戏 去GOOGLE PLAY商店搜索。


然后,GOOGLE PLAY商店有比较成熟的推荐机制,而这个推荐机制和下载量息息相关,所以开发商不希望自己的下载量被分流,而是希望集中在GOOGLE PLAY商店中,一旦在GOOGLE PLAY商店获得了较高的下载量,就可以获得进一步的推荐位置来获得更高的下载。


通过接入GOOGLE PLAY商店的SDK,软件可以获得比较稳定的收费平台和数据分析服务,这比放到不提供相应服务的其他网站,自己去搭收费接口要方便很多。如果一款软件定位为面向全球用户,付费途径稳定通畅是很重要的。



还有就是业务模式的问题,欧美日韩的软件基本上是靠软件提供的服务来收费盈利的,因此需要反盗版,而GOOGLE PLAY是一个非常划算的反盗版机制。但是中国的软件基本上不靠收费盈利,而是要靠收集客户隐私贩卖牟利,而GOOGLE PLAY在严打这种行为。



以上就是我个人的意见,如果您有什么不同的意见的话,欢迎大家理性讨论哦。

国外直接下载apk的人也多的是,有好多直接提供apk的地方。恕我直言,像Google play和ios的app store真不如我自己去下载安装文件方便。

和机制有关

国外的手机都有谷歌服务,所以就不需要在网站上放apk挤占服务器了,再加上一些大型 游戏 的obb数据包就算网站上提供也不能下载到正确的地方(不要提教程这件事,上次和一个qq好友折腾了老半天结果对方连文件管理器都找不到),只能在 游戏 内再下载,又得挤占一部分服务器。直接放到谷歌上,又不存在没有谷歌服务的情况,所以非常方便。

国内没有统一的商店,所以不会出现谷歌商店的情况,再加上国内安装包没有谷歌商店的限制,所以几G+大小的安装包随处可见,装上或者卸载都费劲。而谷歌的 游戏 看着整体很大实际上安装包很小,其他部分都是数据包,放在Android/obb文件夹下

利益

安卓手机目前仍然允许用户自己安卓软件而不需要经过谷歌商店,国外也有很多网站提供apk下载,只不过国内的人不太了解也没必要了解。

最著名的比如APKPure,就是一个非常大的apk下载平台,不但可以在网站上直接下载apk还可以安装它的app,方便搜索下载安装。

但是自己下载apk其实一直是不受鼓励的,一是因为钱,收费app谷歌商店是可以抽成的这点大家都知道。

再一个就是安全问题,这些apk可以被轻易地逆向工程,添加代码后重新打包,因为不需要经过谷歌的安全审核,你不知道自己下载的apk到底有什么不安全的东西。

所以国外很多用户如果能够在谷歌商店找到app,一般不会去别的地方下载apk。

Tinker 是微信团队开源的Android热修复解决方案,我们主要将这项技术用于在不发版的情况修复线上app存在的问题

我们的项目一直使用Jenkins构建来完成上线,在接入Tinker后我们也希望在发布补丁的时候也能通过Jenkins一键构建完成,因此有了这篇文字第一次写博客,如有不足之处,请多多指正

Tinker官方 文档 给出了详细的接入教程,然后很多同学在接入上还是觉得太难,太麻烦!我在接入的时候,采取的简单粗暴的方式,直接照搬官方demo tinker-sample-android 来完成接入由于要在多个项目中使用,因此将其当做一个library提供给多个项目依赖;如图:

本文demo地址: TinkerDemo

下面的做法建立在Application改造完成的前提下

1主工程的 buildgradle 文件添加tinker插件和资源混淆组件(AndResGuard)插件

2主Module依赖tinkelib

3拷贝config文件到根目录

4主Module引入tinkergradle和resguardgradle配置

5TINKER_ID的配置

51 buildgradle文件末尾添加,通过git commit来作为TINKER_ID

52 主module的defaultConfig中添加

注:当然有人想用app版本号作为TINKER_ID,只要将getTinkerIdValue()改为对应的版本号即可

6运行 gradle resguardRelease 命令,即可生成发布包(基准包),同时在工程根目录下会自动备份tinker需要的文件(apk、R、mapping、Resource mapping);
图:

7生成补丁时,只需要执行 gradle tinkerPatchRelease 命令即可

至此,gradle的相关配置就完成了!

Jenkins的搭建及相关用法请自行google

我们的Jenkins有一个线上job,由于我们使用master分支上线,因此在Jenkins的Branch Specifier中保持master不变

发布版本的时候使用 clean resguardRelease 命令,如图:

发布补丁时将tasks修改为 tinkerPatchRelease 即可

我们的渠道包使用美团的旧版生成方案,这一步工作是在服务器将apk拷入相应文件夹来完成,同时再执行一些其他脚本;

TinkerDemo

tinkergradle中的备份脚本来着 w4lle 的 Gradle模块化配置 ;感谢w4lle同学

客户端安装整合包
1下载整合包
①以中文搜索为例,到 中文 搜索想玩的整合包,进入 相关链接 。
1jpg
②在 Files 下载客户端的整合包即可
2jpg
2安装整合包
①打开 HMCL,进入 版本列表-> 安装整合包-> 导入本地整合包文件 ,选择对应压缩包后,等待资源下载完成即可启动游戏畅玩。
②可在 游戏-> 浏览-> MOD文件夹 里添加想要的其他MOD
服务端安装整合包
1下载整合包、服务器文件
①参考上述步骤下载带 Server 的压缩包,解压压缩包。一般压缩包 overrides 文件夹下包括以下文件
3jpg
②下载整合包对应版本的 serverjar、 forge-版本号-installerjar (以下简称为 forgejar ),复制到刚才解压的 overrides 文件夹
serverjar
forgejar 可以下载最后版本或推荐版本任一。
4jpg
本地开服测试
在服务器进行部署前,可以先在本地测试,以下都在 overrides 文件夹下 *** 作
①打开 forgejar, 安装服务端,等待资源下载完成。(如果失败,重复 *** 作)
5jpg
②开启本地服务端测试
(1)上一步完成后会包含 forge-版本号jar ,打开它,会出现 eulatxt ,将里面的 “eula=false” 改为 “eula=true” ;
(2)再次打开 forge-版本号jar ,就可成功启动本地服务端。(如果崩溃,可通过 crash-reports 文件夹查看原因)
(3)此时通过 HMCL启动器启动游戏,选择多人游戏->添加服务端,在服务端地址输入 127001:25565 (注意冒号是英文的),然后进行连接。如果成功进入说明搭建成功。
③调整参数
(1)打开 serverproperties 文件,并且启动rcon协议,并且设置 rcon 密码
定位到下面的行,并且更新它们的值,就像下面显示的一样:
rconport=25575
rconpassword=strong-password
enable-rcon=true
不要忘记将strong-password修改为一些更安全的密码。如果你不想从远程位置访问 Minecraft 服务器,确保 rcon 端口被防火墙所阻塞。复制
在这里,你可以调整服务器的默认属性。想要获取更多关于服务器设置的信息,浏览serverproperties页面。
(2)可以在 opsjson 、 banned-ipsjson 、 banned-playersjson 完成设置op、ban玩家和ip等 *** 作。
④测试完成后即可打包到服务器开服

只要将SQLite数据库和APK一起打包成一个压缩文件,就可以一起发布了,不过SQLite数据库需要安装服务器软件,添加数据库才能使用,一般的客户端并不会去安装的。手机上也不能安装SQL服务。

你去访问百度的网页,那么百度的网页放在哪里,他自己的服务器。
一般这个服务器地址,开发服务器的人员会提供的。如果你前后都在弄,那自己想办法吧。
你自己也可以搭建一个服务器,xmapp这种不知道适不适合你,其中的一个选择。
还有版本更新的话,个人建议,可以去维护一个XML文件,里面面有你的版本号,还有下载地址,或者访问服务器返回JSON数据,这些都随意。通过与本地版本号的对比来判断升级与否。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10753220.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存