Giter Site home page Giter Site logo

xuexiangjys / templateappproject Goto Github PK

View Code? Open in Web Editor NEW
831.0 21.0 234.0 526 KB

Android template project, fast construction (integrated XUI, XUtil, XAOP, XPage, XUpdate, XHttp2, Umeng Statistics and Walle multi-channel package). Android空壳模板工程,快速搭建(集成了XUI、XUtil、XAOP、XPage、XUpdate、XHttp2、友盟统计和walle多渠道打包)

Home Page: https://github.com/xuexiangjys/TemplateAppProject/wiki

License: Apache License 2.0

Java 100.00%
x-templateproject template-project

templateappproject's Introduction

TemplateAppProject

Android空壳模板工程,快速搭建(集成了XUI、XUtil、XAOP、XPage、XUpdate、XHttp2、友盟统计和walle多渠道打包)

【注意】 本模板适用于Android Studio 4.0及以上版本,如果你的Android Studio低于 4.0版本,可使用butterknife分支。

【Kotlin版本】 如果你想使用Kotlin语言,那么请移步TemplateAppProject-kotlin

关于我

公众号 掘金 知乎 CSDN 简书 思否 哔哩哔哩 今日头条
我的Android开源之旅 点我 点我 点我 点我 点我 点我 点我

效果

templateproject_demo.gif

Star趋势图

Stargazers over time

集成介绍(请star支持)

本项目是项目androidx项目。精选了X系列最实用的几个库,可大大提高开发的效率。

除此之外,还集成了其他优秀的第三方库:

更多资源

使用方式

视频教程-如何使用模板工程

1.克隆项目

git clone https://github.com/xuexiangjys/TemplateAppProject.git

2.修改项目名(文件夹名),并删除目录下的.git文件夹(隐藏文件)

3.使用AS打开项目,然后修改包名applicationIdapp_name

  • 修改包名

templateproject_1.png

templateproject_2.png

  • 修改applicationId

templateproject_3.png

  • 修改app_name

templateproject_5.png

项目打包

1.修改工程根目录的gradle.properties中的isNeedPackage=true

2.添加并配置keystore,在versions.gradle中修改app_release相关参数。

3.如果考虑使用友盟统计的话,在local.properties中设置应用的友盟ID:APP_ID_UMENG

4.使用./gradlew clean assembleReleaseChannels进行多渠道打包。

如果觉得项目还不错,可以考虑打赏一波

你的打赏是我维护的动力,我将会列出所有打赏人员的清单在下方作为凭证,打赏前请留下打赏项目的备注!

pay.png

感谢下面小伙伴的打赏:

姓名 金额 方式
myie9 100¥ 微信
*鸥 10.24¥ 微信
**家 10.24¥ 支付宝
*寻 20.48¥ 微信

联系方式

更多资讯内容,欢迎扫描关注我的个人微信公众号:【我的Android开源之旅】

templateappproject's People

Contributors

xuexiangjys avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

templateappproject's Issues

TemplateAppProject-butterknife openPageForResult No view found for id 0x7f09011d (com.xuexiang.simba:id/fragment_container)

大神请教个问题 在TemplateAppProject-butterknife demo中的ProfileFragment 页面中打开一个 openPageForResult就报如下错误 请大神指教一下 谢谢
E FATAL EXCEPTION: main
Process: com.xuexiang.simba, PID: 21338
java.lang.IllegalArgumentException: No view found for id 0x7f09011d (com.xuexiang.simba:id/fragment_container) for fragment NicknameFragment{df5357} (b79b8fb8-5a0b-4d78-956b-a0bd8b1daaba id=0x7f09011d tag=testPage)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5856)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1026)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887)

弹出隐私政策前有获取设备MAC地址的违规行为,请问如何修改

未征得用户同意收集个人信息
App运行时,虽然有向用户明示并经用户同意环节,但个人信息收集发生在用户同意前。
详情
认定依据:
《认定方法》3.1
《自评估指南》评估项6:评估点23
检测存证:
置信度:高
行为描述:
2020-04-14 16:42:31.800 -> [测试动作] 启动史宾格自动化检测
2020-04-14 16:42:37.209 -> [测试动作] 启动应用
2020-04-14 16:42:37.645 -> 获取设备MAC地址
2020-04-14 16:42:37.721 -> 获取设备MAC地址
2020-04-14 16:42:37.730 -> 获取设备MAC地址
2020-04-14 16:42:37.736 -> 获取设备MAC地址
2020-04-14 16:42:37.825 -> 获取设备MAC地址
2020-04-14 16:42:39.308 -> 弹出隐私政策
2020-04-14 16:42:52.400 -> [测试动作] 同意隐私政策

Debug没问题,打包Release后HTTP请求报证书验证失败

现象:打开进入首页不会弹出公告
重新步骤:
1、克隆仓库
2、将GuideTipsDialog.showTipsForce的“NoTipCallBack”改成"TipCallBack",其他不做任何修改
3、打包APK release版
4、安装APK进入首页,提示“证书验证失败”错误
image

使用 xhttp 报类型转换错误

按照 例子来写的

CustomRequest request = XHttp.custom().cacheMode(CacheMode.FIRST_CACHE).cacheTime(TimeConstants.DAY).cacheKey("dudu");
request.apiCall(request.create(ApiService.IGetService.class).staffLogin("9527"), new TipCallBack<ApiResult>() {
@OverRide
public void onSuccess(ApiResult response) throws Throwable {
XToastUtils.info("haha");

}

});

api service 里面 是 这样的
/**

  • 员工登录
    */
    @get("api/user/login")
    Observable<ApiResult> staffLogin(@query("staffNo") String staffNo );

swagger 里面 可以 请求 成功 数据格式 是
// http://localhost:5000/api/user/login?staffNo=9527

{
"code": 0,
"msg": "haha",
"data": "dudu"
}

不知道是哪里出问题了 ……

Xhttp 自定义 SuccessCode BaseRequest.keepJson(true) 请求失败

Xhttp 自定义 SuccessCode 会走 onError 方法
示例:


   XHttp.get(url)
                .upJson(JsonUtil.toJson(params))
                .keepJson(true)
                .execute(new SimpleCallBack<String>() {
                    @Override
                    public void onSuccess(String response) throws Throwable {
                        callBack.onSuccess(response);
                    }

                    @Override
                    public void onError(ApiException e) {
                        callBack.onError(e);
                    }
                });

需要您修改 ApiResultFunc<T>

apiResult.setCode( ApiUtils.getSuccessCode()); 

  @NonNull
    private ApiResult<T> parseApiResult(ResponseBody responseBody, ApiResult<T> apiResult) {
        try {
            final String json = responseBody.string();
            final Class<T> clazz = TypeUtils.getClass(mType, 0);
            if (mKeepJson && String.class.equals(clazz)) {
                apiResult.setData((T) (json == null ? "" : json));

                apiResult.setCode(0);  
 //这里应该修改为  apiResult.setCode( ApiUtils.getSuccessCode()); 

            } else {
              ......
           }
        return apiResult;
    }

包名和applicationId不一致时报错BaseSplashActivity

包名是com.myie9.mouthmask.huawei
applicationId是com.myie9.mouthmask
Didn't find class "com.myie9.mouthmask.R$styleable" on path: DexPathList

请问该怎么解决,谢谢

Process: com.myie9.mouthmask, PID: 3639
java.lang.NoClassDefFoundError: com/myie9/mouthmask/R$styleable
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:692)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:543)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:166)
at com.xuexiang.xui.widget.activity.BaseSplashActivity.initView(BaseSplashActivity.java:39)
at com.xuexiang.xui.widget.activity.BaseSplashActivity.onCreate(BaseSplashActivity.java:29)
at android.app.Activity.performCreate(Activity.java:5264)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at com.didiglobal.booster.instrument.ActivityThreadCallback.handleMessage(ActivityThreadCallback.java:49)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.myie9.mouthmask.R$styleable" on path: DexPathList[[dex file "dalvik.system.DexFile@41ca47d8", zip file "/data/app/com.myie9.mouthmask-1.apk", zip file "/data/data/com.myie9.mouthmask/code_cache/secondary-dexes/com.myie9.mouthmask-1.apk.classes2.zip"],nativeLibraryDirectories=[/data/app-lib/com.myie9.mouthmask-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:692) 
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659) 
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:543) 
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:166) 
at com.xuexiang.xui.widget.activity.BaseSplashActivity.initView(BaseSplashActivity.java:39) 
at com.xuexiang.xui.widget.activity.BaseSplashActivity.onCreate(BaseSplashActivity.java:29) 
at android.app.Activity.performCreate(Activity.java:5264) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
at android.app.ActivityThread.access$800(ActivityThread.java:151) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
at com.didiglobal.booster.instrument.ActivityThreadCallback.handleMessage(ActivityThreadCallback.java:49) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:5292) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641) 
at dalvik.system.NativeStart.main(Native Method) 

关于内存泄漏检测的疑问

我去掉了x-library.gradle中的
if (configuration.name == "debugImplementation") {
//内存泄漏监测leak
configuration.dependencies.add(getProject().dependencies.create('com.squareup.leakcanary:leakcanary-android:1.6.3'))
}
if (configuration.name == "releaseImplementation") {
//内存泄漏监测leak
configuration.dependencies.add(getProject().dependencies.create('com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'))
}
if (configuration.name == "testImplementation") {
//内存泄漏监测leak
configuration.dependencies.add(getProject().dependencies.create('com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'))
}
这三段,发现运行闪退。 转而去修改BuildConfig中的debug为false,发现还是去不掉这个内存检测捆绑安装的Leaks,并且会一直推送消息。 老哥你可以直接在文档声明一下怎么去掉这个头疼的东西...

linux 下运行项目报错

我没有改项目名字跑的项目

error 1 : Type com.xuexiang.xrouter.core.AutoWiredServiceImpl is defined multiple times: /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/124df5ace20db07e11dcf5c622e9251a51b6b4c6096e54d8d6c7f86c59555c48_1.jar:classes.dex, /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/f647141e8c50057b245b8215de958c085f490885dfd5d5c37587cc79b067bd40_1.jar:classes.dex

error2 : Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete

error3 : Caused by: com.android.tools.r8.utils.b: Error: /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/124df5ace20db07e11dcf5c622e9251a51b6b4c6096e54d8d6c7f86c59555c48_1.jar:classes.dex, Type com.xuexiang.xrouter.core.AutoWiredServiceImpl is defined multiple times: /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/124df5ace20db07e11dcf5c622e9251a51b6b4c6096e54d8d6c7f86c59555c48_1.jar:classes.dex, /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/f647141e8c50057b245b8215de958c085f490885dfd5d5c37587cc79b067bd40_1.jar:classes.dex

error4: Execution failed for task ':app:mergeProjectDexDebug'.

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Type com.xuexiang.xrouter.core.AutoWiredServiceImpl is defined multiple times: /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/124df5ace20db07e11dcf5c622e9251a51b6b4c6096e54d8d6c7f86c59555c48_1.jar:classes.dex, /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/f647141e8c50057b245b8215de958c085f490885dfd5d5c37587cc79b067bd40_1.jar:classes.dex
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.

error5: Error: /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/124df5ace20db07e11dcf5c622e9251a51b6b4c6096e54d8d6c7f86c59555c48_1.jar:classes.dex, Type com.xuexiang.xrouter.core.AutoWiredServiceImpl is defined multiple times: /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/124df5ace20db07e11dcf5c622e9251a51b6b4c6096e54d8d6c7f86c59555c48_1.jar:classes.dex, /home/ifnk/AndroidStudioProjects/TemplateAppProject/app/build/intermediates/mixed_scope_dex_archive/debug/out/f647141e8c50057b245b8215de958c085f490885dfd5d5c37587cc79b067bd40_1.jar:classes.dex

其中 error2 我看了下 说是 我 java 版本 太高 ,但是

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

我java 版本 就是 1.8没有改过

TemplateAppProject中openPageForResult使用异常,该什么解决呢?

下载好最新的TemplateAppProject后,将ProfileFragment中的openNewPage(AboutFragment.class);改为Bundle bundle=new Bundle(); openPageForResult(AboutFragment.class,bundle,100);,运行报错,
No view found for id 0x7f0900ea (com.xuexiang.templateproject:id/fragment_container) for fragment AboutFragment
我使用xpage的源码测试,里面的xpagedemo使用openPageForResult却没报错,是不是这个template集成了比较多的包后冲突了。这个我测试了好几个版本的templateappproject都是这样的问题,我调试了CorePageManager里面是有这个view的啊,为什么还提示找不到呢?

本机没有NDK 20.0版本,但指定NDK21.0 版后,出现一堆异常

本机没有指定NDK的版本,指定NDK 21.0.6113669 后,就一堆问题了!
No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.0.6113669

比如:Gradle sync failed: Could not get unknown property 'versions' for object of type ... 这类的,应该是兼容性的问题,但是直接clone XUI的APP倒可以直接编译

老哥,问一下如何关闭自动生成的版权注释

/*

  • Copyright (C) 2020 xuexiangjys([email protected])
  • 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.

*/
就是这个

使用这个模版工程Xhttp请求网络时,服务器相应格式是正确的 但是回调走到了onerror 打印的内容是返回体的msg内容

这个是url http://192.168.101.195:8081/test?name=%E6%9D%83%E9%99%90%E6%B5%8B%E8%AF%95
这个是输出的日志
I/[XHttp]: body:{"msg":"操作成功","code":200,"data":[{"name":"权限测试","id":1},{"name":"权限测试","id":2},{"name":"权限测试","id":3},{"name":"权限测试","id":4},{"name":"权限测试","id":5}]}
<-- END HTTP
E/[XHttp]: --> Subscriber is onError
--> e instanceof ApiException, message:操作成功

使用openNewPage方法调用fragment时不能初始化

我在一个fragment中对图片进行了处理并保存到服务器,之后调用openNewPage方法调用另一个fragment从服务器上获取图片,加载图片的方法写在了initViews里。但是发现这个显示图片的fragment并没有更新为新图片

如何关闭模板项目编译产生的txt文件

你好,请问我下载了模板项目,然后修改包名进入开发环节,在项目编译的时候会在根目录产生ajcore.*********.txt的文件,请问在哪里可以设置关闭?
image

process不显示...

IProgressLoader loader = getProgressLoader();
try {
loader.showLoading();
Thread.sleep(3000);
loader.dismissLoading();
} catch (InterruptedException e) {
e.printStackTrace();
}
onLoginSuccess();
您好,我这是在登陆的方法里加了这段代码,但是模拟器上点完登陆,什么都不显示,过了三秒就蹦到首页了,是我少配置什么东西了吗

请教build报错问题

请问build gradle sync时报错,如何解决:

  1. gradle version选择6.6.1,提示:
    Unsupported Java.
    Your build is currently configured to use Java 17.0.10 and Gradle 6.6.1.

Possible solution:

  • Upgrade Gradle wrapper to 7.2 version and re-import the project
  1. 手动改gradle version到7.2,提示:
    Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'.
    Could not create task ':app:minifyReleaseWithR8'.
    Cannot query the value of this provider because it has no value available.

谢谢!

无法编译

错误提示:

Configure project :app

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings

XAOP::Aspectj切片开始编织Class!

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring project ':app'.

Could not create task ':app:optimizeAppDebug'.
Unnecessarily replacing a task that does not exist is not supported. Use create() or register() directly instead. You attempted to replace a task named 'optimizeAppDebug', but there is no existing task with that name.

  • Try:
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
    at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:80)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:73)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.access$600(LifecycleProjectEvaluator.java:53)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject$1.run(LifecycleProjectEvaluator.java:112)
    at org.gradle.internal.Factories$1.create(Factories.java:26)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
    at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:238)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:232)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withMutableState(DefaultProjectStateRegistry.java:193)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:96)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:68)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:699)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:142)
    at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:36)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:64)
    at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:61)
    at org.gradle.configuration.BuildOperatingFiringProjectsPreparer$ConfigureBuild.run(BuildOperatingFiringProjectsPreparer.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.configuration.BuildOperatingFiringProjectsPreparer.prepareProjects(BuildOperatingFiringProjectsPreparer.java:40)
    at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:207)
    at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:145)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:130)
    at org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild(DefaultGradleLauncher.java:104)
    at org.gradle.internal.invocation.GradleBuildController$2.execute(GradleBuildController.java:70)
    at org.gradle.internal.invocation.GradleBuildController$2.execute(GradleBuildController.java:67)
    at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:85)
    at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:78)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
    at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
    at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:78)
    at org.gradle.internal.invocation.GradleBuildController.configure(GradleBuildController.java:67)
    at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:62)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
    at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
    at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
    at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:80)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:60)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:38)
    at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
    at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:68)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:27)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    Caused by: com.android.build.gradle.internal.crash.ExternalApiUsageException: org.gradle.api.internal.tasks.DefaultTaskContainer$TaskCreationException: Could not create task ':app:optimizeAppDebug'.
    at com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:130)
    at com.android.build.gradle.internal.plugins.BasePlugin.createAndroidTasks(BasePlugin.java:654)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:82)
    at com.android.build.gradle.internal.plugins.BasePlugin.lambda$createTasks$4(BasePlugin.java:559)
    at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)
    at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt)
    at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.lambda$run$0(DefaultListenerBuildOperationDecorator.java:152)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:60)
    at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:92)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:231)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:150)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:325)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:235)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
    at com.sun.proxy.$Proxy28.afterEvaluate(Unknown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:191)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:188)
    at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1434)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:197)
    ... 115 more
    Caused by: org.gradle.api.internal.tasks.DefaultTaskContainer$TaskCreationException: Could not create task ':app:optimizeAppDebug'.
    at org.gradle.api.internal.tasks.DefaultTaskContainer.taskCreationException(DefaultTaskContainer.java:720)
    at org.gradle.api.internal.tasks.DefaultTaskContainer.access$600(DefaultTaskContainer.java:77)
    at org.gradle.api.internal.tasks.DefaultTaskContainer$1.call(DefaultTaskContainer.java:181)
    at org.gradle.api.internal.tasks.DefaultTaskContainer$1.call(DefaultTaskContainer.java:142)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.api.internal.tasks.DefaultTaskContainer.doCreate(DefaultTaskContainer.java:142)
    at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:118)
    at org.gradle.api.internal.project.DefaultProject.task(DefaultProject.java:1262)
    at org.gradle.api.Project$task$2.call(Unknown Source)
    at com.chenenyu.imgoptimizer.ImgOptimizerPlugin$_applyAndroid_closure1.doCall(ImgOptimizerPlugin.groovy:51)
    at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
    at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:105)
    at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
    at org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285)
    at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:264)
    at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:253)
    at com.android.build.gradle.AppExtension.addVariant(AppExtension.java:84)
    at com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:127)
    ... 146 more
    Caused by: java.lang.IllegalStateException: Unnecessarily replacing a task that does not exist is not supported. Use create() or register() directly instead. You attempted to replace a task named 'optimizeAppDebug', but there is no existing task with that name.
    at org.gradle.api.internal.tasks.DefaultTaskContainer.addTask(DefaultTaskContainer.java:250)
    at org.gradle.api.internal.tasks.DefaultTaskContainer.access$400(DefaultTaskContainer.java:77)
    at org.gradle.api.internal.tasks.DefaultTaskContainer$1.call(DefaultTaskContainer.java:176)
    ... 168 more

  • Get more help at https://help.gradle.org

CONFIGURE FAILED in 194ms

建议增加隐私及用户协调弹出页

因为提交给华为等市场时,要求第一次打开app时得要有协议及隐私提醒,建议增加一个。
用对话框怎么在文字中增加一个协议的网址跳转,然后用app内置的webview打开?

我想还有一个方案就是在userguid里增加协议及隐私查看按钮

请问位置定位和修改配置权限

因为给市场提交时要求写明用到的权限是做什么用的,
可否说明一下这2个权限是用于什么功能的:位置定位和修改配置权限

另外, 我可否移除这2个权限,请问怎么搞

选择照片时对预览的大照片选择无效

我把xuidemo里普通拍照的代码移植到您的这个TemplateAppProject工程中,
点击拍照, 再点击左下角的选择照片,
然后点击某一个照片使其全屏预览, 点击右上角的勾选中,
界面显示被选择了, 点击完成按钮,
界面回到很多个图片的界面后,
但是那个图片并没有被选中.

我的有问题的apk:
http://sj.myie9.com/tmp/pick-pic.apk
点击 戴口罩自拍按钮

但是同一个手机中的xuidemo是正常的.

我的代码如下:
https://github.com/myie9/myietemplate/tree/%E9%A2%84%E8%A7%88%E7%85%A7%E7%89%87%E9%80%89%E6%8B%A9%E6%97%A0%E6%95%88-%E5%88%86%E6%94%AF

LeakCanary报内存泄漏

随便切换Fragment或者打开一个页面再关闭,LeakCanary就报内存泄漏,找不到原因。

Fragment泛型警告

Type parameter 'com.xuexiang.templateproject.databinding.FragmentNewsBinding' is not within its bound; should implement 'androidx.viewbinding.ViewBinding
1636338806(1)
'

怎么关那个 leakCanary

我在issue #10 里面 看到 了这个代码

PageConfig.getInstance().enableWatcher(false); //关闭内存泄露监测

但是 我这里压根就没有enableWatcher(false) 方法呀 ,最新的代码怎么关内存检测呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.