-
Notifications
You must be signed in to change notification settings - Fork 622
常见问题
Yong edited this page Sep 1, 2016
·
5 revisions
- Exception:
Public symbol xxxx declared here is not defined.
Aapt 打资源包报错。在aapt的参数中,缺少某些未被freeline自动识别的资源路径,导致部分资源id没有被找到。将缺少的资源路径,在build.gradle
的freeline DSL中加入配置项:extraResourceDependencyPaths = ['/path/to/resource/directory1', '/path/to/resource/directory2']
- Exception:
Attribute xxxxxx has already been defined
Aapt 打资源包报错。工程文件中存在重复定义的资源id,可以手动删掉,不影响工程编译。
- 与Genymotion自带的adb发生冲突
$ adb devices
adb server is out of date. killing...
cannot bind 'tcp:5037'
ADB server didn't ACK
*failed to start daemon *
问题出现的原因是genymotion自带了adb工具,会造成冲突。解决的方式是将Genymotion所使用的adb改为androidsdk自带的adb。具体可以参考:StackOverflow Link
- 每次增量编译的时候,不停地提示
sync value error
需要检查以下几个问题:
- 是否注册了Application类
- 是否在Application类中初始化了Freeline
- 是否在同一台设备上安装了多个依赖了freeline的应用
需要在minifest注册正确的Application类,并在其中初始化freeline,以及在开发使用的设备上只安装一个依赖freeline的应用。
- NoConfigFoundException:
/path/ not found, please execute gradlew checkBeforeCleanBuild first.
执行./gradlew checkBeforeCleanBuild
或者gradlew.bat checkBeforeCleanBuild
- Java增量编译无效
需要检查一下所修改的类是否在Application类中被引用。部分机型如小米,在Application中被import,而没有被调用,仍然会预加载dex进来。导致其dex在freeline之前被初始化引用,造成无法增量生效的情况。解决方案是去掉无用import,将FreelineCore.init(this);
放在Application类中的onCreate()
函数的最前面调用。
- Exception:
manifest merger failed: uses-sdk:minSdkVersion can not be smaller than 14 declared in library[com.antfortune.freeline:runtime:x.x.x]
工程的minSdkVersion比freeline:runtime来得低导致的,解决方案如下:
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="21"
tools:overrideLibrary="com.antfortune.freeline"/>