Skip to content

常见问题

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

需要检查以下几个问题:

  1. 是否注册了Application类
  2. 是否在Application类中初始化了Freeline
  3. 是否在同一台设备上安装了多个依赖了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"/>
Clone this wiki locally