1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/archermind-ti-grouter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект grouter

Проект grouter

Описание проекта:

APP-страница и сервисный компонентный фреймворк.

Установка

  1. В файле build.gradle в корневом каталоге проекта добавьте зависимость:
dependencies {
    classpath 'com.gitee.archermind-ti:grouter-gradle-plugin:1.0.1-beta'
}
  1. В файл build.gradle на уровне модуля добавьте зависимости:
dependencies {
   compile 'com.gitee.archermind-ti:grouter:1.0.1-beta'
   compile 'com.gitee.archermind-ti:grouter-annotation:1.0.1-beta'
   annotationProcessor 'com.gitee.archermind-ti:grouter-compiler:1.0.1-beta'
 }

Использование

В файле gradle.properties в корневом каталоге настройте свойства:

  • GROUTER_SOURCE_PATH — путь сохранения кода (укажите свой путь).
  • GROUTER_SCHEME — схема (укажите свою схему).

Добавьте в каждый модуль build.gradle:

// Обратите внимание на порядок, необходимо разместить после других 'apply plugin: XXX'
apply plugin: 'grouter'

В каждом модуле build.gradle ohos->defaultConfig добавьте:

javaCompileOptions {

        annotationProcessorOptions {
            arguments = [
                    MODULE_NAME : 'shell_base',
                    GROUTER_SOURCE_PATH : GROUTER_SOURCE_PATH,
                    GROUTER_HOST : '',
                    GROUTER_MULTI_PROJECT_NAME :'',
                    GROUTER_SCHEME : GROUTER_SCHEME,
                    ROOT_PROJECT_DIR : project.rootDir
            ]
        }

    }

Инициализация в MyApplication:

GRouter.setSerialization(new GRouter.Serialization() {

            @Override
            public String serialize(Object object) {
                return JSON.toJSONString(object);
            }

            @Override
            public <T> T deserializeObject(String json, Class<T> clazz) {
                return JSON.parseObject(json, clazz);
            }

            @Override
            public <T> List<T> deserializeList(String json, Class<T> clazz) {
                return JSON.parseArray(json, clazz);
            }
        });

GRouter.getInstance().init(this, BuildConfig.BUILD_TYPE, null)

Применение аннотаций

Добавьте аннотацию @RouterActivity, затем нажмите DevEco Studio, редактор, верхнее меню Build -> bulid Hap(s)/App(s) ->build Hap(s), чтобы создать конструктор метода в GActivityCenter:

@RouterActivity("user")
public class UserAbility extends Ability {

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setMainRoute(UserAbilitySlice.class.getName());
    }

}

Поддерживаются три способа перехода, если это в текущем проекте, рекомендуется использовать третий способ перехода:

// Способ 1
GRouter.getInstance().startActivity(context, "grouterdemo://activity/user?uid=1")

// Способ 2
GRouter.getInstance().activityBuilder("user").put("uid",1).start(context)

// Рекомендуемый способ 3
GActivityCenter.UserActivity().user(User(1,"Wiki")).start(context)

Параметры RouterField поддерживают типы: int, long, float, double, boolean, Integer, Long, Double, Float, Boolean, String, int[], long[], float[], double[], boolean[], String[], сериализуемые List, сериализуемый Object.

@RouterTask

Добавьте @RouterTask аннотацию, затем нажмите DevEco Studio, редактор, верхнее меню Build -> bulid Hap(s)/App(s) ->bulid Hap(s), чтобы сгенерировать конструктор метода в GTaskCenter:

@RouterTask(value = "getUser", returns = "User")
public class GetUserTask extends GRouterTask {

    @RouterField
    public int uid;

    @RouterField
    public String name;

    @Override
    public Object process() {

        return new User(uid, name);
    }
}

Поддерживается три способа вызова:

// Способ 1: через URL для создания
Response response = GRouter.getInstance().taskBuilder("grouter://task/getUser?uid=1").execute()

// Способ 2: через конструктор для создания
Response response = GROuter.getInstance().taskBuilder("getUser").put("uid",1).execute()

// Рекомендуемый способ 3: через автоматический конструктор
Response response = GTaskCenter.GetUserTask().uid(1).execute()

Способ 1, параметры RouterField поддерживают типы: int, long, float, double, boolean, Integer, Long, Double, Float, Boolean, String, int[], long[], float[], double[], boolean[], String[], сериализуемые List, сериализуемый Object.

Если это способ 2 и способ 3, поддерживаются параметры любого типа.

@RouterComponent

Добавьте @RouterComponent аннотацию, затем нажмите DevEco Studio, редактор, верхнее меню Build -> bulid Hap(s)/App(s) ->bulid Hap(s), чтобы сгенерировать конструктор метода в GComponentCenter:

public interface UserService {

    public void sayHello();
    public User getUser(int uid);
    public List<User> listUser();
}

Реализуйте интерфейс в модуле: Есть два способа вызова:

// Не рекомендуется
UserService userService = GRouter.getInstance().getComponent("userService") as UserService

// Не рекомендуется
UserService userService = GRouter.getInstance().getComponent("userService",UserService::class.java)

// Рекомендуется
UserService userService = GComponentCenter.UserServiceImpl()

User user = userService.getUser(1)

@RouterDelegate Добавьте аннотацию @RouterDelegate, затем нажмите DevEco Studio редактор в верхнем меню Build -> bulid Hap(s)/App(s) ->build Hap(s), чтобы создать метод конструктора в GDelegateCenter.

@RouterDelegate
class AccountService {

    AccountService() {}
    @RouterDelegateConstructor
    AccountService(Context context) {}
    @RouterDelegateMethod
    public User login(String uid, String  pwd)  {
            return new User("Wiki");
    }

}

В других независимых модулях или BaseModule можно напрямую использовать сгенерированный класс-посредник для вызова.

AccountService accountServiceDelegate = GDelegateCenter.AccountService(context) User user = accountServiceDelegate.login("","")

Версия итерации

  • v1.0.0-beta

Этапы компиляции исходного кода

Шаг 1. Входной проект компиляции Сначала закомментируйте все apply plugin: 'grouter' в build.gradle проекта.

  1. Скомпилируйте grouter-annotation проект и загрузите его на локальный или удаленный склад.
  2. Скомпилируйте проект grouter-compiler и загрузите его на локальный или удалённый склад.
  3. Скомпилируйте проект grouter-gradle-plugin и загрузите его на локальный или удалённый склад.
  4. Раскомментируйте все apply plugin: 'grouter'.
  5. Скомпилируйте и запустите проект.

Шаг 2. Пример компиляции проекта shell_webview Откройте редактор DevEco Studio->Edit Configurations->Run/Debug configurations, выберите Allow parallel run и Deloy Multi Hap Packages, а затем скомпилируйте и установите.

Базовая версия выпуска

Releases 1.0.0

commit id d3ec14d322b0329e3a72c3ff4b558a9f1c619d1a

Информация об авторских правах и лицензиях

Copyright 2019 taoweiji

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/archermind-ti-grouter.git
git@api.gitlife.ru:oschina-mirror/archermind-ti-grouter.git
oschina-mirror
archermind-ti-grouter
archermind-ti-grouter
master