Commit 178c6852 by 王涛55

apt

parent fca34e01
......@@ -14,6 +14,7 @@
<option value="$PROJECT_DIR$/business/app_common" />
<option value="$PROJECT_DIR$/business/app_login" />
<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/lib_app_common" />
<option value="$PROJECT_DIR$/function/lib_baidu_audiodect" />
......@@ -22,9 +23,9 @@
<option value="$PROJECT_DIR$/function/lib_common_ui" />
<option value="$PROJECT_DIR$/function/lib_data_drive" />
<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_compiler" />
<option value="$PROJECT_DIR$/zrouter-annotation" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
......
......@@ -78,8 +78,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
......
......@@ -9,7 +9,7 @@ buildscript {
jcenter()
}
dependencies {
classpath build_config.classpath_gradle
classpath 'com.android.tools.build:gradle:3.1.2'
}
}
......@@ -18,7 +18,9 @@ allprojects {
repositories {
google()
jcenter()
maven {
url "https://maven.google.com"
}
maven {//For ali云推送
url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
}
......
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
buildToolsVersion "29.0.0"
compileSdkVersion build_config.compile_sdk
defaultConfig {
minSdkVersion build_config.min_sdk
......
......@@ -41,8 +41,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
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;
......@@ -22,6 +22,6 @@ public class ExampleInstrumentedTest {
// Context of the app under test.
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"
package="info.hook.com.router_compiler" />
package="info.hook.com.app_test_1" />
<resources>
<string name="app_name">router_compiler</string>
<string name="app_name">app_test_1</string>
</resources>
......@@ -34,8 +34,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
......
......@@ -25,8 +25,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
......
......@@ -19,8 +19,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
......
......@@ -19,8 +19,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dataBinding {
enabled = true
......
......@@ -19,8 +19,8 @@ android {
compileOptions {
encoding = 'utf-8'
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
......
#Wed Sep 18 17:16:33 CST 2019
#Thu Sep 26 19:46:40 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
......
......@@ -2,7 +2,10 @@ apply plugin: 'java-library'
dependencies {
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;
import com.hikcreate.router_annotion.facade.model.RouteMeta;
package com.hikcreate.annotion;
import java.util.Map;
import com.hikcreate.annotion.facade.model.RouteMeta;
/**
* 路由 接口类
* 路由的作用就是:注册Activity 或者 Fragment 或者 Provider
......
package com.hikcreate.router_annotion;
package com.hikcreate.annotion;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
......
package com.hikcreate.router_annotion.facade.enums;
package com.hikcreate.annotion.facade.enums;
/**
* 路由框架,支持ACTIVITY,FRAGMENT,PROVIDER 三种信息互通格式
......@@ -9,7 +9,7 @@ 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"),
PROVIDER("com.hikcreate.module.IProvider"),
UNKNOWN("Unknown route type");
private String className;//提供一个全限定类名
......
package com.hikcreate.router_annotion.facade.model;
package com.hikcreate.annotion.facade.model;
import com.hikcreate.router_annotion.facade.enums.RouteType;
import com.hikcreate.annotion.facade.enums.RouteType;
/**
* 容器:封装路由目的地信息基类
......
package com.hikcreate.router_compiler;
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.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.ParameterSpec;
import com.squareup.javapoet.ParameterizedTypeName;
import com.squareup.javapoet.TypeSpec;
import java.io.IOException;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Filer;
import javax.annotation.processing.ProcessingEnvironment;
......@@ -27,12 +29,10 @@ import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
//注册APT
@AutoService(Processor.class)
//指定apt支持的java版本
@SupportedSourceVersion(SourceVersion.RELEASE_7)
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class RouterProcessor extends AbstractProcessor {
//文件工具
......
......@@ -35,4 +35,5 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.multidex
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