Tools:
https://github.com/patrickfav/uber-apk-signer
https://github.com/iBotPeaches/Apktool
How:
apktool d app-release.apk -o extracted_apk
Tools:
https://github.com/patrickfav/uber-apk-signer
https://github.com/iBotPeaches/Apktool
How:
apktool d app-release.apk -o extracted_apk
import java.io.File | |
import java.util.regex.Pattern | |
import kotlin.system.exitProcess | |
fun findMatches(directory: File, pattern: Pattern, extensions: List<String>): Set<String> { | |
val result = mutableSetOf<String>() | |
directory.walkTopDown() | |
.filter { it.isFile && it.extension in extensions } |
These rules are adopted from the AngularJS commit conventions.
#!/bin/bash | |
adb wait-for-device | |
A=$(adb shell getprop sys.boot_completed | tr -d '\r') | |
while [ "$A" != "1" ]; do | |
sleep 2 | |
A=$(adb shell getprop sys.boot_completed | tr -d '\r') | |
done |
/*jshint node:true*/ | |
var fs = require('fs'), | |
http = require('http'), | |
path = require('path'), | |
port = 1338, | |
dir = '.'; | |
http.createServer(function (request, response) { | |
var filePath = path.join(dir, path.basename(request.url)); | |
if (path.extname(request.url) !== '.mp4' || !fs.existsSync(filePath)) return throw404(); |
apply plugin: 'maven-publish' | |
// https://developer.android.google.cn/studio/build/maven-publish-plugin | |
// Because the components are created only during the afterEvaluate phase, you must | |
// configure your publications using the afterEvaluate() lifecycle method. | |
afterEvaluate { | |
publishing { | |
publications { |
fun printCallerContextInfo(cb: () -> String, levelDepth : Int = 7) { | |
if (!BuildConfig.DEBUG) | |
return | |
val stackTrace = Thread.currentThread().stackTrace | |
var i = 0 | |
val builder = StringBuilder() | |
builder.append("${cb.invoke()} : ") | |
for (ste in stackTrace) { | |
i++ |
import android.util.Log; | |
import java.io.IOException; | |
import java.lang.reflect.Method; | |
import java.net.Socket; | |
import java.util.ArrayList; | |
import java.util.List; | |
import javax.net.ssl.SSLContext; | |
import javax.net.ssl.SSLSocket; |
// Copyright 2017, the Flutter project authors. Please see the AUTHORS file | |
// for details. All rights reserved. Use of this source code is governed by a | |
// BSD-style license that can be found in the LICENSE file. | |
import 'dart:async'; | |
import 'package:meta/meta.dart'; | |
import 'package:flutter/material.dart'; | |
import 'package:flutter/rendering.dart'; | |
/// A widget that ensures it is always visible when focused. |
import android.app.IntentService; | |
import android.app.Notification; | |
import android.app.NotificationChannel; | |
import android.app.NotificationManager; | |
import android.content.Intent; | |
import android.net.Uri; | |
import android.os.Build; | |
import android.os.Environment; | |
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; |