Skip to content

Instantly share code, notes, and snippets.

View twiceyuan's full-sized avatar

twiceYuan twiceyuan

View GitHub Profile
@twiceyuan
twiceyuan / build.gradle
Created March 28, 2019 17:17
[编译结束后声音通知] #Gradle
android {
applicationVariants.all { variant ->
def assembleTask
if (variant.hasProperty('assembleProvider')) {
assembleTask = variant.assembleProvider.get()
} else {
assembleTask = variant.assemble
}
assembleTask.doLast {
exec {
@twiceyuan
twiceyuan / note.md
Created March 12, 2019 16:20
[动态隐藏 App 图标] #Android
PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

想重新显示,设置 state 为 PackageManager.COMPONENT_ENABLED_STATE_ENABLED 就好了

@twiceyuan
twiceyuan / ClickRippleLayout.java
Created February 26, 2019 03:25
[全局水波纹 View] #Android #View
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Build;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.FrameLayout;
@twiceyuan
twiceyuan / note.md
Created January 16, 2019 09:52
[Gradle Kotlin DSL Implementation 过滤] #Gradle #Kotlin

根据 Build Type 或者 Flavor 来构建(替代之前 Groovy 版自动生成的函数)

fun DependencyHandlerScope.implementationWithFilter(
        flavor: String = "",
        buildType: String = "",
        dependency: Any
): Dependency? = when {
 flavor == "" && buildType == "" -> implementation(dependency)
@twiceyuan
twiceyuan / note.md
Created November 2, 2018 02:22
[iTerm 命令前或者命令后加字符快捷键] #macOS
  1. 在 Keys 里添加快捷键,选择 Send Hex Code
  2. 0x1 为跳转到目前输入命令的最前面,0x5 跳转到目前输入命令的最后
  3. 输入的命令可以用 xxd 获取。比如获取 sudo 的 hex code 可以用 echo -n 'sudo ' | xxd
 ~ echo -n 'sudo ' | xxd
00000000: 7375 646f 20                             sudo

这样最终的 hex code 就是 0x1(跳转最前) 0x73 0x75 0x64 0x6f 0x20('sudo '的 hex code) 0x5(跳转最后)

@twiceyuan
twiceyuan / note.md
Last active October 25, 2018 07:44
[Jenkins 构建开源 Android 项目配置] #Android #Jenkins

在开发 Android 项目时,为了自动化构建输出签名 APK 方便,通常会配置 signingConfigs 项来直接输出签名后的 APK。在构建开源项目时,证书文件一般不会上传到仓库,证书相关的配置也会存在被 ignore 的本地 properties 文件中。之前使用 Travis 构建开源项目时,使用的方式是仓库中存有一个加密的证书文件,通过在 Travis 控制台配置这个加密文件的密钥,以及其他必需的配置项来完成构建。在 Jenkins 里也是类似的方式不过更加方便一些。

首先,可以把证书文件直接上传到 Jenkins 里:

  1. 进入 Credentials - System - Global credentials (unrestricted) - Add Credentials,选择 Secret File,选择要上传的签名文件,ID 和 Description 按照需要给一个有含义的文本即可

  2. 同级下面,再通过 Add Credentials 添加一项,选择 Username and Password。Username 存储签名需要的 Alias,密码存储 Store Password 和 AliasPassword(这里我自己的约定是这样的,如果不相符可以建立更多的 credential 项)。

  3. 在构建项目下面,Build Environment 下面勾选 Use secret text(s) or file(s)Binding 下添加一个 Secret FileUsername and Password,分别对应 1、2 步添加的两项,绑定三个变量:KEY_PATHKEY_ALIASKEY_PASSWD

@twiceyuan
twiceyuan / .leptonrc
Created October 22, 2018 08:08 — forked from hackjutsu/.leptonrc
[Template for .leptonrc] This is a template for Lepton's configuration file. Please place it on your home directory. #lepton
{
"snippet": {
"expanded": true,
"newSnippetPrivate": false,
"sorting": "updated_at",
"sortingReverse": true
},
"editor" : {
"tabSize": 4
},
@twiceyuan
twiceyuan / note.md
Last active May 29, 2019 02:06
[macOS 下启动 http server] #macOS
  1. python(python3)

    cd www_root
    python -m http.server
    
  2. php

@twiceyuan
twiceyuan / note.md
Last active July 29, 2019 06:56
[Git Tag 生成 Android 版本号] 根据 Git Tag 的名字和数量决定 Android App 的版本名和版本号 #Android #Git
android {
    //...
    defaultConfig {
        //...
        versionCode getAppVersionCode()
        versionName getLastTagName()
        //...
    }
 //...
@twiceyuan
twiceyuan / note.md
Created August 1, 2018 08:12
[Jenkins 远程构建 403 问题] #Jenkin

在开启用户鉴权后使用 GitLab 的 WebHook 来触发 Jenkins 构建时,test 请求就会提示 403 鉴权错误,网上搜索了一波资料,大多都是提示修改一些安全设置或者开启匿名用户的 job read 权限。开启 job 的 read 权限后副作用是任何人都可以查看你在 jenkins server 上的构建任务,这对于位于公网上的 jenkins 实例无疑是不安全的,最后发现最佳的实践方式是通过 Jenkins 的 token 来完成鉴权并向 trigger 的 url 发送请求。步骤如下:

  1. 首先获取 Jenkins 用户的 Application ID 和 token。使用一个有效账户登录 Jenkins,然后在左侧边栏中进入 People,选择自己的账户,再点击右侧 Configure,在右部面板找到 API Token 这一栏,点击 Show API Token 即可查看当前用户的 Application ID 和 Token,同时也可以在这里重置 Token。
  2. 获取请求地址,在 Job 的 configure 界面,勾选 Build Triggers 下的 Trigger builds remotely,token 自己填写一个,然后得到地址 JENKINS_URL/job/JOB_NAME/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME
  3. 在需要继承系统的 WebHook 中填写该 URL,在 host 前面加上 [Application ID]:[Token]@,比如 https://myid:mytoken@myjenkins.com/job/myJobName/build?token=my_job_token