构建自己的Android代码托管服务器

Hyper-V集群部署指南 工欲善其事,必先利其器。搭建一个方便管理的服务集群,是分布式学习很重要的环境。 目前流行的虚拟机产品主要为Vmware 和 win10自带的Hyper-V(win10家庭版无此功能),网上关于Vmware的教程更多,显然它更容易上手,但Hyper-V也算是一个很不错的产品,这里记录一下我的学习过程: 目录 Hyper-V的安装 服务集群的搭建 虚拟机的网络通信 NAT网络的搭建 端口映射 Linux的静态IP 虚拟机的自启动问题 Hyper-V的安装 也不能算说是安装,如果你的win1 阅读详情

研究android源码的都知道,在下载源码时,都是用repo init ,repo sync等命令去下载源码,repo内部是使用git进行版本控制的,之前没有仔细的了解,只知道跟着source.android.com的教程,当个打字员,然后编译,之后rom就出来了。让我进行这方面的研究的一个trigger是我现在进行的项目,需要对android的framework进行改动,我需要对音频模块进行修改,然后我小弟需要对另外一个模块进行修改,考虑到长久的代码管理及代码备份整合,有必要进行代码托管。之前我一直习惯使用svn,但是android那么庞大的数据量,用svn,再怎么多的硬盘也不够。先前就对git有所耳闻,但一直感觉它是个谜,没有勇气去触碰,趁着这个机会,也想好好学一学。

本文的目的是构建自己的android源码仓库,为此构建了一条龙的教程,进行了一系列服务端的安装配置,如repo,git,,gerrit,ssh rsa认证,并在此基础上从github上迁移Cyanogenmod仓库,达到最终的目的。

1、repo原理分析

        由于设备的原因,我现在代码都是从Cyanogenmod 上拉取的。根据官方的教程,是从http://github.com/Cyanogenmod/android.git 下载下来的,我之前以为它的代码全都是在那,用浏览器打开下,居然只有两个文件:README.mkdn和default.xml,仔细的看了下它的内容,尤其是default.xml,发现了端倪.

http://github.com/Cyanogenmod/android.git内容:

default.xml:

        看着default.xml,仔细的跟源码进行对照,发现了其中的奥秘,也终于见识了git的分布式功能:git是个分布式的版本控制软件,它可以让你把代码分布在各个仓库,然后从各个仓库把各个项目取出来,这些仓库可以是你自己的,也可以是别人的。而repo正是对这些仓库进行统一的控制管理的工具。从default.xml,可以看到有<remote><project>标签,<remote>表示一个git源,而<project>是从那些源取出来的项目,在<project>可以使用remote指定源,如果没有指定,就从<default>使用定义的源<project>里的path表示下载到android source的目录,name表示从源处获取的项目git仓库位置,revision表示分支版本。如上图,我们可以看到,该版本,从aosp的android-4.0.4_r1.2分支取出device/common项目,放置在android源码根目录的device/common目录下。

        repo会从指定的版本仓库里下载里面的default.xml文件,进行解析,然后根据不同的<remote>和<project>的配置,把项目从分布服务端下载下来,从而形成android的源码,得意强大吧!

        因此,我们可以修改里面的default.xml,更改部分的<project>成自己的版本仓库,便可进行分布式的开发了。自己可以github.com上构建个自己的仓库,进行开发。

repo在管理的时候,会使用gerrit进行Code Review,这个稍后再讲,不过《Git权威指南》的作者有一篇《脱离 Gerrit 审核服务器,使用 repo》,据称可以脱离Gerrit,很惭愧,按照他的教程我没有成功,也不想去深究了,求各路大牛指教。

        repo的命令详见:http://source.android.com/source/using-repo.html

2、git服务端架设

        具体git的命令不详细描述了,有几个个人认为好的资源分享下:

        《Pro Git》

        《看日记学Git》

        《Git权威指南》   --- 未读,听说口碑很好

        Git的架设通常需要openssh server, Git, Gitosis, Apache2,我的服务端是ubuntu,这里用了两台机器:

  • Server:表示我的Git服务端
  • Client: 表示我的Git客户端

        2.1、Server上安装Git服务

[html]  view plain copy
  1. sudo apt-get install git-core   

        2.2、Server上安装Gitosis

        Gitosis是一个工具程序,可以帮助我们进行Git仓库的访问控制和远程管理。
[html]  view plain copy
  1. sudo apt-get install python-setuptools  
  2. mkdir ~/src  
  3. cd ~/src  
  4. git clone https://github.com/tv42/gitosis.git  

[html]  view plain copy
  1. cd gitosis  
  2. sudo python setup.py install  
        PS:需先安装python:  sudo apt-get install python-setuptools

        2.3、为Gitosis创建系统用户

        由于是私人团队使用,我个人喜欢用以下方法创建:
[html]  view plain copy
  1. sudo adduser git  
  2. sudo passwd git  
        把gitweb的项目设置为/homg/git


        2.4、安装远程管理客户端

        安装远程管理客户端,允许Client能通过ssh对Git进行管理。在Client的~/.ssh上执行:
[html]  view plain copy
  1. ssh-keygen -t rsa  
        该命令会产生一对公私钥,然后将公钥复制到Server服务端

[html]  view plain copy
  1. scp ~/.ssh/id_rsa.pub git@Server:/home/git  
  2. sudo -H -u git gitosis-init < /home/git/id_rsa.pub  
        然后,会在/home/git/repositories创建仓库目录,并且里面创建了一个管理员仓库,叫gitosis-admin,并且会把id_rsa.pub复制到keydir目录下
        修改一个文件的权限(= =具体为啥修改,没具体深究)
[html]  view plain copy
  1. sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  

        之后我们便可以再Client端对Git Server进行控制
[html]  view plain copy
  1. git clone git@Server:repositories/gitosis-admin.git   
        可以通过修改gitosis-admin/gitosis.conf文件来管理Server上的仓库
[html]  view plain copy
  1. [group gitosis-admin]    
  2. members =emos@emos.com   
  3. writable = gitosis-admin   
         该文件可以创建不同的分组[group],分组有的members 设置不同的成员,然后通知对不同仓库的管理权限,在这里对gitosis-admin有写的权限。

        2.5、添加新用户

        当有新用户添加时,可以把他的公钥放在keydir下,并修改gitosis.conf即可,用户名是去掉.pub后缀后的名称。如:我的公钥名称是emos@emos.com.pub,那么我的用户名就是 emos@emos.com

        2.6、创建新项目

        我们想要创建个Git仓库的话,可以在/home/git下创建即可。
[html]  view plain copy
  1. cd ~  
  2. mkdir sample.git  
  3. git --bare init  

        之后可以再gitosis.conf,修改配置文件,配置权限
[html]  view plain copy
  1. [group sample]    
  2. members = emos@emos.com  
  3. writable = sample  
        members为用户,表示这些用户能够对sample进行写入。

        可以通过http://your-server-ip/cgi-bin/gitweb.cgi,查看你当前的Git仓库。

        2.7、ssh rsa认证

        我们在Client端执行git clone的时候,经常会提示你输入密码,我在使用github的时候,并不需要密码,网上查了下,原来是github的ssh采用rsa认证的原因,无需输入密码,采用公私钥即可进行操作。出于个人喜好,我自己想在Client端通过rsa认证的方式访问Server。
        修改/etc/ssh/sshd_config
[html]  view plain copy
  1. RSAAuthentication yes  
  2. PubkeyAuthentication yes  
  3. AuthorizedKeysFile    %h/.ssh/authorized_keys  
        把Client上传的id_rsa.pub拷贝到 /home/git/.ssh/authorized_keys
[html]  view plain copy
  1. cd /home/git  
  2. cp /home/git/id_rsa.pub .ssh/authorized_keys  
        重启ssh服务即可,如果有新的客户端想通过该方式访问Server,把它的rsa公钥拷贝添加到authorized_keys即可。之后我们用ssh登陆或者git clone就无需输入密码进行验证了。Git Server配置完毕。

References: http://blog.youkuaiyun.com/sheismylife/article/details/7204345
                        http://blog.youkuaiyun.com/wirror800/article/details/5189564

3、Gerrit服务端配置

        到最头疼的地方了,吐槽下历史:起初压根不知道Gerrit的存在,我在创建自己的仓库管理的时候,拷贝Cyanogenmod,把它的default.xml里Cyanogenmod的review去掉,然后在使用repo upload的时候就报错了,表示木有review,木有Gerrit,代码不让上传,so,repo貌似泡汤了。。
Gerrit是咩东西呢?它是代码审核工具,包括了一套权限系统,我们在使用Git的时候,如果使用git push,是直接提交到到Git仓库的,为了保证代码的质量,Gerrit出现了(= =我YY的),使用Gerrit后,我们代码的提交流程大致如下:我们用git push把代码提交上去之后,要先经过Gerrit的审核,审核通过后才会提交到主线的代码。详细的流程,如下图:


        3.1、gerrit安装

        Gerrit安装在Server端,从 http://code.google.com/p/gerrit/ 下载Gerrit,最新版的是2.4,它运行时需要用到数据库,有H2,Mysql,PostgreSQL等,为了方便我就是用H2。由于只是搭建个小型服务器,Authentication method是用http,其它都是默认。
        要初始化Gerrit,运行 java -ar gerrit.war init -d /path/to/location会在/path/to/gerrit指定路径上安装Gerrit运行时。然后会弹出一大堆的交互信息,我就只有Authentication method选择http,其它默认。安装完后会弹出浏览器弹出错误界面,提示http请求未带授权头。

        3.2、安装配置apache2

[html]  view plain copy
  1. sudo apt-get install apache2  
        激活代理模块
[html]  view plain copy
  1. ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enable/proxy.conf     
  2.     
  3. ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enable/proxy.load     
  4.     
  5. ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enable/proxy_http.load    
        然后再/etc/apache2/httpd.conf中加入下面的内容(该文件初始为空),为了不跟之前的gitweb冲突,把该端口设置成8088
[html]  view plain copy
  1. <VirtualHost *:8088>     
  2.   ServerName localhost     
  3.   ProxyRequests Off     
  4.   ProxyVia Off     
  5.   ProxyPreserveHost On     
  6.     
  7.   <Proxy *>     
  8.         Order deny,allow     
  9.         Allow from all     
  10.   </Proxy>     
  11.       
  12.   <Location /login/>     
  13.      AuthType Basic     
  14.      AuthName "Gerrit Code Review"    
  15.      AuthBasicProvider file     
  16.      AuthUserFile /path/to/gerrit/etc/passwords   <!-- /path/to/gerrit为gerrit目录 -->  
  17.      Require valid-user     
  18.   </Location>     
  19.     
  20.   ProxyPass / http://127.0.0.1:8080/     
  21. </VirtualHost>    
        在/etc/apache2/ports.conf添加
[html]  view plain copy
  1. NameVirtualHost *:8088  
  2. Listen 8088  


        这里需要注意2个地方,第一个是/path/to/gerrit/passwords 是用来保存gerrit的用户资料文件,可通过以下命令生成,该命令用来创建gerrit的用户
[html]  view plain copy
  1. htpasswd -c /path/to/gerrit/etc/passwords "gerrit_fisrt_username"  (第一次时要加-c,之后就不用了)  
        这里的gerrit_first_username就是用来登陆的用户名。
        第二个是ProxyPass / http://127.0.0.1:8080/,这里的配置要和/path/to/gerrit/etc/gerrit_config里面的
[html]  view plain copy
  1. [httpd]     
  2.         listenUrl = proxy-http://127.0.0.1:8080/    
        匹配。
        配置好后,可以通过浏览器访问 http://127.0.0.1:8088,之后会提示用户名密码,输入gerrit_first_username和密码登陆,就会自动转到http://127.0.0.1:8080,。点击页面右上方的Setting,然后左侧栏点击profile,可以看到当前登录名,然后点击Contact information,在fullname随便输入名字即可。 第一个登陆的账户是管理员账户。
        在Client端执行命令
[html]  view plain copy
  1. ssh -p 29418 gerrit_fisrt_username@your-server-ip  
        会提示Permission denied(publickey),把刚才Client端上传的id_rsa.pub内容添加到gerrit中。注意这里要拷贝id_rsa.pub的全部内容。再次执行命令就是看到Welcome信息了。

        3.3、修正邮件地址

        刚注册的用户无法进行邮件的注册,在repo upload的时候会出现提示:
[html]  view plain copy
  1. remote: ERROR:  You have not registered any email addresses.    
        我们可以停止Gerrit,进行手工的注册:
[html]  view plain copy
  1. $ bin/gerrit.sh stop  
  2. $ java -jar bin/gerrit.war gsql  
  3. Welcome to Gerrit Code Review 2.1.6.1  
  4. (H2 1.2.134 (2010-04-23))  
  5.   
  6. Type '\h' for help.  Type '\r' to clear the buffer.  
  7.   
  8. gerrit> select * from ACCOUNT_EXTERNAL_IDS;  
  9.  ACCOUNT_ID | EMAIL_ADDRESS          | PASSWORD | EXTERNAL_ID  
  10.  -----------+------------------------+----------+------------------------------------------  
  11.  1000000    | NULL                   | NULL     | uuid:ac1b8a08-2dd1-4aa1-8449-8b2994dffaed  
  12.  1000000    | NULL                   | NULL     | username:demo  
  13. (2 rows; 23 ms)  
  14. gerrit> update ACCOUNT_EXTERNAL_IDS set EMAIL_ADDRESS='alex.blewitt@example.com' where ACCOUNT_ID=1000000;  
  15. UPDATE 2; 5 ms  
  16. gerrit> select * from ACCOUNT_EXTERNAL_IDS;  
  17.  ACCOUNT_ID | EMAIL_ADDRESS          | PASSWORD | EXTERNAL_ID  
  18.  -----------+------------------------+----------+------------------------------------------  
  19.  1000000    | alex.blewitt@example.com | NULL     | uuid:ac1b8a08-2dd1-4aa1-8449-8b2994dffaed  
  20.  1000000    | alex.blewitt@example.com | NULL     | username:demo  
  21. (2 rows; 23 ms)  
  22. gerrit> \q  
  23. Bye  
  24. $ bin/gerrit.sh start  
        (此表来自于http://www.infoq.com/cn/articles/Gerrit-jenkins-hudson)

        3.4、Gerrit创建项目

        可以在web上进行项目的创建,也可以通过命令行创建
[html]  view plain copy
  1. ssh -p 29418 git@your-server-ip gerrit create-project --name example.git  
        上述命令创建一个名为example的项目,在之前指定的Git目录里初始化一个空的代码库。如果已经有一个代码库了,Gerrit不允许创建同名代码库——但你可以先对它进行临时重命名,随后再把名字改回来。我们在Client端创建个克隆:
[html]  view plain copy
  1. $ git clone ssh://git@your-server-ip:29418/example.git  
        我们可以向代码库进行提交和推送,就和其他Git系统一样:
[html]  view plain copy
  1. $ cd example  
  2. $ echo hello > world  
  3. $ git add world  
  4. $ git commit -m "The World"  
  5. [master (root-commit) 06bf85e] The World  
  6.  1 files changed, 1 insertions(+), 0 deletions(-)  
  7.  create mode 100644 world  
  8. $ git push  
  9. No refs in common and none specified; doing nothing.  
  10. Perhaps you should specify a branch such as 'master'.  
  11. $ git push origin master  
  12. Counting objects: 3, done.  
  13. Writing objects: 100% (3/3), 217 bytes, done.  
  14. Total 3 (delta 0), reused 0 (delta 0)  
  15. To ssh://me@localhost:29418/example.git  
  16.  ! [remote rejected] master -> master (prohibited by Gerrit)  
  17. error: failed to push some refs to 'ssh://demo@localhost:29418/example.git'  
        原因是Gerrit不希望我们直接覆写Git代码库中的任何分支,而是将变更推送到另一个refspec中,这让Gerrit有机会在代码审查中修改代码。。客户机必须先push到远程仓库的refs/for/*分支上,等待审核。这也是为什么我们需要使用gerrit的原因。gerrit本身就是个代码审核工具。最简单的方法是为推送配置一个默认的refspec:
[html]  view plain copy
  1. $ git config remote.origin.push refs/heads/*:refs/for/*  
  2. $ git push origin  
  3. Counting objects: 3, done.  
  4. Writing objects: 100% (3/3), 217 bytes, done.  
  5. Total 3 (delta 0), reused 0 (delta 0)  
  6. To ssh://demo@localhost:29418/example.git  
  7.  * [new branch]      master -> refs/for/master  
        即可push成功。之后会在Gerrit上显示。
        值得注意的是,安装默认完,只能进行初步的代码审核,没办法成功push,我也是到几个小时前才发现了,安装完Gerrit不会用,这是很蛋疼的事情。查看Project里Access设置的-2,-1,+1,+2,一头雾水。后来试了下,+2表示,能够立即push到Git仓库去。为了使用该功能我们需要 首先需要为用户配置权限信息,在admin--》projects--》All-Projects--》access中点击 edit,然后设置权限,+2表示能够立即push到Git仓库中,其它功能位置。 说来话长了。主要 是要为refs/heads/*添加,
        Label Code-Review
        Label Verified
        Submit
        +1和+2权限,并为每个权限添加用户组。 权限配置好以后, 点击某个commitid,在点击review,然后点击pulish或者submit
, 顺序是先审核,再验证,再提交。

        3.5、Gerrit创建分支

        只有上一步通过审核提交完之后,才允许Gerrit在上面进行分支的创建,个人认为是因为Gerrit上为空,没有一个commit-id,所以分支无法指向具体的版本。在上一步完成后,可以在project中进行创建,然后在本地提交上去:
[html]  view plain copy
  1. $ git checkout -b gingerbead  
  2. $ git push origin gingerbread  



References: http://fatalove.iteye.com/blog/1332881
                        http://www.infoq.com/cn/articles/Gerrit-jenkins-hudson

4、构建android仓库


        为了构建android的仓库,供内部使用,我打算在Server见一个repo server,把cyanogenmod上的gingerbread分支的代码下载到Server上,然后进行内部的研究及使用。

        4.1、制作android服务器镜像

[html]  view plain copy
  1. $ mkdir  /home/git/mirror/    
  2. $ cd  /home/git/mirror/   
  3. $ repo init -u http://github.com/CyanogenMod/android.git --mirror  -b gingerbread  
  4. $ repo sync    
        在github中,如果不使用 -b,会出错。

        4.2、建立版本库

[html]  view plain copy
  1. $ mkdir  /home/git/android/gingerbread  
  2. $ cd  /home/git/android/gingerbread  
  3.     
  4. $ repo init -u git@your-server-ip:mirror/CyanogenMod/android.git --mirror  -b gingerbread  

        修改.repo/manifest.xml

[html]  view plain copy
  1. -           fetch="git://android.git.kernel.org/"    
  2. +           fetch=".."    
  3.     
  4. $ repo sync    

        即可。构建完毕,之后就可以在Client使用repo -init -u git@your-server-ip:android/gingerbread/CyanogenMod/android.git -b ginerbread进行源码下载。

References: http://xxw8393.blog.163.com/blog/static/372568342011112111028926/


5、总结

        总的来讲,构建过程还是比较顺利的,遇到问题查看网上的信息进行各种分析,比较蛋疼的是那android源码的下载,在ubuntu上搭建的过程很简洁,很适合俺这种新手。不过在构建过程中,没有对Git有一定的了解碰到问题是比较郁闷的,比如那个Gerrit的上传及创建分支的问题,没有对它深入的理解,对那些命令估计也只是抄来抄去的,不能理解它的原理,我就属于这种,接下来要好好研究下。



文章出处:https://i-blog.csdnimg.cn/blog_migrate/3374fe34d88bcdd9df8b0a0a40b630a4.png

Hi3516CV610 YOLOv8模型转换与部署实战:从源码到板端推理全流程解析 本文详细解析了将YOLOv8模型部署到Hi3516CV610开发板的全流程。内容涵盖从Ubuntu环境搭建、模型获取与验证,到关键的PyTorch模型转换为ONNX格式,并利用海思工具链量化生成板端可执行的.wk文件。最后,指导开发者编写板端C程序,完成视频流处理、NNIE推理及结果后处理,并提供了部署调试与性能优化的实用技巧。 阅读详情

相关推荐

告别示教器!用C#和ABB PC SDK 6.08打造你的第一个Windows机器人控制台(附完整连接代码)

本文详细介绍了如何使用C#和ABB PC SDK 6.08开发Windows机器人控制台应用,实现无示教器的机器人控制。从环境配置、SDK引用到机器人发现、连接及状态监控,提供了完整的代码示例和架构设计建议,帮助开发者快速掌握上位机控制技术。

weixin_29758911的博客 319

Gerrit的使用和常见错误

邮件不符合错误 由于我的gerrit是内网,并且也没有内部邮件服务。 You have not registered any email addresses. gerrit下面直接修改mysql中的数据来修复这个错误: mysql> show databases -> ; +--------------------+ | Database | +---------

池塘 1万+

QSPI Flash的原理与QSPI时序的Verilog实现

本节主要是讨论QSPI(Quad SPI,四线SPI总线)的相关内容。我的开发板上有一片型号是W25Q128BV的Quad SPI Flash存储器,本文将以它为例子来说明QSPI操作的一些内容。

Go Forward Forever! 4164

APP源代码如何部署到服务器

运行如`npm install`(Node.js)、`pip install -r requirements.txt`(Python)等命令,安装应用所需的依赖库。- 根据需要配置Web服务器(如Apache、Nginx)和应用服务器(如Tomcat、Node.js)。- 配置CI/CD工具,如Jenkins、GitLab CI/CD等,实现代码的自动化测试和部署。- 安装操作系统和必要的软件环境,如数据库、Web服务器、编程语言运行环境等。- 选择合适的服务器(例如,云服务器、虚拟私有服务器等)。

隐身博客 1291

NCCL使用指南-进阶篇

前文介绍了NCCL的常用环境变量,本文介绍了NCCL-test性能基准测试,以及一些大规模集群测试的经验数据。

father_yingying的博客 1404

radsystems的激活(破解)和使用

上个文章讲述了radsystems的下载,但是只有30天的免费使用权,这篇文章将会讲解如何破解激活radsystems。注意:如果不想去官网下载的话,点击安装包的exe文件。不要急,打开我给你们的安装包,点击crack。如果提示done则完成(我的是激活过的)注意:这是8.7版本的。点击generate。

weixin_65144487的博客 3513

apache2 + git + gerrit + mysql 配置、简单git操作

经过一晚的折腾,终于在linux mint12下将apache2,git,gerrit配置成功。 参考资料: [url]http://m.oschina.net/blog/33017[/url] [url]http://www.lifeyun.com/code-review-tools-installation-gerrit.html[/url] [url]http://unethic...

Active 482

3分钟!教会你用 DeepSeek/Claude3.7+Cursor 快速入门AI编程(喂饭级教程)

3分钟!教会你用 DeepSeek/Claude3.7+Cursor 快速入门AI编程(喂饭级教程)

yizhen91y的博客 4721

gerrit/git操作中遇到的问题

问题1:lack ‘forge committer’ permission. remote: ERROR: commit 639e7ed: email address linux@163.com is not registered in your account, and you lack ‘forge committer’ permission. $ git push origin dev:zigbee_dev Enumerating objects: 93, done. Counting objects

yehe111的博客 1万+

Centos 7 Linux 安装 JDK 8:下载、安装、配置环境变量、验证

本文详细介绍了在 CentOS 7 系统上手动安装 JDK 8 的完整流程,包括环境准备、JDK 安装包下载与上传、解压安装、配置全局环境变量,以及最终的验证步骤。适用于使用 VMware 虚拟机、云服务器或物理机的 CentOS 7 用户,操作清晰、步骤完整,帮助开发者快速搭建 Java 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2577

100天精通Python(可视化篇)——第89天:Bokeh库绘图可视化基础入门(参数说明+案例实战)

专栏导读 一、Bokeh是什么? 二、安装与导入 三、Bokeh接口介绍 四、创建图表 五、添加自定义渲染器 切换主题 添加图例 图例位置 图例方向 图例背景和边界 图例文本的外观 行列布局 网格布局

努力让自己发光,对的人才能迎着光而来 1万+

昇腾AI自动生成安卓应用

该实现方案的核心创新点在于将昇腾NPU的专用AI算力AtomGit社区的“开源+AI”一体化基础设施以及标准的安卓开发生态进行了深度融合。优化代码生成模型:在AtomGit上利用昇腾算力,针对安卓开发领域数据微调大模型,提升生成代码的准确性和可用性。完善构建流水线:处理更复杂的项目结构、第三方依赖自动引入和构建错误修复。设计交互界面:开发一个Web或桌面应用,让用户输入描述、查看生成进度并下载APK,形成完整产品体验。

u010305527的博客 243

ARM CoreLink 系列 5.1.1 -- CI-700 System Address Map 】

所有的CHI 命令都包含一个 Source ID 和 Target ID, 其中 Source ID 可以来自于 RN Node, Target ID 可以来自于HN node或者其他 SN node. 其中 Target ID 是通过 SAM解析传入的地址得到的。对于 CI-700中的所有 RN Node 中的 SAM 多会进行配置,因为RN Node 访问的是整个地址空间,不同的地址空间会有不同的属性(I/O, DRAM),所以会对RN SAM 配置多个不同属性的区域。

CodingCos的博客 770

git gitlab github gerrit jenkins

做linux或者android的, 会经常使用以上的工具。 git 代码管理 gitlab git服务器端 github  一个开源git官网方式的网站,集合了世界很多代码玩家,包括很多公司资深工程师都在用 gerrit  通常gerrit+gitlabs做代码审查,然后再合入git jenkins  通常用于自动构建,每日构建,版本构建。 以上可能说的不确切,待后续补

ee230的专栏 1254

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android自动化编译设置AndroidManifest.xml中package值(包名)

手动修改Android的AndroidManifest.xml中package值(包名)很简单,手动修改即可。但是项目中需要把Android的项目源代码放到服务器端在客户下载时候动态编译生成,且生成的app签名相同但包名不同(若此时包名相同就是相同的app),这种需求需要在服务器...

weixin_34106122的博客 458

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

手机端编程环境搭建与云端部署实战指南

云端开发环境通过将计算密集型任务卸载到远程服务器,解决了移动设备性能限制的问题。其核心原理是构建移动端、云端开发环境和部署平台的三层架构,移动端负责代码编辑和基础操作,云端提供完整的Linux环境和编译器。这种架构的技术价值在于实现了跨设备协同开发,特别适用于移动办公和应急处理场景。以静态网站部署为例,结合Hugo静态站点生成器和Vercel部署平台,开发者可以在手机端完成从编码到发布的完整流程。通过合理配置Termux终端工具和SSH连接,配合GitHub代码托管,能够有效提升移动开发效率。

weixin_33696106的博客 467

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Android】使用Termux搭建代码托管Git服务器

在Android手机上有一个Termux APP,可运行类似 Linux 终端的模拟器,现在手里的项目代码比较多难以管理,放到网上的Git代码托管平台又不想公开的话,是否觉得不放心,就把手机用来搭建一个私有的代码托管Git服务器运行,这里告诉大家具体怎么做。

2180

Readest完整指南:打造你的终极跨平台阅读体验

还在为多设备间的阅读进度无法同步而烦恼吗?想拥有一个既能深度阅读又能智能管理的电子书阅读器吗?Readest就是你的完美选择!这是一款开源的跨平台电子书阅读器,支持Windows、macOS、Linux、Android、iOS和Web平台,让你在任何设备上都能享受无缝的阅读体验。 ## 为什么选择Readest? Readest不仅仅是一个电子书阅读器,它是一个功能全面的阅读生态系统。基于现代

gitblog_00696的博客 1013

基于Android的托管app

②教师排课表管理:学校教师管理员按照教师晚托课程科目、午托情况、请假情况等进行相应排表,对教师的晚托服务表与午托服务表进行管理。①学生晚托排课表管理:学校教师管理员按照学生晚托选课、学生晚托班级、晚托学生放学时间等进行智能排表,对学生的晚托课表进行管理。学校教师管理员对晚托学生个人信息、晚托学生选课、晚托学生兴趣班班级、晚托学生放学时间、晚托学生在班情况进行管理;家长在手机上对学生课程进行撤销,以便成功选课。家长在手机上对学生午餐内容、午休情况、晚托情况进行查看等功能,方便家长对学生的托管情况进行选择。

u014388322的专栏 1239

【亲测免费】 探秘IPAPK服务器:一个高效、安全的安卓应用托管平台

探秘IPAPK服务器:一个高效、安全的安卓应用托管平台 项目简介 是一个专为Android开发者设计的应用发布和托管平台。它允许开发者轻松上传、管理并分享他们的APK应用文件,让全球的用户无需通过Google Play或其他第三方市场就能便捷地下载安装。这一开源项目不仅降低了分发成本,还提供了自定义权限控制和多语言支持,大大提升了安卓应用发布的灵活性和可控性。 技术分析 IPAPK服务器的核心采用...

gitblog_00036的博客 746

Traccar SMS Gateway部署指南:自托管服务器与多设备协同配置

Traccar SMS Gateway是一款强大的Android短信网关应用,能够将您的Android设备转变为自托管的短信服务器,实现多设备协同管理与远程短信收发。本指南将带您完成从环境准备到服务器配置的全流程,让您快速搭建属于自己的短信网关系统。 ## 准备工作:环境与依赖 在开始部署前,请确保您的环境满足以下要求: - Android设备:Android 8.0(API 26)或更高版本

gitblog_00080的博客 924

Android平台 | 零代码快速集成AGC云托管服务

说起搭网站,最让人心烦应该就是网站域名申请、网站服务器搭建,以及证书管理这些需要长期运维的操作,实在令人头大。 华为AppGallery Connect的云托管服务,提供了方便快捷的应用部署能力,只需要关注页面交互,页面样式,以及业务逻辑就可以,后端的域名申请,页面分发等操作都会帮你配置好,省时又省力。 下面就以一个最简单的域名托管为例,介绍华为AG Connect云托管服务的使用。 1.开通服务 云托管目前还属于beta阶段,使用云托管需要先发邮件申请开通该服务。可以参考官方文档开通。...

华为开发者联盟 2519

java毕设安卓课后托管服务管理系统app(开题+源码)

通过该系统,实现对学生信息、课程类型、教师资源、课程信息、课表信息等的有效管理,提供健康打卡功能以保障学生安全,设立托管班级模块以优化资源配置,并加强流程监督以确保服务质量。通过这一系列功能的实现,旨在提升课后托管服务的整体水平和用户体验,为托管机构和学生家长创造一个更加高效、便捷的沟通和服务平台。此外,该系统的开发还将推动相关技术的进步和应用,为课后托管服务行业的创新发展提供有力支持。然而,市场上的托管服务管理系统大多功能单一,缺乏全面性和系统性,无法满足托管机构和学生家长对于多样化、个性化服务的需求。

qh604的博客 1053
上一篇: Gerrit工作流程
下一篇: 服务器上的 Git - 在服务器上部署 Git
TopicDev
博客等级 码龄14年 128粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值