<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>子勰的博客</title>
    <link>https://blog.bihe0832.com</link>
    <description>屌丝程序猿，鸡血攻城狮；努力学技术，潜心做精品！</description>
    
      <item>
        <title>GPG 信息生成</title>
        <link>https://blog.bihe0832.com/gpg.html</link>
        <guid isPermaLink="true">https://blog.bihe0832.com/gpg.html</guid>
        <pubDate>Thu, 18 Sep 2025 00:00:00 +0800</pubDate>
        <description>&lt;p&gt;gpg用于签署上传的 jar 或 aar 文件，这里介绍如何使用 iMac 生成gpg秘钥对，并发布到第三方。&lt;/p&gt;

&lt;h2 id=&quot;安装-gpg&quot;&gt;安装 gpg&lt;/h2&gt;

&lt;p&gt;如果没有安装gpg，使用brew安装。&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜   brew install gpg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;生成秘钥对&quot;&gt;生成秘钥对&lt;/h2&gt;

&lt;p&gt;安装gpg后，使用命令&lt;code class=&quot;highlighter-rouge&quot;&gt;gpg --full-generate-key&lt;/code&gt; 生成秘钥对，依次输入：用户ID 和邮箱，然后选择Okay，然后输入密码，即可生成秘钥对&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜   gpg --full-generate-key
gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: directory '~/.gnupg' created
Please select what kind of key you want:
   (1) RSA and RSA
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (9) ECC (sign and encrypt) *default*
  (10) ECC (sign only)
  (14) Existing key from card
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      &amp;lt;n&amp;gt;  = key expires in n days
      &amp;lt;n&amp;gt;w = key expires in n weeks
      &amp;lt;n&amp;gt;m = key expires in n months
      &amp;lt;n&amp;gt;y = key expires in n years
Key is valid for? (0) 
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name:
Email address: 
Comment:
You selected this USER-ID:
	&quot;&quot;

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: ~/.gnupg/trustdb.gpg: trustdb created
gpg: directory '~/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '~/.gnupg/openpgp-revocs.d/.rev'
public and secret key created and signed.

pub   rsa4096 2025-09-18 [SC]
      
uid                      
sub   rsa4096 2025-09-18 [E]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;查看公钥id&quot;&gt;查看公钥Id&lt;/h2&gt;

&lt;p&gt;在秘钥生成以后，通过下面的命令查看公钥id&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜  ~ gpg --list-key --keyid-format short
[keyboxd]
---------
sec   rsa4096/E6A1AD98 2025-09-18 [SC] [expires: 2023-03-23]
      E153535XXXXXXXXXXXXXXXXX6A1AD98
uid         [ultimate] XXXXXXXXXX &amp;lt;XXXXXXXXXX&amp;gt;
ssb   rsa4096/7D71F5FD 2025-09-18 [E]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;pub rsa4096/E6A1AD98 2025-09-18 [SC] [expires: 2023-03-23] 里面，rsa4096后面的E6A1AD98就是公钥Id&lt;/p&gt;

&lt;h2 id=&quot;展示公钥&quot;&gt;展示公钥&lt;/h2&gt;

&lt;p&gt;如果需要把公钥提交到某些系统，可以采用下面的方法查看秘钥对应的公钥值：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜  .gnupg gpg --armor --export E6A1AD98
-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;发布公钥&quot;&gt;发布公钥&lt;/h2&gt;

&lt;p&gt;上传公钥Id到公网，为了方便后续访问，我同时上传了多个公网：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜   gpg --keyserver hkp://keyserver.ubuntu.com --send-keys E6A1AD98
gpg: sending key 08587B8CE6A1AD98 to hkp://keyserver.ubuntu.com
➜   gpg --keyserver hkp://keys.gnupg.net --send-keys E6A1AD98
gpg: sending key 08587B8CE6A1AD98 to hkp://hkps.pool.sks-keyservers.net
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;生成撤销证书&quot;&gt;生成撤销证书&lt;/h2&gt;

&lt;p&gt;如果公钥对外发布了，最好再生成一张”撤销证书”，以备以后密钥作废时，可以请求外部的公钥服务器撤销你的公钥&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜  .gnupg gpg --gen-revoke E6A1AD98

sec  rsa4096/E6A1AD98 2025-09-18 

Create a revocation certificate for this key? (y/N) y
Please select the reason for the revocation:
  0 = No reason specified
  1 = Key has been compromised
  2 = Key is superseded
  3 = Key is no longer used
  Q = Cancel
(Probably you want to select 1 here)
Your decision? 
Enter an optional description; end it with an empty line:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;生成的撤销证书要保存好。&lt;/p&gt;

&lt;h2 id=&quot;生成密钥文件&quot;&gt;生成密钥文件&lt;/h2&gt;

&lt;p&gt;如果有些场景需要生产秘钥文件，可以执行命令生成本地的加密私钥文件。&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;➜   gpg --export-secret-keys  -o ~/.gnupg/secring.kbx	
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;配置gpg信息&quot;&gt;配置gpg信息&lt;/h2&gt;

&lt;p&gt;对于Android 项目，如果发布到Maven，需要在gradle 脚本增加配置，在项目根目录的 &lt;code class=&quot;highlighter-rouge&quot;&gt;gradle.properties&lt;/code&gt; 添加gpg的配置信息，其中&lt;code class=&quot;highlighter-rouge&quot;&gt;signing.secretKeyRingFile &lt;/code&gt; 的值为上一步生成的私钥文件的绝对路径。例如：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# gpg信息
signing.keyId=E6A1AD98
signing.password=XXXXXX
signing.secretKeyRingFile=~/.gnupg/secring.kbx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

</description>
      </item>
    
      <item>
        <title>ADB快捷输入法 - AAF</title>
        <link>https://blog.bihe0832.com/input.html</link>
        <guid isPermaLink="true">https://blog.bihe0832.com/input.html</guid>
        <pubDate>Mon, 27 Feb 2023 00:00:00 +0800</pubDate>
        <description>&lt;h2 id=&quot;adb快捷输入法&quot;&gt;ADB快捷输入法&lt;/h2&gt;

&lt;p&gt;关于 ADB 快捷输入法的详细使用方法及下载方法等，可以前往&lt;a href=&quot;https://android.bihe0832.com/doc/summary/samples.html#adb-%E5%BF%AB%E6%8D%B7%E8%BE%93%E5%85%A5&quot;&gt;https://android.bihe0832.com/doc/summary/samples.html#adb-%E5%BF%AB%E6%8D%B7%E8%BE%93%E5%85%A5&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;应用简介&quot;&gt;应用简介&lt;/h3&gt;

&lt;p&gt;一款基于ADB的，可以通过电脑快速输入中文等信息的快捷输入法，主要解决ADB命令无法输入中文的问题&lt;/p&gt;

&lt;p&gt;更多信息可以点击链接：&lt;a href=&quot;https://android.bihe0832.com/doc/summary/samples.html&quot;&gt;https://android.bihe0832.com/doc/summary/samples.html&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;应用截图&quot;&gt;应用截图&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://android.bihe0832.com/doc/summary/input.png&quot; width=&quot;40%&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;应用下载&quot;&gt;应用下载&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://android.bihe0832.com/app/release/ZINPUT_official.apk&quot;&gt;点击下载到本地&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://api.qrserver.com/v1/create-qr-code/?size=120x120&amp;amp;data=https://android.bihe0832.com/app/release/ZINPUT_official.apk&quot; alt=&quot;扫码下载&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;输入方法&quot;&gt;输入方法&lt;/h3&gt;

&lt;p&gt;详细快捷输入命令事例可以参考：&lt;a href=&quot;https://github.com/bihe0832/Settings-Tools/blob/master/config/mac/.zshrc&quot;&gt;https://github.com/bihe0832/Settings-Tools/blob/master/config/mac/.zshrc&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;简单文本输入：主要用于简单的中文输入，一次即可完成输入&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;adb shell am broadcast -a ZIXIE_ADB_INPUT_TEXT --es msg DATA&lt;/code&gt;&lt;/p&gt;

    &lt;p&gt;其中DATA就是你要输入的内容&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;复杂文本输入：主要对于有特殊符号等的文本输入，要先输入命令，再输入内容&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;echo &quot;请输入你要通过 ADB 输入内容的原文&quot; &amp;amp;&amp;amp; read input &amp;amp;&amp;amp; content=$( base64 &amp;lt;&amp;lt;&amp;lt; $input ) &amp;amp;&amp;amp; adb shell am broadcast -a ZIXIE_ADB_INPUT_BASE64 --es msg $content&lt;/code&gt;&lt;/p&gt;

    &lt;p&gt;命令结束后输入原文，自动完成转码和输入&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;自动发送：&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;adb shell input keyevent 66&lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;shell 切换到当前输入法&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  fun zixieadbinputchangetozixieinput(){
      # 获取当前输入法包名
      current_ime=$(adb shell settings get secure default_input_method | tr -d '\r')
      echo &quot;$current_ime&quot;
	
      # 判断输入法是否为指定的包名
      if [[ &quot;$current_ime&quot; != &quot;com.bihe0832.adb.input/com.bihe0832.android.base.adb.input.ZixieIME&quot; ]]; then
          echo &quot;$current_ime&quot;
          adb shell ime set com.bihe0832.adb.input/com.bihe0832.android.base.adb.input.ZixieIME &amp;amp;&amp;amp; sleep 2
      fi
  }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;相关文章&quot;&gt;相关文章&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ADB命令系列之 Base Command：&lt;a href=&quot;https://blog.bihe0832.com/adb-base.html&quot;&gt;https://blog.bihe0832.com/adb-base.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;重点介绍一些基本的adb命令，例如devices，start-server，kill-server，install，uninstall，push，pull，bugreport，logcat等。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ADB命令系列之  Advanced Command：&lt;a href=&quot;https://blog.bihe0832.com/adb-advanced.html&quot;&gt;https://blog.bihe0832.com/adb-advanced.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;重点介绍一些相对比较复杂的adb命令，主要是adb shell 相关的。例如screencap，monkey，getprop，setprop，pm，am，dumpsys等。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ADB命令系列之 adb shell input：&lt;a href=&quot;https://blog.bihe0832.com/adb-shell-input.html&quot;&gt;https://blog.bihe0832.com/adb-shell-input.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;重点介绍adb shell input的用法，包括怎么输入内容，怎么模拟按键，模拟屏幕滑动等各种输入模拟。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ADB命令系列之 再说ADB：&lt;a href=&quot;https://blog.bihe0832.com/review_adb.html&quot;&gt;https://blog.bihe0832.com/review_adb.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;重点结合使用场景介绍ADB 的使用，例如解锁手机、截屏、Monkey点击、获取厂商机型等&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ADB命令系列之 ADB快捷输入法：&lt;a href=&quot;https://blog.bihe0832.com/input.html&quot;&gt;https://blog.bihe0832.com/input.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;主要解决 ADB hell input 无法输入中文的问题&lt;/p&gt;
</description>
      </item>
    
      <item>
        <title>Linux JDK 安装、卸载、路径查看</title>
        <link>https://blog.bihe0832.com/linux_java.html</link>
        <guid isPermaLink="true">https://blog.bihe0832.com/linux_java.html</guid>
        <pubDate>Wed, 07 Sep 2022 00:00:00 +0800</pubDate>
        <description>&lt;p&gt;最近因为升级Androidx以及对应的AGP版本，需要同步升级构建机的 JDK 版本，整理过程中发现很多知识点都记得不太清了，再整理记录一下。&lt;/p&gt;

&lt;h3 id=&quot;查找安装的rpm包有哪些&quot;&gt;查找安装的rpm包有哪些&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;命令：&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;rpm -qa | grep jdk&lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;事例：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  ➜  ~  rpm -qa | grep jdk
	
  java-1.8.0-openjdk-devel-1.8.0.342.b07-1.el7_9.x86_64
  copy-jdk-configs-3.3-10.el7_5.noarch
  java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64
  java-1.8.0-openjdk-headless-1.8.0.342.b07-1.el7_9.x86_64
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;卸载原有jdk&quot;&gt;卸载原有JDK&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;命令：&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;rpm -e 包名&lt;/code&gt; 或者 &lt;code class=&quot;highlighter-rouge&quot;&gt;yum remove包名&lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;事例：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  ➜  ~  rpm -e java-1.8.0-openjdk-devel-1.8.0.342.b07-1.el7_9.x86_64
  ➜  ~  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;安装-jdk&quot;&gt;安装 JDK&lt;/h3&gt;

&lt;p&gt;由于腾讯云的机器已经有yum，因此直接使用yum安装jdk&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;命令：&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;yum install java-1.8.0-openjdk-devel.x86_64&lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;事例：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  ➜  AndroidAppFactory git:(master) ✗ yum install java-1.8.0-openjdk-devel.x86_64
  Loaded plugins: fastestmirror, langpacks
  Repository epel is listed more than once in the configuration
  Repository nodesource is listed more than once in the configuration
  Repository nodesource-source is listed more than once in the configuration
  Loading mirror speeds from cached hostfile
   * remi-safe: mirrors.tuna.tsinghua.edu.cn
        
           ……

  ➜  AndroidAppFactory git:(master) ✗ java -version
  openjdk version &quot;1.8.0_242&quot;
  OpenJDK Runtime Environment (build 1.8.0_242-b08)
  OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;寻找jdk-安装目录&quot;&gt;寻找JDK 安装目录&lt;/h3&gt;

&lt;h4 id=&quot;which-java-找到&quot;&gt;which java 找到&lt;/h4&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;which java&lt;/code&gt; 定位到的是java程序的执行路径，通过不停的回源，最终就能找到。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;命令：&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;java -version&lt;/code&gt; &amp;amp; &lt;code class=&quot;highlighter-rouge&quot;&gt;ls -lrt &lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;事例：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  ➜  ~  java -version
  openjdk version &quot;1.8.0_342&quot;
  OpenJDK Runtime Environment (build 1.8.0_342-b07)
  OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
  ➜  ~  which java
  /usr/bin/java
  ➜  ~  ls -lrt /usr/bin/java
  lrwxrwxrwx 1 root root 22 Sep  7 14:44 /usr/bin/java -&amp;gt; /etc/alternatives/java
  ➜  ~  ls -lrt /etc/alternatives/java
  lrwxrwxrwx 1 root root 73 Sep  7 14:44 /etc/alternatives/java -&amp;gt; /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/java
  ➜  ~  cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64
  ➜  java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64  ls
  ASSEMBLY_EXCEPTION  bin  include  jre  lib  LICENSE  tapset  THIRD_PARTY_README
  ➜  java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;rpm--ql-找到&quot;&gt;rpm -ql 找到&lt;/h3&gt;

&lt;p&gt;如果是通过yum 安装，还可以用这种方式&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;命令：&lt;/p&gt;

    &lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;rpm -qa&lt;/code&gt; &amp;amp; ` rpm -ql`&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;事例：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;  ➜  ~  java -version
  openjdk version &quot;1.8.0_342&quot;
  OpenJDK Runtime Environment (build 1.8.0_342-b07)
  OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
  ➜  ~  rpm -qa | grep java
  javapackages-tools-3.4.1-11.el7.noarch
  tzdata-java-2022c-1.el7.noarch
  python-javapackages-3.4.1-11.el7.noarch
  java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64
  java-1.8.0-openjdk-devel-1.8.0.342.b07-1.el7_9.x86_64
  java-1.8.0-openjdk-headless-1.8.0.342.b07-1.el7_9.x86_64
  ➜  ~  rpm -ql java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64 | head
  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/policytool
  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libawt_xawt.so
  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjawt.so
  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjsoundalsa.so
  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libsplashscreen.so
  /usr/share/applications/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64-policytool.desktop
  /usr/share/icons/hicolor/16x16/apps/java-1.8.0-openjdk.png
  /usr/share/icons/hicolor/24x24/apps/java-1.8.0-openjdk.png
  /usr/share/icons/hicolor/32x32/apps/java-1.8.0-openjdk.png
  /usr/share/icons/hicolor/48x48/apps/java-1.8.0-openjdk.png
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
      </item>
    
      <item>
        <title>开发中图片图标处理常用工具资源</title>
        <link>https://blog.bihe0832.com/my_image.html</link>
        <guid isPermaLink="true">https://blog.bihe0832.com/my_image.html</guid>
        <pubDate>Tue, 10 Aug 2021 00:00:00 +0800</pubDate>
        <description>&lt;p&gt;这里简单汇总一下个人常用的一些简单的图片图标开发相关资源的地址以及功能，方便检索。&lt;/p&gt;

&lt;h3 id=&quot;图标icon-制作&quot;&gt;图标、Icon 制作&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Android Asset Studio&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：Android Asset Studio 是一个在线制作工具，它可以制作Iocn，ActionBar，点9 图等等，简单操作，而且按照Google Play 规范生成&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;http://romannurik.github.io/AndroidAssetStudio/index.html&quot;&gt;http://romannurik.github.io/AndroidAssetStudio/index.html&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;蒲公英&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：根据文字、图片、生成APP Icon。&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://www.pgyer.com/tools/appIcon&quot;&gt;https://www.pgyer.com/tools/appIcon&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;iconfont&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：各种常见业务 Icon，支持SVG等形式。&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://www.iconfont.cn&quot;&gt;https://www.iconfont.cn&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Material Icons&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：Material Icons&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://material.io/icons/&quot;&gt;https://material.io/icons/&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Shields.io&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：专为开源项目设计的在Github、文档等场景展示项目各种信息的工具库&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://img.shields.io/&quot;&gt;https://img.shields.io/&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;favicon&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：根据上传的图标，生成网站的 favicon&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://tool.lu/favicon/&quot;&gt;https://tool.lu/favicon/&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;类-pubhorn-logo-制作&quot;&gt;类 pubhorn Logo 制作&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Logo制作&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：制作类似pubhorn 的Icon&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://cdn.bihe0832.com/tools/logo/index.html&quot;&gt;https://cdn.bihe0832.com/tools/logo/index.html&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;公众号头图及图片压缩&quot;&gt;公众号头图及图片压缩&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;稿定设计&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：制作公众号头图等的模板、图片的压缩裁剪等&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://www.gaoding.com/design/image&quot;&gt;https://www.gaoding.com/design/image&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;可画&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;简单介绍：制作公众号头图等的模板&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;对应链接：&lt;a href=&quot;https://www.canva.cn/&quot;&gt;https://www.canva.cn/&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ascii字符画&quot;&gt;Ascii字符画&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;根据文字生成字符画：&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;a href=&quot;https://patorjk.com/software/taag&quot;&gt;https://patorjk.com/software/taag&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;a href=&quot;https://www.network-science.de/ascii/&quot;&gt;https://www.network-science.de/ascii/&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;根据图片生成字符画：&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;a href=&quot;https://www.degraeve.com/img2txt.php&quot;&gt;https://www.degraeve.com/img2txt.php&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;a href=&quot;https://life.chacuo.net/convertphoto2char&quot;&gt;https://life.chacuo.net/convertphoto2char&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;根据流程图生成字符画：&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://asciiflow.com/&quot;&gt;https://asciiflow.com/&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

</description>
      </item>
    
      <item>
        <title>替换Jcenter，发布开源代码到 Sonatype Maven Central</title>
        <link>https://blog.bihe0832.com/oss-sonatype.html</link>
        <guid isPermaLink="true">https://blog.bihe0832.com/oss-sonatype.html</guid>
        <pubDate>Thu, 25 Mar 2021 00:00:00 +0800</pubDate>
        <description>&lt;p&gt;在平时的开发中，经常会写一些通用的代码，为了方便自己后续使用，也为了方便更多的人，大都会选择发布到github或者jcenter等一些开源库。之前一直是使用jcenter，结果活久见，前几天发布的时候登录，竟然看到了这：&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;./../public/images/jcenter/jcenter_die.png&quot; width=&quot;600px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;又红又粗必然是有大事，果然没想到他竟然要跑路了，核心内容就是：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;UPDATE: To better support the community in this migration, JFrog has extended the JCenter new package versions submission deadline through March 31st 2021.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;To clarify, the JCenter repository will keep serving packages for 12 months until February 1st 2022. Only the JCenter REST API and UI will be sunsetted on May 1st 2021.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;之前觉得发布到 Maven Central 太麻烦，没想到最终还是逃不掉，因此开始着手迁移到 Maven Central ，考虑到遇到的人应该不少，简单整理下。&lt;strong&gt;这篇文章从头开始介绍怎么把开源代码发布到Maven Central，并在项目中使用。包括注册账号，发布，发布后使用以及发布中一些常见的问题。&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;前期准备&quot;&gt;前期准备&lt;/h2&gt;

&lt;h3 id=&quot;开源项目&quot;&gt;开源项目&lt;/h3&gt;

&lt;p&gt;你需要有已经开源的项目，并且项目已经编译通过，可以发布。为了方便介绍，我选择通过自己的开源项目AAF来介绍。项目地址：&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bihe0832/AndroidAppFactory&quot;&gt;https://github.com/bihe0832/AndroidAppFactory&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;group-id&quot;&gt;Group Id&lt;/h3&gt;

&lt;p&gt;Jcenter对于 Group Id的归属没有强校验，Sonatype会要求你提供权属的真实性，例如使用：com.bihe0832.android；你需要证明你拥有  android.bihe0832.com 域名的所有权。怎么证明后面会介绍。&lt;/p&gt;

&lt;h2 id=&quot;注册-group-id&quot;&gt;注册 Group Id&lt;/h2&gt;

&lt;p&gt;我当时申请 android.bihe0832.com 的信息可以参考：&lt;a href=&quot;https://issues.sonatype.org/browse/OSSRH-66119&quot;&gt;https://issues.sonatype.org/browse/OSSRH-66119&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;官网地址&quot;&gt;官网地址：&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;issues.sonatype.org：&lt;a href=&quot;https://issues.sonatype.org/secure/Dashboard.jspa&quot;&gt;https://issues.sonatype.org/secure/Dashboard.jspa&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;这是一个基于 JIRA 的平台，如果没有账号，就注册一个，并不麻烦。&lt;strong&gt;注册成功之后，记下用户名和密码，后面还会用到&lt;/strong&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;注册-group-id-1&quot;&gt;注册 Group Id：&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;提交申请&lt;/p&gt;

    &lt;p&gt;登录以后，点击上面的链接，进入网页，按照下图的指引，点击新建，只需要填写概要以下的信息即可，基本上主要是项目主页，项目源码和要注册的Group Id。&lt;/p&gt;

    &lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;./../public/images/jcenter/sonatype_new.png&quot; width=&quot;600px&quot; /&gt;&lt;/p&gt;

    &lt;p&gt;如果后续有信息需要修改，比如要修改Group Id，改完之后点击工单上方的“response”按钮，以通知平台已修改完毕。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;验证域名的有效性&lt;/p&gt;

    &lt;p&gt;当申请提交以后，很快就会有官网账号，回复你，提醒你验证域名的有效性，例如：&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Do you own the domain bihe0832.com? If so, please verify ownership via one of the following methods:&lt;/p&gt;

      &lt;ul&gt;
        &lt;li&gt;Add a TXT record to your DNS referencing this JIRA ticket: OSSRH-66119 (Fastest)&lt;/li&gt;
        &lt;li&gt;Setup a redirect to your Github page (if it does not already exist) You can find more information here: https://central.sonatype.org/pages/producers.html&lt;/li&gt;
      &lt;/ul&gt;

      &lt;p&gt;If you do not own this domain, please read:
http://central.sonatype.org/pages/choosing-your-coordinates.html
You may also choose a groupId that reflects your project hosting, in this case, something like io.github.bihe0832 or com.github.bihe0832&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;p&gt;这个操作也很简单，去你的域名解析规则里面增加一条指向 https://issues.sonatype.org/browse/OSSRH-66119 的 TXT 记录即可，例如：将 android.bihe0832.com	的 TXT 配置为 https://issues.sonatype.org/browse/OSSRH-66119&lt;/p&gt;

    &lt;p&gt;配置成功以后可以使用 dig 命令验证。例如：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; dig -t TXT android.bihe0832.com
	
 ; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.10.6 &amp;lt;&amp;lt;&amp;gt;&amp;gt; -t TXT android.bihe0832.com
 ;; global options: +cmd
 ;; Got answer:
 ;; &amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt; opcode: QUERY, status: NOERROR, id: 30392
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
	
 ;; OPT PSEUDOSECTION:
 ; EDNS: version: 0, flags:; udp: 4000
 ;; QUESTION SECTION:
 ;android.bihe0832.com. IN TXT
	
 ;; ANSWER SECTION:
 android.bihe0832.com. 600 IN TXT &quot;https://issues.sonatype.org/browse/OSSRH-66119&quot;
	
 ;; Query time: 73 msec
 ;; SERVER: 10.11.56.23#53(10.11.56.23)
 ;; WHEN: Tue Mar 23 17:43:08 CST 2021
 ;; MSG SIZE rcvd: 108
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;

    &lt;p&gt;当验证没有问题，就可以直接回复已完成，当官方验证没有问题，就会进入下一步&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;增加Jcenter 同步&lt;/p&gt;

    &lt;p&gt;这一步个人认为可以放弃，在域名验证没有问题以后，收到官网的回复：&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Are you migrating from Jcenter? If so please create the empty repository in Bintray https://bintray.com/bihe0832/OSSRH-66119 as proof of ownership.&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;p&gt;最开始有打算把 Jcenter 的代码也同步过来，因此就根据提示，前往 Jcenter 新建了名为OSSRH-66119 的 repository，后来发现Jcenter都要跑路了，其实这一步可以不做的。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;发放Group Id&lt;/p&gt;

    &lt;p&gt;当上面的工作做完以后，继续回复issue，官网验证结束以后，就会收到下面的信息，并且开通对应仓库的权限：&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;com.bihe0832.android has been prepared, now user(s) bihe0832 can:
Publish snapshot and release artifacts to https://s01.oss.sonatype.org
Have a look at this section of our official guide for deployment instructions:
https://central.sonatype.org/pages/ossrh-guide.html#deployment&lt;/p&gt;

      &lt;p&gt;Please comment on this ticket when you’ve released your first component(s), so we can activate the sync to Maven Central.
Depending on your build configuration, this might happen automatically. If not, you can follow the steps in this section of our guide:
https://central.sonatype.org/pages/releasing-the-deployment.html&lt;/p&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;至此，第一步，账号及Group Id就算申请通过了。&lt;/p&gt;

&lt;h2 id=&quot;提交代码到-sonatype-maven-central&quot;&gt;提交代码到 Sonatype Maven Central&lt;/h2&gt;

&lt;h3 id=&quot;配置gpg信息&quot;&gt;配置gpg信息&lt;/h3&gt;

&lt;p&gt;配置并发布GPG信息，关于GPG信息的生成，可以参考文章：&lt;a href=&quot;https://blog.bihe0832.com/gpg.html&quot;&gt;https://blog.bihe0832.com/gpg.html&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;配置账号信息&quot;&gt;配置账号信息&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;获取Token&lt;/p&gt;

    &lt;p&gt;打开 &lt;a href=&quot;https://s01.oss.sonatype.org&quot;&gt;https://s01.oss.sonatype.org&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;使用注册 Group Id是注册的sonatype 的账号和密码登录，按照下图的步骤，获取Token&lt;/p&gt;

    &lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;./../public/images/jcenter/sonatype_token.png&quot; width=&quot;600px&quot; /&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;配置Token信息&lt;/p&gt;

    &lt;p&gt;在项目根目录的 &lt;code class=&quot;highlighter-rouge&quot;&gt;gradle.properties&lt;/code&gt; 添加nexus Token的配置信息。例如：&lt;/p&gt;

    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; # nexus账号信息，也就是创建工单时的账号和密码
 NEXUS_USERNAME=GTXXXXXEt
 NEXUS_PASSWORD=xjXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXaqJG
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;

    &lt;p&gt;你也阔以不操作第一步，直接在这里配置你的 sonatype 的登录账号和密码&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;添加发布脚本&quot;&gt;添加发布脚本&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;配置发布信息&lt;/p&gt;

    &lt;p&gt;添加开源项目的基本信息，上传脚本可以参考  &lt;a href=&quot;https://github.com/bihe0832/AndroidAppFactory/build_aar.gradle&quot;&gt;https://github.com/bihe0832/AndroidAppFactory/build_aar.gradle&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;引入发布脚本&lt;/p&gt;

    &lt;p&gt;在需要发布的 Library 的 build.gradle 里面引入 build_aar.gradle即可，例如 AndroidAppFactory 的Framework ，对于Java 类型的 Library， 参考 AndroidAppFactory 的 RouterCompiler 的 build.gradle，还需要添加额外的几个Task&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;发布代码到-sonatype&quot;&gt;发布代码到 sonatype&lt;/h3&gt;

&lt;p&gt;在项目根目录运行命令，上传二进制包。例如：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;./gradlew clean :Framework:uploadArchives
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;即可将二进制包发布到 sonatype&lt;/p&gt;

&lt;h2 id=&quot;同步代码到--maven-central&quot;&gt;同步代码到  Maven Central&lt;/h2&gt;

&lt;h3 id=&quot;信息确认&quot;&gt;信息确认&lt;/h3&gt;

&lt;p&gt;打开 &lt;a href=&quot;https://s01.oss.sonatype.org&quot;&gt;https://s01.oss.sonatype.org&lt;/a&gt; 使用注册 Group Id是注册的sonatype 的账号和密码登录，按照下图的步骤，查看刚才新上传的代码&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;./../public/images/jcenter/sonatype_upload.png&quot; width=&quot;600px&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;同步到-maven-central&quot;&gt;同步到 Maven Central&lt;/h3&gt;

&lt;p&gt;如果确认Content的信息正确，勾选点击上方的Close，提交申请&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;./../public/images/jcenter/sonatype_request.png&quot; width=&quot;600px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;然后刷新页面，就可以在Activity查看信息审核的进度，如果失败了，这里会提示哪一步出错了，以及出错原因，根据原因解决问题，删了有问题版本，再次提交申请，如果审核通过了，上面的Release按钮会变为可点击，点击即可同步到中央仓库&lt;/p&gt;

&lt;p&gt;当提交到中央仓库以后：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Central sync is activated for com.bihe0832.android. After you successfully release, your component will be published to Central https://repo1.maven.org/maven2/, typically within 10 minutes, though updates to https://search.maven.org can take up to two hours.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;使用项目&quot;&gt;使用项目&lt;/h2&gt;

&lt;p&gt;此时其实我们的项目已经可以在代码中使用，在根目录添加开源库仓库的相关依赖：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;buildscript {  
    repositories {  
        maven { url &quot;https://s01.oss.sonatype.org/content/groups/public&quot; }

    }  
}   

allprojects {  
    repositories {  
        maven { url &quot;https://s01.oss.sonatype.org/content/groups/public&quot; }

    }  
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;在对应项目添加依赖，具体的依赖方法可以参考上图左下角：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;compile 'com.bihe0832.test:utils-demo:1.0.0'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;在同步10分钟左右，我们就可以通过 mavenCentral 引用了&lt;/p&gt;

&lt;h2 id=&quot;常见问题&quot;&gt;常见问题：&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;提交代码报错，提示：failed to deploy artifacts: could not transfer artifact return code is: 401, reasonphrase: unauthorized.&lt;/p&gt;

    &lt;p&gt;请检查根目录build.gradle 里面配置用户名和API Key是否正确，一般是因为这个原因。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

</description>
      </item>
    
  </channel>
</rss>
