distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
记住前提是,你gradle-2.10-all文件里面不是空的,要不然还是一样需要等待building。 还有一种方法,就是去(services.gradle.org/distributio…%E4%B8%8B%E8%BD%BD%E7%9B%B8%E5%90%8C%E7%89%88%E6%9C%AC%E7%9A%84) gradle,放到路径 :C:\Users\Administrator.gradle\wrapper\dists 文件夹里。 可能你修改完成之后,又会报以下错误,
Gradle sync failed: Another ‘refresh project’ task is currently running for the project: C:\Users\Administrator\Desktop\Deyijia1
Consult IDE log for more details (Help | Show Log)
那下面我们直接把 Android studio 关掉,找到 log日志。全部删除
3.JNI编译时错误 编码GBK的不可映射字符 解决方法
出现这种错误的原因是由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式。
解决方法:应该使用-encoding参数指明编码方式,如:
javah -jni -encoding UTF-8 com.example.XXXX.XXXX.MainActivity
4.友盟微信支付jar冲突
如果你使用了精简版微信,是没有支付相关的内容,若要添加支付,只需删掉umengwx的jar(保留weixin2),放入微信原生jar即可。 如果你是用的是完整版微信,其中weixin1这个jar跟微信原生sdk是同一个jar(只是名字不同),所以为了保证版本一致请使用weixin1这个jar,删掉微信原生sdk即可实现支付。
原因:libammsdk.jar ,SocialSDK_WeiXin_1.jar,两个包里面有同一个a.class文件。
报错代码:
Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/tencent/mm/opensdk/a/a/a$a.class
上面一段是友盟的解决方案,看着有点生硬
注意:我使用的是完整版。就使用了libammsdk.jar ,SocialSDK_WeiXin_Full.jar这两个jar包,删除了原有的SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar包,导致微信支付调用失败。
最终解决方案,保留使用SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_Full.jar两个包就不会产生冲突。其它的旧版本包全部干掉。
5.【Android】WebView加载https页面不能正常显示资源问题
跳到该地址:blog.csdn.net/crazy_zihao…
6. ImageView (fitXY) 属性
fitXY 这种图片的显示方式的效果是:根据 ImageView 设置的大小拉伸图片以填充满空间,(单独设置此属性时)图片会变形。 adjustViewBounds 是限制图片在显示时保持原图比例。(和 fitXY 显示方式合用能到达自适应的效果)
7.java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 157(offset:157).state:588
at android.support.v7.widget.RecyclerView
R
e
c
y
c
l
e
r
.
g
e
t
V
i
e
w
F
o
r
P
o
s
i
t
i
o
n
(
R
e
c
y
c
l
e
r
V
i
e
w
.
j
a
v
a
:
3300
)
a
t
a
n
d
r
o
i
d
.
s
u
p
p
o
r
t
.
v
7.
w
i
d
g
e
t
.
R
e
c
y
c
l
e
r
V
i
e
w
Recycler.getViewForPosition(RecyclerView.java:3300) at android.support.v7.widget.RecyclerView
Recycler.getViewForPosition(RecyclerView.java:3300)atandroid.support.v7.widget.RecyclerViewRecycler.getViewForPosition(RecyclerView.java:3258)
at android.support.v7.widget.LinearLayoutManager
L
a
y
o
u
t
S
t
a
t
e
.
n
e
x
t
(
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1803
)
a
t
a
n
d
r
o
i
d
.
s
u
p
p
o
r
t
.
v
7.
w
i
d
g
e
t
.
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
l
a
y
o
u
t
C
h
u
n
k
(
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1302
)
a
t
a
n
d
r
o
i
d
.
s
u
p
p
o
r
t
.
v
7.
w
i
d
g
e
t
.
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
f
i
l
l
(
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1265
)
a
t
a
n
d
r
o
i
d
.
s
u
p
p
o
r
t
.
v
7.
w
i
d
g
e
t
.
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
s
c
r
o
l
l
B
y
(
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1093
)
a
t
a
n
d
r
o
i
d
.
s
u
p
p
o
r
t
.
v
7.
w
i
d
g
e
t
.
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
s
c
r
o
l
l
V
e
r
t
i
c
a
l
l
y
B
y
(
L
i
n
e
a
r
L
a
y
o
u
t
M
a
n
a
g
e
r
.
j
a
v
a
:
956
)
a
t
a
n
d
r
o
i
d
.
s
u
p
p
o
r
t
.
v
7.
w
i
d
g
e
t
.
R
e
c
y
c
l
e
r
V
i
e
w
LayoutState.next(LinearLayoutManager.java:1803) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1302) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1265) at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1093) at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:956) at android.support.v7.widget.RecyclerView
LayoutState.next(LinearLayoutManager.java:1803)atandroid.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1302)atandroid.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1265)atandroid.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1093)atandroid.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:956)atandroid.support.v7.widget.RecyclerViewViewFlinger.run(RecyclerView.java:2715)
at android.view.Choreographer
C
a
l
l
b
a
c
k
R
e
c
o
r
d
.
r
u
n
(
C
h
o
r
e
o
g
r
a
p
h
e
r
.
j
a
v
a
:
725
)
a
t
a
n
d
r
o
i
d
.
v
i
e
w
.
C
h
o
r
e
o
g
r
a
p
h
e
r
.
d
o
C
a
l
l
b
a
c
k
s
(
C
h
o
r
e
o
g
r
a
p
h
e
r
.
j
a
v
a
:
555
)
a
t
a
n
d
r
o
i
d
.
v
i
e
w
.
C
h
o
r
e
o
g
r
a
p
h
e
r
.
d
o
F
r
a
m
e
(
C
h
o
r
e
o
g
r
a
p
h
e
r
.
j
a
v
a
:
524
)
a
t
a
n
d
r
o
i
d
.
v
i
e
w
.
C
h
o
r
e
o
g
r
a
p
h
e
r
CallbackRecord.run(Choreographer.java:725) at android.view.Choreographer.doCallbacks(Choreographer.java:555) at android.view.Choreographer.doFrame(Choreographer.java:524) at android.view.Choreographer
CallbackRecord.run(Choreographer.java:725)atandroid.view.Choreographer.doCallbacks(Choreographer.java:555)atandroid.view.Choreographer.doFrame(Choreographer.java:524)atandroid.view.ChoreographerFrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
8.关于使用recycleview,Item布局较高,显示不全的布局问题。
后来查了一下,主要是因为布局最外层 android:layout_height="match_parent"使用的是这个属性,导致绘制的同时只绘制了一屏。我们将布局最外层的属性**android:layout_height=“wrap_content”**就不会出现绘制不全的问题。
9.Translation1.3.6配置应用ID与应用密钥
- 登录 ai.youdao.com 该网址,然后注册,登录账号。
- 找到应用管理——我的应用——创建应用
- 见证奇迹的时刻到了,甩手就是两张图
接下来就该干活了,不用我多说了。
#Error:(176, 13) Failed to resolve: **遇到这种情况一般原因是引用的下载地址有问题,没有找到该gradle。**所以说我们需要直接更改build.gradle文件的maven地址。
repositories {
jcenter()
// maven {
// url ‘http://maven.aliyun.com/nexus/content/groups/public’
// }
maven {
url ‘https://maven.google.com/’
}
}
10.出现 java.lang.NoClassDefFoundError: 在Android 5.0以下
原因是:由于项目方法数超过了 dex突破65535的限制。 我们开启了 multiDexEnabled true,然而在 Application 里面没有初始化 MultiDex.install(base),导致报错。 在Application类里面实现添加该方法即可。
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
}
解决方案:www.jianshu.com/p/8b4f711da…
11.出现java.lang.NoClassDefFoundError: Failed resolution of: Lcom/ta/utdid2/device/UTDevice
如果你有用到友盟SDK,可以看下是不是没有引入包
compile ‘com.umeng.sdk:utdid:1.1.5.3’
Android Studio 3.0之后的写法是
implementation ‘com.umeng.sdk:utdid:1.1.5.3’
如果还是报错,可能是与阿里的包有冲突。解决方案 请跳转: help.aliyun.com/knowledge_d…
12.友盟Device_token 获取不到相关问题整理【安卓版】
解决方案: 请跳转: bbs.umeng.com/thread-1523…
13.cannot find implementation for WordRoomDatabase. WordRoomDatabase_Impl does not exist
问题所在:
- 项目是否有使用 kotlin, 如果有请查看 build.gradle文件 是否正确
apply plugin: ‘com.android.application’
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’
//apply plugin: ‘kotlin-kapt’
android {
compileSdkVersion 28
defaultConfig {
applicationId “com.zy.wanandroid”
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName “1.0”
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(include: [‘*.jar’], dir: ‘libs’)
implementation “org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version”
implementation ‘com.android.support:appcompat-v7:28.0.0’
implementation ‘com.android.support.constraint:constraint-layout:1.1.3’
implementation ‘com.android.support:design:28.0.0’
testImplementation ‘junit:junit:4.12’
androidTestImplementation ‘com.android.support.test🏃1.0.2’
androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’
implementation ‘com.android.support:recyclerview-v7:28.0.0’
implementation ‘io.reactivex.rxjava2:rxjava:2.2.3’
implementation ‘io.reactivex.rxjava2:rxandroid:2.1.0’
//主要就是这三个,你要看是否一致,使用是否正确,如果你使用了kotlin 三个缺一不可
implementation “android.arch.persistence.room:runtime:1.1.1”
//注意看 后缀还不一样 room:compiler
annotationProcessor “android.arch.persistence.room:compiler:1.1.1”
kapt “android.arch.persistence.room:compiler:1.1.1”
implementation ‘android.arch.lifecycle:extensions:1.1.1’
implementation “android.arch.navigation:navigation-fragment:1.0.0-alpha07”
implementation “android.arch.navigation:navigation-ui:1.0.0-alpha07”
}
14. io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: github.com/ReactiveX/R… | kotlin.NotImplementedError: An operation is not implemented: not implemented
解决方法:blog.csdn.net/lmh820822/a…
15. java.lang.RuntimeException: Unable to start activity ComponentInfo{xxxActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
原因分析 targetsdk26以上,对于透明主题的activity不能够通过manifest设定android:screenOrientation。 具体分析见这里 zhuanlan.zhihu.com/p/32190223 解决办法 检查报错的Activity是否在AndroidManifest中声明了android:screenOrientation,若有需要将其去除。
16.OKHttp异常java.lang.IllegalStateException: closed与debug时遇到的坑
解决地址:blog.csdn.net/u012587005/…
17.Android 多语言切换,适配8.0
解决地址:www.jianshu.com/p/f56e30b6f… 具体原因,系统若是8.0以上需要用Activity的上下文。
总结
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
系统化的技术体系对大家有一个方向参考。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!