start new:
tmux
start new with session name:
tmux new -s myname
package com.oasisfeng.hack; | |
import android.support.annotation.CheckResult; | |
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; | |
import android.util.Log; | |
import java.io.IOException; | |
import java.lang.reflect.AccessibleObject; | |
import java.lang.reflect.Constructor; |
package io.github.lizhangqu.fresco; | |
import android.content.Context; | |
import android.graphics.ColorFilter; | |
import android.graphics.PointF; | |
import android.graphics.drawable.Drawable; | |
import android.graphics.drawable.StateListDrawable; | |
import android.net.Uri; | |
import android.view.MotionEvent; | |
import android.view.View; |
# for cmake | |
# c++11 | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | |
#debug or release | |
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") | |
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") | |
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -s") | |
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -s") | |
#if CMAKE_STATIC_LINKER_FLAGS_RELEASE or CMAKE_SHARED_LINKER_FLAGS_RELEASE not work use this | |
#if(CMAKE_BUILD_TYPE MATCHES Release) |
apply plugin: JavaFilterPlugin | |
class JavaFilterPlugin implements Plugin<Project> { | |
void apply(Project project) { | |
project.afterEvaluate { | |
if (project.file('filter.properties').exists()) { | |
def processResources = project.tasks.findByName("processResources") | |
processResources.configure { | |
from(processResources.source) { | |
filesMatching('*') { |
apply plugin: AndroidFilterPlugin | |
class AndroidFilterPlugin implements Plugin<Project> { | |
void apply(Project project) { | |
project.afterEvaluate { | |
if (project.plugins.hasPlugin("com.android.application")) { | |
def android = project.extensions.getByName("android") | |
android.applicationVariants.all { def variant -> | |
def variantData = variant.getVariantData() | |
def scope = variantData.scope |
subprojects { | |
configurations.all { | |
resolutionStrategy { | |
force 'com.android.support:multidex:1.0.2' | |
force 'com.android.support:multidex-instrumentation:1.0.2' | |
eachDependency { DependencyResolveDetails details -> | |
if (details.requested.group == 'com.android.support' | |
&& !details.requested.name.contains('multidex')) { | |
details.useVersion '25.3.1' | |
} |
#ifndef DIAGNOSTICS_H | |
#define DIAGNOSTICS_H | |
#include <jni.h> | |
#include <stdio.h> | |
#if !defined(DISALLOW_COPY_AND_ASSIGN) | |
// DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions. It goes in the private: | |
// declarations in a class. | |
#if __cplusplus >= 201103L |
import com.android.build.api.transform.Context | |
import com.android.build.api.transform.DirectoryInput | |
import com.android.build.api.transform.JarInput | |
import com.android.build.api.transform.QualifiedContent | |
import com.android.build.api.transform.SecondaryFile | |
import com.android.build.api.transform.Transform | |
import com.android.build.api.transform.TransformException | |
import com.android.build.api.transform.TransformInput | |
import com.android.build.api.transform.TransformInvocation | |
import com.android.build.api.transform.TransformOutputProvider |
import com.android.build.gradle.internal.ide.ArtifactDependencyGraph | |
import com.android.builder.model.Dependencies | |
import com.android.builder.model.SyncIssue | |
project.afterEvaluate { | |
project.android.applicationVariants.all { def variant -> | |
def variantData = variant.getMetaClass().getProperty(variant, 'variantData') | |
//方法一 | |
Dependencies dependencies = new ArtifactDependencyGraph().createDependencies(variantData.scope, false, new Consumer<SyncIssue>() { |