Commit 178c6852 by 王涛55

apt

parent fca34e01
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<option value="$PROJECT_DIR$/business/app_common" /> <option value="$PROJECT_DIR$/business/app_common" />
<option value="$PROJECT_DIR$/business/app_login" /> <option value="$PROJECT_DIR$/business/app_login" />
<option value="$PROJECT_DIR$/business/app_passport" /> <option value="$PROJECT_DIR$/business/app_passport" />
<option value="$PROJECT_DIR$/business/app_test_1" />
<option value="$PROJECT_DIR$/function" /> <option value="$PROJECT_DIR$/function" />
<option value="$PROJECT_DIR$/function/lib_app_common" /> <option value="$PROJECT_DIR$/function/lib_app_common" />
<option value="$PROJECT_DIR$/function/lib_baidu_audiodect" /> <option value="$PROJECT_DIR$/function/lib_baidu_audiodect" />
...@@ -22,9 +23,9 @@ ...@@ -22,9 +23,9 @@
<option value="$PROJECT_DIR$/function/lib_common_ui" /> <option value="$PROJECT_DIR$/function/lib_common_ui" />
<option value="$PROJECT_DIR$/function/lib_data_drive" /> <option value="$PROJECT_DIR$/function/lib_data_drive" />
<option value="$PROJECT_DIR$/function/lib_network" /> <option value="$PROJECT_DIR$/function/lib_network" />
<option value="$PROJECT_DIR$/lib_router_annotation" />
<option value="$PROJECT_DIR$/router_annotation" />
<option value="$PROJECT_DIR$/router_api" /> <option value="$PROJECT_DIR$/router_api" />
<option value="$PROJECT_DIR$/router_compiler" />
<option value="$PROJECT_DIR$/zrouter-annotation" />
</set> </set>
</option> </option>
<option name="resolveModulePerSourceSet" value="false" /> <option name="resolveModulePerSourceSet" value="false" />
......
...@@ -79,7 +79,7 @@ android { ...@@ -79,7 +79,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
dexOptions { dexOptions {
......
...@@ -9,7 +9,7 @@ buildscript { ...@@ -9,7 +9,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath build_config.classpath_gradle classpath 'com.android.tools.build:gradle:3.1.2'
} }
} }
...@@ -18,7 +18,9 @@ allprojects { ...@@ -18,7 +18,9 @@ allprojects {
repositories { repositories {
google() google()
jcenter() jcenter()
maven {
url "https://maven.google.com"
}
maven {//For ali云推送 maven {//For ali云推送
url 'http://maven.aliyun.com/nexus/content/repositories/releases/' url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
} }
......
apply plugin: 'com.android.library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 29 compileSdkVersion build_config.compile_sdk
buildToolsVersion "29.0.0"
defaultConfig { defaultConfig {
minSdkVersion build_config.min_sdk minSdkVersion build_config.min_sdk
......
...@@ -42,7 +42,7 @@ android { ...@@ -42,7 +42,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
sourceSets { sourceSets {
......
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
buildToolsVersion "29.0.0"
defaultConfig {
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
package info.hook.com.router_compiler; package info.hook.com.app_test_1;
import android.content.Context; import android.content.Context;
...@@ -22,6 +22,6 @@ public class ExampleInstrumentedTest { ...@@ -22,6 +22,6 @@ public class ExampleInstrumentedTest {
// Context of the app under test. // Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext(); Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("info.hook.com.router_compiler.test", appContext.getPackageName()); assertEquals("info.hook.com.app_test_1.test", appContext.getPackageName());
} }
} }
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="info.hook.com.router_compiler" /> package="info.hook.com.app_test_1" />
<resources> <resources>
<string name="app_name">router_compiler</string> <string name="app_name">app_test_1</string>
</resources> </resources>
...@@ -35,7 +35,7 @@ android { ...@@ -35,7 +35,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
sourceSets { sourceSets {
......
...@@ -26,7 +26,7 @@ android { ...@@ -26,7 +26,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
......
...@@ -20,7 +20,7 @@ android { ...@@ -20,7 +20,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
......
...@@ -20,7 +20,7 @@ android { ...@@ -20,7 +20,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
dataBinding { dataBinding {
enabled = true enabled = true
......
...@@ -20,7 +20,7 @@ android { ...@@ -20,7 +20,7 @@ android {
compileOptions { compileOptions {
encoding = 'utf-8' encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
dexOptions { dexOptions {
......
#Wed Sep 18 17:16:33 CST 2019 #Thu Sep 26 19:46:40 CST 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
......
...@@ -2,7 +2,10 @@ apply plugin: 'java-library' ...@@ -2,7 +2,10 @@ apply plugin: 'java-library'
dependencies { dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.auto_service
implementation deps.javapoet
} }
sourceCompatibility = "7"
targetCompatibility = "7" sourceCompatibility = "1.8"
targetCompatibility = "1.8"
package com.hikcreate.router_annotion; package com.hikcreate.annotion;
import com.hikcreate.router_annotion.facade.model.RouteMeta;
import java.util.Map; import java.util.Map;
import com.hikcreate.annotion.facade.model.RouteMeta;
/** /**
* 路由 接口类 * 路由 接口类
* 路由的作用就是:注册Activity 或者 Fragment 或者 Provider * 路由的作用就是:注册Activity 或者 Fragment 或者 Provider
......
package com.hikcreate.router_annotion; package com.hikcreate.annotion;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
......
package com.hikcreate.router_annotion.facade.enums; package com.hikcreate.annotion.facade.enums;
/** /**
* 路由框架,支持ACTIVITY,FRAGMENT,PROVIDER 三种信息互通格式 * 路由框架,支持ACTIVITY,FRAGMENT,PROVIDER 三种信息互通格式
...@@ -9,7 +9,7 @@ public enum RouteType { ...@@ -9,7 +9,7 @@ public enum RouteType {
ACTIVITY("android.app.Activity"), ACTIVITY("android.app.Activity"),
FRAGMENT("android.app.Fragment"), FRAGMENT("android.app.Fragment"),
FRAGMENT_V4("android.support.v4.app.Fragment"), FRAGMENT_V4("android.support.v4.app.Fragment"),
PROVIDER("study.hank.com.api.facade.template.IProvider"), PROVIDER("com.hikcreate.module.IProvider"),
UNKNOWN("Unknown route type"); UNKNOWN("Unknown route type");
private String className;//提供一个全限定类名 private String className;//提供一个全限定类名
......
package com.hikcreate.router_annotion.facade.model; package com.hikcreate.annotion.facade.model;
import com.hikcreate.annotion.facade.enums.RouteType;
import com.hikcreate.router_annotion.facade.enums.RouteType;
/** /**
* 容器:封装路由目的地信息基类 * 容器:封装路由目的地信息基类
......
package com.hikcreate.router_compiler; package com.hikcreate.router_compiler;
import com.google.auto.service.AutoService; import com.google.auto.service.AutoService;
import com.hikcreate.annotion.RouterConst;
import com.hikcreate.annotion.ZRoute;
import com.hikcreate.annotion.facade.enums.RouteType;
import com.hikcreate.annotion.facade.model.RouteMeta;
import com.squareup.javapoet.ClassName; import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.JavaFile; import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.ParameterSpec; import com.squareup.javapoet.ParameterSpec;
import com.squareup.javapoet.ParameterizedTypeName; import com.squareup.javapoet.ParameterizedTypeName;
import com.squareup.javapoet.TypeSpec; import com.squareup.javapoet.TypeSpec;
import java.io.IOException; import java.io.IOException;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Filer; import javax.annotation.processing.Filer;
import javax.annotation.processing.ProcessingEnvironment; import javax.annotation.processing.ProcessingEnvironment;
...@@ -27,12 +29,10 @@ import javax.lang.model.type.TypeMirror; ...@@ -27,12 +29,10 @@ import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements; import javax.lang.model.util.Elements;
import javax.lang.model.util.Types; import javax.lang.model.util.Types;
//注册APT //注册APT
@AutoService(Processor.class) @AutoService(Processor.class)
//指定apt支持的java版本 //指定apt支持的java版本
@SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedSourceVersion(SourceVersion.RELEASE_8)
public class RouterProcessor extends AbstractProcessor { public class RouterProcessor extends AbstractProcessor {
//文件工具 //文件工具
......
...@@ -35,4 +35,5 @@ dependencies { ...@@ -35,4 +35,5 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.multidex implementation deps.multidex
implementation deps.rxandroid2 implementation deps.rxandroid2
api project(':router_annotation')
} }
apply plugin: 'com.android.library'
android {
defaultConfig {
minSdkVersion build_config.min_sdk
targetSdkVersion build_config.target_sdk
versionCode build_config.version_code
versionName build_config.version_name
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
compileSdkVersion build_config.compile_sdk
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
jumboMode = true
}
dataBinding {
enabled = true
}
lintOptions {
abortOnError false
}
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.auto_service
implementation deps.javapoet
api project(':zrouter-annotation')
}
task testCo {
println deps.auto_service
println deps.javapoet
}
include ':app', ':zrouter-annotation',':function:lib_common_ui', ':function:lib_data_drive', ':router_compiler', 'business:app_common', ':router_api',":function:lib_network", ':function:lib_app_common', ':business:app_passport', ':business:app_login', ':function:lib_baidu_audiodect',':buildsrc',":function:lib_baidu_facedect",":function:lib_baidu_textdect" include ':app',':function:lib_common_ui', ':function:lib_data_drive', ':router_annotation', ':business:app_test_1', ':business:app_common', ':router_api', ':lib_router_annotation',":function:lib_network", ':function:lib_app_common', ':business:app_passport', ':business:app_login', ':function:lib_baidu_audiodect',':buildsrc',":function:lib_baidu_facedect",":function:lib_baidu_textdect"
package study.hank.com.annotation;
import java.util.Map;
import study.hank.com.annotation.facade.model.RouteMeta;
/**
* 路由 接口类
* 路由的作用就是:注册Activity 或者 Fragment 或者 Provider
*/
public interface IRouterZ {
void onLoad(Map<String, RouteMeta> routes);
}
package study.hank.com.annotation;
/**
* 存放常量
*/
public class RouterConst {
public static final String GENERATION_PACKAGE_NAME = "com.hank.routers.comm";//自动生成文件的包名
public static final String SUPER_ROUTER_INTERFACE = IRouterZ.class.getName();//自动生成文件的父类全限定名
}
package study.hank.com.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface ZRoute {
String value();
}
package study.hank.com.annotation.facade.enums;
/**
* 路由框架,支持ACTIVITY,FRAGMENT,PROVIDER 三种信息互通格式
* <p>
* 现在既然有了三种格式的定义,那么,我在路由表注册的时候,就不用区分ACTIVITY,FRAGMENT,PROVIDER了,对这3种东西进行再次封装
*/
public enum RouteType {
ACTIVITY("android.app.Activity"),
FRAGMENT("android.app.Fragment"),
FRAGMENT_V4("android.support.v4.app.Fragment"),
PROVIDER("study.hank.com.api.facade.template.IProvider"),
UNKNOWN("Unknown route type");
private String className;//提供一个全限定类名
public String getClassName() {
return className;
}
RouteType(String className) {
this.className = className;
}
}
package study.hank.com.annotation.facade.model;
import study.hank.com.annotation.facade.enums.RouteType;
/**
* 容器:封装路由目的地信息基类
*/
public class RouteMeta {
protected RouteType routeType;//区分路由类型
protected Class destination;//之前map里面存的都是.class, 现在用一个字段来保存目的地class
protected String path;//路由标识符,唯一
public void setRouteType(RouteType routeType) {
this.routeType = routeType;
}
public void setDestination(Class destination) {
this.destination = destination;
}
public RouteType getRouteType() {
return routeType;
}
public Class<?> getDestination() {
return destination;
}
public String getPath() {
return path;
}
//先做一个Builder模式
public RouteMeta() {
}
public RouteMeta routeType(RouteType routeType) {
this.routeType = routeType;
return this;
}
public RouteMeta destination(Class destination) {
this.destination = destination;
return this;
}
public RouteMeta path(String path) {
this.path = path;
return this;
}
public static RouteMeta getInstance() {
return new RouteMeta();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment