PHPHub for Android

Overview


 创造不息,交付不止

PHPHub-Android

Build Status License

相关项目

项目介绍

此项目为 PHPHub Android 客户端

项目架构采用 MVP 模式

PHPHub Android APK 下载

运行环境

Min SDK verison 4.0+

Android Studio version 1.3.2

Gradle version 2.4

安装方式

1、在指定的目录下执行

git clone https://github.com/CycloneAxe/phphub-android.git

2、复制 gradle.properties.example 为 gradle.properties 并编辑里面的相关信息

3、将项目导入 Android Studio 运行即可

测试环境下用户登陆二维码

功能简述

  • 渠道包构建
  • 使用 nucleus 简化 MVP 架构
  • 使用 RxJava 处理 API 请求返回数据
  • 使用 SmartTabLayout 实现带 Icon 的选项卡切换
  • 消息提醒
  • 使用 Account Manager 存储登陆用户信息
  • WebView 图片点击事件注入
  • 二维码扫描登陆
  • Deep Link 实现

项目依赖

项目名称 项目信息
android.support.* Android Support Library
Dagger 2 Android 依赖注入组件
retrofit 网络请求组件
retroauth 基于 Retrofit, 用于简化处理账户认证请求
butterknife View注入框架
icepick 一个通过注解来方便我们保存和恢复 Android Instance 状态的 Library
fresco Facebook 推出的 Android 图片加载库
SmartTabLayout 带有滑动反馈动效的 Tab 指示器
smart-adapters 简化 ListView / RecyclerView Adapter 的库
MultiStateView 根据状态显示不同 content 的 Android 视图
BGABadgeView-Android Android 徽章控件
RxJava RxJava 是由 Netflix 开发的响应式扩展(Reactive Extensions)的Java实现
RxAndroid RxAndroid 是 RxJava 的一个针对 Android 平台的扩展
logger 一个简单、漂亮、功能强大的 Android 日志程序
nucleus 简化 MVP 的库
Android-MaterialRefreshLayout 下拉刷新控件
LeakCanary Android 内存泄漏检测工具
android-percent-support-extend Google 百分比布局库的扩展
Barcode Scanner 二维码扫描
prettytime 时间格式化
prefser Shared Preferences Helper
Android-TopScrollHelper 点击系统栏自动滚动到顶部
sweet-alert-dialog A beautiful and clever alert dialog
android-saripaar 表单验证
DeepLinkDispatch 一个简单的、基于注解的 Deep Link 处理库
otto Event Bus, 用来简化应用组件之间的通信
android-iconify 一个将 Aweome ICON 和 Android 结合起来的项目
Localify 从文件中加载内容的Android类库
PhotoDraweeView 基于 Fresco 的图片缩放控件
Velodrome onActivityResult handlers for Android

参与贡献

晓晓鱼

刘相轩

###License

Copyright 2015 EST Group

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.
Comments
  • 工程无法编译

    工程无法编译

    Error:(27, 0) Could not find property 'APP_CLIENT_ID' on ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=ApiVersionImpl{mApiLevel=14, mCodename='null'}, targetSdkVersion=ApiVersionImpl{mApiLevel=22, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptNdkModeEnabled=null, versionCode=1000, versionName=1.0.0, applicationId=org.estgroup.phphub, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={GIT_SHA=com.android.builder.internal.ClassFieldImpl@69e1e112}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}. Open File

    opened by AndroidLevi 9
  • 这个错误该怎么解决?

    这个错误该怎么解决?

    Error:(27, 1) A problem occurred evaluating project ':app'.

    Could not find property 'APP_CLIENT_ID' on ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=ApiVersionImpl{mApiLevel=14, mCodename='null'}, targetSdkVersion=ApiVersionImpl{mApiLevel=22, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptNdkModeEnabled=null, versionCode=1000, versionName=1.0.0, applicationId=org.estgroup.phphub, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={GIT_SHA=com.android.builder.internal.ClassFieldImpl@42026e1f}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}.

    opened by MichaelJokAr 8
  • Nucleus + Dagger 2

    Nucleus + Dagger 2

    你好。请教个问题。 这边项目构建不通过。请问你是解决Nucleus + Dagger 2的问题呢? 在我的项目的基类使用

    BaseActivity<PresenterType extends Presenter> extends NucleusAppCompatActivity<PresenterType>
    
    opened by NicodeLee 6
  • 这个插件一直报错def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()

    这个插件一直报错def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()

    org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionImpl cannot be cast to org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral java.lang.ClassCastException: org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionImpl cannot be cast to org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.parse(GradleDslParser.java:157) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.access$100(GradleDslParser.java:50) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser$1.visitApplicationStatement(GradleDslParser.java:99) at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrApplicationStatementImpl.accept(GrApplicationStatementImpl.java:37) at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiElementImpl.acceptGroovyChildren(GroovyPsiElementImpl.java:77) at org.jetbrains.plugins.groovy.lang.psi.impl.statements.blocks.GrBlockImpl.acceptChildren(GrBlockImpl.java:82) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.parse(GradleDslParser.java:91) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.parse(GradleDslParser.java:86) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.access$000(GradleDslParser.java:50) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser$1.visitMethodCallExpression(GradleDslParser.java:94) at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.path.GrMethodCallExpressionImpl.accept(GrMethodCallExpressionImpl.java:51) at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiElementImpl.acceptGroovyChildren(GroovyPsiElementImpl.java:77) at org.jetbrains.plugins.groovy.lang.psi.impl.statements.blocks.GrBlockImpl.acceptChildren(GrBlockImpl.java:82) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.parse(GradleDslParser.java:91) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.parse(GradleDslParser.java:86) at com.android.tools.idea.gradle.dsl.parser.GradleDslParser.parse(GradleDslParser.java:53) at com.android.tools.idea.gradle.dsl.model.GradleBuildModel$GradleBuildDslFile$1.process(GradleBuildModel.java:181) at com.android.tools.idea.gradle.dsl.model.GradleBuildModel$GradleBuildDslFile$1.visitMethodCallExpression(GradleBuildModel.java:158) at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.path.GrMethodCallExpressionImpl.accept(GrMethodCallExpressionImpl.java:51) at org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementVisitor.visitElement(GroovyPsiElementVisitor.java:34) at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:274) at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:196) at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:779) at com.android.tools.idea.gradle.dsl.model.GradleBuildModel$GradleBuildDslFile.parse(GradleBuildModel.java:152) at com.android.tools.idea.gradle.dsl.parser.GradleDslFile.parse(GradleDslFile.java:69) at com.android.tools.idea.gradle.dsl.model.GradleBuildModel.parseBuildFile(GradleBuildModel.java:54) at com.android.tools.idea.gradle.dsl.model.GradleBuildModel.get(GradleBuildModel.java:48) at xyz.marcato.ideaplugin.methodscount.MethodsCountFoldingBuilder.buildFoldRegionsWithGradleBuildModel(MethodsCountFoldingBuilder.kt:24) at xyz.marcato.ideaplugin.methodscount.MethodsCountFoldingBuilder.buildFoldRegions(MethodsCountFoldingBuilder.kt:63) at com.intellij.lang.folding.LanguageFolding.buildFoldingDescriptors(LanguageFolding.java:83) at com.intellij.lang.folding.CompositeFoldingBuilder.buildFoldRegions(CompositeFoldingBuilder.java:60) at com.intellij.lang.folding.LanguageFolding.buildFoldingDescriptors(LanguageFolding.java:83) at com.intellij.codeInsight.folding.impl.FoldingUpdate.getFoldingsFor(FoldingUpdate.java:265) at com.intellij.codeInsight.folding.impl.FoldingUpdate.getFoldingsFor(FoldingUpdate.java:250) at com.intellij.codeInsight.folding.impl.FoldingUpdate.getUpdateResult(FoldingUpdate.java:120) at com.intellij.codeInsight.folding.impl.FoldingUpdate.access$000(FoldingUpdate.java:56) at com.intellij.codeInsight.folding.impl.FoldingUpdate$2.compute(FoldingUpdate.java:108) at com.intellij.codeInsight.folding.impl.FoldingUpdate$2.compute(FoldingUpdate.java:103) at com.intellij.psi.impl.PsiParameterizedCachedValue.doCompute(PsiParameterizedCachedValue.java:53) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:200) at com.intellij.psi.impl.PsiParameterizedCachedValue.getValue(PsiParameterizedCachedValue.java:43) at com.intellij.psi.util.CachedValuesManager.getParameterizedCachedValue(CachedValuesManager.java:96) at com.intellij.codeInsight.folding.impl.FoldingUpdate.updateFoldRegions(FoldingUpdate.java:102) at com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl.updateFoldRegions(CodeFoldingManagerImpl.java:344) at com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl.updateFoldRegionsAsync(CodeFoldingManagerImpl.java:326) at com.intellij.codeInsight.daemon.impl.CodeFoldingPass.doCollectInformation(CodeFoldingPass.java:42) at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:67) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:444) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1103) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:435) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:452) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:402) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:432) at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:408) at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask.exec(JobLauncherImpl.java:189) at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260) at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858) at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687) at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642) at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:109)

    opened by liericiyan 5
  • as2.1编译出错~

    as2.1编译出错~

    `xecution failed for task ':app:transformResourcesWithMergeJavaResForFirRelease'.

    com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okio/okio/pom.xml`

    opened by bbs7txt 2
  • 编译不通过

    编译不通过

    Error:(27, 0) Could not find property 'APP_CLIENT_ID' on ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=ApiVersionImpl{mApiLevel=14, mCodename='null'}, targetSdkVersion=ApiVersionImpl{mApiLevel=22, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptNdkModeEnabled=null, versionCode=1000, versionName=1.0.0, applicationId=org.estgroup.phphub, testApplicationId=null, testInstrumentationRunner=null, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={GIT_SHA=com.android.builder.internal.ClassFieldImpl@69e1e112}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}. Open File

    opened by gzfgeh 2
  • 编译失败

    编译失败

    Warning:WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for debug as it may be conflicting with the internal version provided by Android. Warning:WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for release as it may be conflicting with the internal version provided by Android. Warning:WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for debugAndroidTest as it may be conflicting with the internal version provided by Android. Warning:WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for developmentDebug as it may be conflicting with the internal version provided by Android. Warning:WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for FirRelease as it may be conflicting with the internal version provided by Android.

    opened by tianshaokai 1
  • Error:(6, 0) CreateProcess error=2, 系统找不到指定的文件。

    Error:(6, 0) CreateProcess error=2, 系统找不到指定的文件。

    D:\workspace_studio2\phphub-android-master\app\build.gradle Error:(6, 0) CreateProcess error=2, 系统找不到指定的文件。

    第六行的内容为: def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()

    opened by hejunbinlan 1
  • fix Android WebView not stopping after user presses back

    fix Android WebView not stopping after user presses back

    //fix Android WebView not stopping after user presses back @Override public void onResume() { super.onResume(); contentView.onResume(); }

    @Override
    public void onPause()
    {
        super.onPause();
        contentView.onPause();
    }
    
    opened by kingstudio 1
  • gradle出错提示facebook/fresco/fresco找不到,这个umeng的包貌似已经失效了。

    gradle出错提示facebook/fresco/fresco找不到,这个umeng的包貌似已经失效了。

    Error:Could not GET 'https://raw.githubusercontent.com/umeng/mvn-repo-umeng/master/repository/com/facebook/fresco/fresco/'. Received status code 400 from server: Bad Request

    opened by phphub002 0
  • androidstudio 2.0 编译出错。

    androidstudio 2.0 编译出错。

    Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForFirRelease'.

    com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okio/okio/pom.xml File1: /Users/fyj/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio/1.4.0/5b72bf48563ea8410e650de14aa33ff69a3e8c35/okio-1.4.0.jar File2: /Users/fyj/学习资料/git/phphub-android/app/build/intermediates/exploded-aar/com.umeng/message/2.4.1/jars/libs/com.umeng.message.lib_v2.4.1.jar

    opened by wudi3 0
  • 小白提问:编译问题

    小白提问:编译问题

    Dependency commons-logging:commons-logging:1.1.1 is ignored for debug as it may be conflicting with the internal version provided by Android. Dependency commons-logging:commons-logging:1.1.1 is ignored for release as it may be conflicting with the internal version provided by Android. Dependency commons-logging:commons-logging:1.1.1 is ignored for debugAndroidTest as it may be conflicting with the internal version provided by Android. Dependency commons-logging:commons-logging:1.1.1 is ignored for developmentDebug as it may be conflicting with the internal version provided by Android. Dependency commons-logging:commons-logging:1.1.1 is ignored for FirRelease as it may be conflicting with the internal version provided by Android.

    opened by lelevenl 0
Library for easy work with Facebook, Twitter, LinkedIn and Google on Android

THIS PROJECT IS NO LONGER MAINTAINED, FEEL FREE TO FORK AND FIX IT FOR YOUR NEEDS There is also an Android Library that is being maintained, CloudRail

Anton Krasov 1k Dec 18, 2022
Easy social network authorization for Android. Supports Facebook, Twitter, Instagram, Google+, Vkontakte. Made by Stfalcon

SocialAuthHelper A library that helps to implement social network authorization (Facebook, Twitter, Instagram, GooglePlus, Vkontakte). Who we are Need

Stfalcon LLC 97 Nov 24, 2022
Youtube-dl for android

youtube-dl-android Android library wrapper for youtube-dl executable. Based on yausername's youtubedl-android but with ability to download binary file

Vikas 97 Dec 30, 2022
Twidere for Android

Twidere for Android Material Design ready and feature rich Twitter/Mastodon/Fanfou app for Android 4.1+. Enjoy Fediverse now! Twidere-Android is maint

Twidere Project 2.7k Dec 27, 2022
A Reddit client for Android

This is a Reddit client on Android written in Java. It does not have any ads and it features clean UI and smooth browsing experience.

null 2.6k Jan 9, 2023
An unofficial open source Reddit client for Android.

RedReader An unofficial, open source Android client for Reddit. Features Free and open-source Software - no ads/tracking Lightweight and fast Swipe po

null 1.4k Jan 7, 2023
Slide is an open sourced, ad free Reddit browser for Android

Slide Slide is an open source, ad free Reddit browser for Android. It is based around the Java Reddit API Wrapper. Slide is available on the Google Pl

Carlos Crane 1.7k Dec 27, 2022
Open-source alternative Instagram client on Android.

Instagram client; previously known as InstaGrabber.

Austin Huang 1.1k Jul 23, 2021
Kickstarter for Android. Bring new ideas to life, anywhere.

Welcome to Kickstarter's open source Android app! Come on in, take your shoes off, stay a while—explore how Kickstarter's native squad has built and c

Kickstarter 5.7k Jan 2, 2023
A light Sina Weibo client for Android

BlackLight 新浪微博客户端 请注意,当前BlackLight的开发已经被冻结,直到2016年高考后重启。 The development progress has been FROZEN till June 2016. 详细介绍以及Changelog请见Play商店。 https://pl

Paper Airplane Dev Team/纸飞机开发团队 884 Nov 22, 2022
Cnblogs Client for Android - Material Design

Cotable - Yet Another Cnblogs Client for Android Description Cotable = Code + Stable (The Paradise of Coder) The Android client of Cnblogs that named

Steve Lemuel 38 Feb 12, 2022
GitHub client for Android based on the abandoned official app

ForkHub ForkHub started off as a fork of the official Android app from GitHub, and has since seen lots of improvements. You can see a comprehensive li

Jon Ander Peñalba 2.8k Dec 28, 2022
GitHub Android application

Gitskarios Beta Testing Community Forum / Discussion Join the beta here Download it from Google Play! What is Gitskarios? Gitskarios is an Android App

Gitskarios 530 Dec 19, 2022
The Google I/O Android App

Google I/O Android App 2021 Update Due to global events, Google I/O 2020 was canceled and Google I/O 2021 is an online-only event, so the companion ap

Google 21.7k Jan 7, 2023
A handy Dribbble client for Android.

Notice Gunnner has been deprecated since Dribbble API v1 has been retired on March 26, 2018. Gunnner Gunnner1 is a handy Dribbble client for Android.

Egor Neliuba 60 Feb 12, 2022
📲 Android Application to track any user activity on Github built using the Github Developers API. Used Retrofit to fetch data and MVVM Architecture.

Github Visualizer ?? Android Application to track any user activity on Github built using the Github Developers Api. A sample application to demonstra

Dheeraj Kotwani 104 Dec 28, 2022
An Android client for Pump.io

Impeller - An Android client for Pump.io What is it A client for Pump.io, intended to provide a rich, platform-integrated experience. Runs on Android

Erin 46 Nov 1, 2022
A libre lightweight streaming front-end for Android.

NewPipe A libre lightweight streaming frontend for Android. Screenshots • Description • Features • Installation and updates • Contribution • Donate •

Team NewPipe 22.4k Jan 2, 2023
Github client for Android

OctoDroid This application provides access to GitHub and lets you stay connected with your network Download Main features Repository List repositories

Azwan Adli 1.5k Dec 28, 2022