From 6a8db5d3b3f4bb4fcb8a5bb0511cd7242ebee75d Mon Sep 17 00:00:00 2001 From: Yik Teng Hie Date: Thu, 26 Aug 2021 11:10:28 +0800 Subject: [PATCH] RzGold local dev setup --- RzGold/README.md | 68 ++++++++++++++++++++++++++++++++++++++++ RzGold/ssl/zgdwild.chain | 67 +++++++++++++++++++++++++++++++++++++++ RzGold/ssl/zgdwild.key | 28 +++++++++++++++++ RzGold/ssl/zgdwild.pem | 36 +++++++++++++++++++++ jenkins/mobile-build.md | 64 ++++++++++++++++++++++++++++++++++++- ubuntu/misc.md | 20 ++++++++++++ 6 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 RzGold/README.md create mode 100644 RzGold/ssl/zgdwild.chain create mode 100644 RzGold/ssl/zgdwild.key create mode 100644 RzGold/ssl/zgdwild.pem create mode 100644 ubuntu/misc.md diff --git a/RzGold/README.md b/RzGold/README.md new file mode 100644 index 0000000..dcbf677 --- /dev/null +++ b/RzGold/README.md @@ -0,0 +1,68 @@ +# Local environment Setup + +* Postman JSON for API [Link](https://razermis.sharepoint.com/:f:/s/RazerGoldKM-Engineering/Elm1CcUhDy5Bi8DnqkrfjFcBhTlxw1659hAJVTdhBxqSxw?e=8PxaYZ) + +* [Engineering Doc](https://razermis.sharepoint.com/:f:/s/RazerGoldKM-Engineering/EjcLZaXu9ZhLtqeJgUQxeF8Bn2jGEe8l5UOOKiTPT8iXWQ?e=ZnCFbc) + +* Visual Studio Code + +* NodeJS + +* FortiClient VPN access to connec to dev server + +* Create Razer Dev Account + + * https://dweb.zgold-dev.razer.com/ + +* SSL cert files under `C:\etc\ssl\nodejs` + + * [`zgdwild.chain`](./ssl/zgdwild.chain) + * [`zgdwild.key`](./ssl/zgdwild.key) + * [`zgdwild.pem`](./ssl/zgdwild.pem) + +* host file `C:\Windows\System32\drivers\etc\hosts` + + * ```text + 127.0.0.1 www.zgold-dev.razer.com + ``` + + + +* Start BE server. BE server also serve FE at port 443 `./dist` + + * `npm start` + +* Start FE server to proxy from `https://www.zgold-dev.razer.com:7888/api` to `https://localhost/api` + + * `npm run serve` to serve FE webpack + + * Hot Reload editing here + + * proxy setup in `webpack.dev.js` + + ```json + devServer: { + allowedHosts: [ + 'media.zvault.razerzone.com', + 'media.gold.razer.com' + ], + contentBase: dist, + publicPath: '/', + open: true, + progress: true, + host: Environment.webpackHost, + port: Environment.webpackPort, + proxy: { + '/api': 'https://www.zgold-dev.razer.com' + }, + https: { + ca: fs.readFileSync(Environment.ssl.ca, 'utf8'), + key: fs.readFileSync(Environment.ssl.key, 'utf8'), + cert: fs.readFileSync(Environment.ssl.cert, 'utf8'), + spdy: { + protocols: ['http/1.1'] + } + }, + ``` + + \ No newline at end of file diff --git a/RzGold/ssl/zgdwild.chain b/RzGold/ssl/zgdwild.chain new file mode 100644 index 0000000..201269b --- /dev/null +++ b/RzGold/ssl/zgdwild.chain @@ -0,0 +1,67 @@ +-----BEGIN CERTIFICATE----- +MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx +MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV +BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE +ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g +VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N +TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj +eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E +oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk +Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY +uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j +BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb ++ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G +A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw +CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0 +LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr +BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv +bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov +L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H +ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH +7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi +H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx +RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv +xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38 +sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL +l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq +6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY +LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5 +yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K +00u/I5sUKUErmgQfky3xxzlIPK1aEn8= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7 +MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD +VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE +AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4 +MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5 +MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO +ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI +s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG +vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ +Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb +IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0 +tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E +xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV +icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5 +D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ +WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ +5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG +KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg +EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID +ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG +BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t +L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr +BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA +A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+ +rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+ +/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA +CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F +zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA +vGp4z7h/jnZymQyd/teRCBaho1+V +-----END CERTIFICATE----- \ No newline at end of file diff --git a/RzGold/ssl/zgdwild.key b/RzGold/ssl/zgdwild.key new file mode 100644 index 0000000..3b2ab5f --- /dev/null +++ b/RzGold/ssl/zgdwild.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDlpFNc6Umze6j +dajvLYy53UQ3/0fKBJwyUhLTfwETPkyDaQmJk18Zw6pPSGjEhSEhKE3V7nhXanQl +g/TZ2ZOiQ7HKN+L1oJvV+E1pn4GfWdw8v0bhSNhHIDU12wIq+kv6yGYtn15hXaBR +P754/4Av1HJ/2T1kASKNZMHWs1Qd8YoxeImypmvf7d7FEzJfRMDg25HOctjkCZBl +l3SHrVm3GJUG91czCwEg7ERH9q5/5xEwXIZHuOKQU1c5F60IAOte6VOQw1v+tjN5 +AX98pE0RrgrsIWBd7sRHf8IqWXzlH7VJNMXNgMmAjzFuGiymwSMoF+5+qXgciYIC +iblFeRqZAgMBAAECggEAG/IjiMGBU24RLuHc5W/Ir7XhzW54P3ExMC9x6S44ZRt9 +qzkS18lqyS+f4fwinBG5jhdIJ80O/M6FEecs0QO5iHHLsW0SzK3KFmSICxNzXeVl +Bnj+E6po3KDJeYx1XtasjISdtN8UiSzrfzBwcrFvC2Z7hbDwiJ1w5msDFz5AQpbE +hpH1pyTwJmmJBvotz6J8HWD/VdFyEgVkU3Q1Ps4GwDmLkdAtkQkA/iYf+3oRFNLr +1bBjbhrllrHltryULgIq0EwRHm01sIoRPGpkpnawO0/nDuZFGzetEhMuBfErsyDG +9zOjVjqC+GfiikhtoOAY9TvEF82P2Tj0tZLypzyJ0QKBgQDkmP0a1WAdCJP5ketj +2HUgMw8RbbjdyKJwX6JX62C+3souxtkVYlMu9jEUeKfRCipwsP+kSWhqPpC2ayM0 +9kbanuVzFwM0bGPcDHlBQ3cU0NXJf/4bOBP/4A+IGAB20sA0cKIrxczIj44RTD/g +lDf/Hy7BfcLVjzfoGd3Ivwup8wKBgQDbCJzHvWGqf5o2G8Z1kkkEvg/0N5ZxjZWJ +axiiDPRsFr1mfJkwZQrgFAJtjTOe1HAreJOjl8j80GhKLZPwLfxP484JFmSDDcpB +YC9q7RVqgHxVI5lfkjQ2Mdj8eWHWKocIVl56tBr7uNPFout341tFWghOQlv7fai0 +TbmaSy3gQwKBgQDa5NBAeJ+vTX58lUikdCo7qgi8tKc34B4Dot/OdnpOawGJZymJ ++3wR1PbMVnjDh4t6G1K/2vcb/UsPEmpFFaplP5AQ87FC6qN4m40kfFiz2wFMEL6f +C8TC2Kemtu0C2u3niQ8RATgFuMjeMXhdMTCpoA9igm0lmB19p/8iciXWFwKBgBmF +Q18yfbKz82/ihJkmVkOrMYivAWRxrr64L8KR59jAPYk3c1HkNAQv0KibDyyua/Nk +tS8WfGCYl84syVPux7s3O8ZrSYLLlIlRf7ThsuEZ32K8Jx6vlk3KORIRwoiFo/4g +shlx6sLxohshBHaPkw7dkqIrsTP4TDPV6o5DvDCpAoGAMNcHO4jNGnR6RNeCD7S+ +NqRL614I8Z++aG82qq+pVo6Ih061QVpdTNF0PyMzkx3CCZSTmx7KYWaoOXpZOOtP +0/wVRjnuc2QsR/HClLlXRvt2HnwVkFL6PUDatUK85fwJblybCNKAUCbmjpD8kZkn +ZYJFnLZ+qjRFYSSihIvNN8o= +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/RzGold/ssl/zgdwild.pem b/RzGold/ssl/zgdwild.pem new file mode 100644 index 0000000..04a12d7 --- /dev/null +++ b/RzGold/ssl/zgdwild.pem @@ -0,0 +1,36 @@ +-----BEGIN CERTIFICATE----- +MIIGSDCCBTCgAwIBAgIQNvVPCW/EyqvpoYtao/FszjANBgkqhkiG9w0BAQsFADCB +jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD +Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB +MB4XDTIwMDcxMzAwMDAwMFoXDTIyMDcxMzIzNTk1OVowIDEeMBwGA1UEAwwVKi56 +Z29sZC1kZXYucmF6ZXIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAw5aRTXOlJs3uo3Wo7y2Mud1EN/9HygScMlIS038BEz5Mg2kJiZNfGcOqT0ho +xIUhIShN1e54V2p0JYP02dmTokOxyjfi9aCb1fhNaZ+Bn1ncPL9G4UjYRyA1NdsC +KvpL+shmLZ9eYV2gUT++eP+AL9Ryf9k9ZAEijWTB1rNUHfGKMXiJsqZr3+3exRMy +X0TA4NuRznLY5AmQZZd0h61ZtxiVBvdXMwsBIOxER/auf+cRMFyGR7jikFNXORet +CADrXulTkMNb/rYzeQF/fKRNEa4K7CFgXe7ER3/CKll85R+1STTFzYDJgI8xbhos +psEjKBfufql4HImCAom5RXkamQIDAQABo4IDDDCCAwgwHwYDVR0jBBgwFoAUjYxe +xFStiuF36Zv5mwXhuAGNYeEwHQYDVR0OBBYEFG4pLwGOLKZXyCtdBbLm2T7rqp7F +MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF +BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB +BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB +BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl +Y3RpZ29SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsG +AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTA1BgNVHREELjAsghUqLnpn +b2xkLWRldi5yYXplci5jb22CE3pnb2xkLWRldi5yYXplci5jb20wggF+BgorBgEE +AdZ5AgQCBIIBbgSCAWoBaAB2AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw +/m1HAAABc0ZPWScAAAQDAEcwRQIhAMcBp8/gr79Locg4/eAPeO2LWE2XRVhioIdq +2tuQTIdNAiBQldo5aXkhOOGL0RWxd4ikeouGVHqtzXIhsyiE6CAu8wB2AN+lXqto +gk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABc0ZPWU8AAAQDAEcwRQIhAOCT +emtI8piqxk3aARs/KpqJuTWjOxAWAsEP0GRShdwMAiBkd74V6VifcGvxHFPbQkOM +xWr2HQD61UTAij9/W4gl1gB2AG9Tdqwx8DEZ2JkApFEV/3cVHBHZAsEAKQaNsgia +N9kTAAABc0ZPWSAAAAQDAEcwRQIhAJ37VwNKtR3/Vlr0WQT+LrgPP0AynZi+eSfn +tsVkl7fAAiAIvLWBupgNVNruXB+2wT4zFYJ9DTSjkQ+JmuzoiT374TANBgkqhkiG +9w0BAQsFAAOCAQEAROp7cdPIK/rK1fXlhsfvw6MNuvbni8zcsesaJ1lKfd7nbn8X +bh+L3aPLSuCy1RGRyZTdyfPgqzroWhR39vLsmpQ+cDoPsohmY0m6ngPAd6VMduIu +YfKoO3/zcXfjK5tdjpJHOU7MsPNnmnibGi6pxRUQYzN9iXFdL1ie7oU++JDKadE5 +KxcNEKGM40ZiCGxO0B/lrtFt/g4W4lTndIqYMbw0qBnj3zVGV1CzW9B1VMKCS1ry +MYVgIu1YItRFgoHT9rqYjwzEgDd938bAIFq7sPK06JBqH25/ENAtkawYEZnExnnE +Z7E0bNjTiDqoIHLoMTIgupliM/EIM1ETDCReuQ== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/jenkins/mobile-build.md b/jenkins/mobile-build.md index babfcb6..e88875e 100644 --- a/jenkins/mobile-build.md +++ b/jenkins/mobile-build.md @@ -14,6 +14,36 @@ +* snapd + + ```sh + $ sudo apt install snapd + + # this will change Java jdk to 11java + $ sudo apt install android-sdk + + + + /home/AccountName/Android/Sdk + + /usr/lib/android-sdk + + /Library/Android/sdk/ + + /Users/[USER]/Library/Android/sdk + + wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip + unzip commandlinetools-linux-6609375_latest.zip -d cmdline-tools + sudo mv cmdline-tools $ANDROID_HOME/ + export PATH=$ANDROID_HOME/cmdline-tools/tools/bin:$PATH + + sudo /usr/lib/android-sdk/cmdline-tools/tools/bin/sdkmanager --licenses + + $ sudo ./gradlew assembleRelease + ``` + + + * Android SDK ```sh @@ -81,7 +111,39 @@ ### Jenkins build * Once you have the source code in Jenkins, it’s time to build. If your project has a Gradle wrapper, that’s what you should use - * Task : `assembleDebug` + * Task : + + * `assembleDebug`: APK Debug build + * `assembleRelease` : APK release build + * `bundleRelease`: [Bundle APK release](https://developer.android.com/guide/app-bundle) Size Limit : 150MB + * [info](https://medium.com/androiddevelopers/building-your-first-app-bundle-bbcd228bf631) + + * [Signing bundle](https://medium.com/androiddevelopers/building-your-first-app-bundle-bbcd228bf631) + + * ```sh + $ jarsigner -keystore $pathToKeystore app-release.aab $keyAlias + ``` + + * ``` + In android studio, to generate signed bundle + Build => Generate Signed Bundle / APK + ``` + + * Flutter + + * `flutter build apk` will output to `./build\app\outputs\apk\release` + + * `flutter build appbundle` will generated a publishing format aab + + ```sh + # build\app\outputs\bundle\release\app-release.apk + $ flutter build apk + + # build\app\outputs\bundle\release\app-release.aab + $ flutter build appbundle + ``` + + ### Next diff --git a/ubuntu/misc.md b/ubuntu/misc.md new file mode 100644 index 0000000..9fc5e57 --- /dev/null +++ b/ubuntu/misc.md @@ -0,0 +1,20 @@ +# Misc + + + +```sh +$ cat cataline.out | grep -in 13-Aug-2021 +``` + + + +```sh + 1970 ip a + 1971 adduser tenghieyik + 1972 nano /etc/sudoers + 1973 passwd tenghieyik + 1975 passwd tenghieyik + 1976 clear + +``` +