使用Flash Builder二次开发和编译scratch 2.0源码

前言

由于Scratch官方说的不是很清楚,导致我光编译就折腾了好久,问别人也没人肯帮我。摸索了好多天才能使用gradle编译,用sublime修改代码,没办法Debug,在这种条件下硬是写了不少代码。
后来渐渐熟悉之后也顺利使用Flash Builder来开发调试,方便了很多。分享一波经验,避免浪费大家太多的时间。

  • Flash Builder 下载和破解方法
    https://www.213.name/archives/1234
  • 二次开发流程
    scratch-flash是离线版的,官方的api并没有开源,如果要和服务器交互的话,需要分析请求然后自己写api来模拟。二次开发过程参考这篇文章
    https://www.213.name/archives/1211

  • scratch开发者群,相关资源及软件可在群内下载
    244050817 (主群)
    191723983 (新群)
    244051003 (老群)

使用Flash Builder开发

  1. 下载devolpe版的Scratch-flash源码:https://github.com/LLK/scratch-flash

  2. 安装Flash Builder 4

  3. 下载flex SDK 4.6

  4. 新建flex项目,项目地址指向源码的根目录(不是src),应用程序类型选择WEB,

  5. 配置SDK(如果导入时没有配置),项目属性 -> Flex编译器 -> 配置Flex SDK -> 添加

  6. 导入源码中的libs中的swc库(如果没有自动导入的话)

  7. 项目->属性->Flex模块,添加一个模块,源代码选择src\Scratch.as,输出scratch.swf,选择不优化

  8. 编译器参数:
    -locale zh_CN -swf-version=19 -default-size=800,600 -define+=SCRATCH::allow3d,false -define+=SCRATCH::revision,'e267f37'

  9. 其他配置:
    框架链接选择“合并到代码中”
    取消勾选验证RSL摘要

  10. 项目/构建项目,然后去bin-debug文件夹找构建好的scratch.swf文件就可以运行了(不是点运行)

  11. 如果需要debug调试的话需要安装Adobe Flash Player Debugger版本,请自行搜索下载

使用gradle编译

** 注:因官方的某个源挂了,此方法可能不可用 **

  1. 安装gradle,配置环境变量

  2. 在源码目录下执行.\gradlew build,Linux下执行./gradlew build

  3. 注:Linux下应该可以直接编译成功,但windows下可能会报错,提示缺少osmf.swc库文件
    解决方法是在别的SDK中复制过来,gradle默认SDK目录在:C:\Users\Administrator.gradle\gradleFx\sdks\下的某个文件夹
    将osmf.swc复制到SDK目录下的frameworks\libs文件夹中即可

  4. 如果sdks下没有文件夹的话,那么
    C:\Users\Administrator.gradle\caches\modules-2\files-2.1\org.apache\apache-flex-sdk\4.15.0
    这里有个sdk的压缩包,将osmf.swc放到压缩包里的frameworks\libs也可以
  5. 由于gradle第一次运行时会从国外下载很多东西,建议挂个Vpn下载

** Tip: **
- 如果IDE很卡的话,关闭“自动构建”即可
- 群文件中已上传所有的相关文件
- 如果还是编译不好的话,可以进群下载配置好的项目~

45 条评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称
  1. 司南 Google Chrome 69 Google Chrome 69 Windows 10 Windows 10

    博主有研究AIR的编译么

    1. 鸽子 鸽子 QQbrowser QQbrowser Android 8.0 Android 8.0

      操作步骤和这个教程基本上是一样的

  2. pylbx Google Chrome 68 Google Chrome 68 Windows 8.1 Windows 8.1

    博主,有QQ,微信等的联系方式?我QQ:449817,有空加下,想付费找你定制一下功能

  3. Wong Google Chrome 64 Google Chrome 64 Windows 7 Windows 7

    我也是空白的

    1. Wong Google Chrome 64 Google Chrome 64 Windows 7 Windows 7

      编辑器设置如博主您一样设置了,运行在浏览器打开后是空白的。。请问怎么解决

      1. 鸽子 鸽子 Google Chrome 65 Google Chrome 65 Windows 10 Windows 10

        肯定还是有步骤错了,仔细查一下

  4. Galea UC Browser 11 UC Browser 11 iPhone iOS 11.4 iPhone iOS 11.4

    博主,请问第七步 项目配置 怎么输出

    1. 鸽子 鸽子 Google Chrome 65 Google Chrome 65 Windows 10 Windows 10

      选择源码scratch.as

  5. nini Google Chrome 67 Google Chrome 67 Mac OS X 10.13 Mac OS X 10.13

    你好,博主,我编译出来选不了中文,另外也没有scratch自带的素材是怎么回事呢?

    1. 鸽子 鸽子 Google Chrome 67 Google Chrome 67 Windows 10 Windows 10

      将语言包和素材库放入scratch统计目录中,相关代码好像是在Server.as里。

  6. 匿名 Google Chrome 64 Google Chrome 64 Windows 10 Windows 10

    请问Scratch2.0检查更新后下载了哪些文件?存放在哪里?谢先。

    1. 鸽子 鸽子 Google Chrome 64 Google Chrome 64 GNU/Linux GNU/Linux

      检查更新什么意思?

  7. 牛牛 Firefox 57 Firefox 57 Windows 7 Windows 7

    博客不错,加油 [❤.❤]

  8. aaa Google Chrome 61 Google Chrome 61 Windows 10 Windows 10

    博主大牛!

    1. 鸽子 鸽子 Google Chrome 64 Google Chrome 64 GNU/Linux GNU/Linux

      小菜比 [..^v^..]

  9. eureka WebView 4 WebView 4 Android 6.0 Android 6.0

    [*^v^*] 谢谢博主

    1. 鸽子 鸽子 Mozilla Compatible Mozilla Compatible iPhone iOS 8.0.2 iPhone iOS 8.0.2

      不客气

  10. /dy Google Chrome 59 Google Chrome 59 Windows 10 Windows 10

    应该是执行 .\gradlew build -Ptarget=11.6
    (11.6可替换为其他版本号)

    1. 鸽子 鸽子 QQbrowser QQbrowser Android 5.1 Android 5.1

      使用默认版本也可以

  11. cctv QQbrowser 9 QQbrowser 9 Windows 7 Windows 7

    [..^v^..]

    1. 鸽子 鸽子 QQbrowser QQbrowser Android 5.1 Android 5.1

      怎么啦

  12. /dy Google Chrome 59 Google Chrome 59 Windows 10 Windows 10

    使用fb编译出来是白屏?能将你处理好的fb项目代码发一下吗?

    1. 鸽子 鸽子 Google Chrome 59 Google Chrome 59 Windows 7 Windows 7

      这个问题应该是你没有选择框架链接为“合并到代码中”

      1. /dy Google Chrome 59 Google Chrome 59 Windows 10 Windows 10

        编译出来了

        1. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          你好,能发一下吗?

        2. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          我的编译不出来,报错,属性revision未定义,真不知道是怎么回事,能给我看看吗,谢谢!很急

        3. 会飞的羊LQ Google Chrome 59 Google Chrome 59 Windows 7 Windows 7

          我的也是白屏的。请教一下您是如何解决的

        4. 鸽子 鸽子 Google Chrome 61 Google Chrome 61 Windows 7 Windows 7

          没有编译成功,或者没配置好IDE

      2. /dy Google Chrome 59 Google Chrome 59 Windows 10 Windows 10

        scris.top/geonline

        1. /dy Google Chrome 59 Google Chrome 59 Windows 10 Windows 10

          应该是scris.top/GeOnline/

      3. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

        你好,我的这个报属性revision未定义,请问这是怎么回事呀

      4. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

        打开了,能发一下您的改过后的源码项目吗?

        1. 鸽子 鸽子 Google Chrome 60 Google Chrome 60 GNU/Linux GNU/Linux

          抱歉这是商业项目不能发..

    2. Wong Google Chrome 64 Google Chrome 64 Windows 7 Windows 7

      请问您是哪里解决

  13. 鸽子 鸽子 Google Chrome 59 Google Chrome 59 Windows 7 Windows 7

    [0_0]

    1. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

      博主,请指教 Scratch.as文件1266行报错,属性revision未定义

      1. 鸽子 鸽子 Google Chrome 60 Google Chrome 60 GNU/Linux GNU/Linux

        编译器参数没配置好,实在不行你把revision相关的代码删掉

        1. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          编译器参数就是您给的参数

        2. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          我根据您的说法,我把报错的那行代码注释了,启动在浏览器中什么都没有,空白的,我是第一次弄这个东西,请指教

        3. 鸽子 鸽子 Google Chrome 60 Google Chrome 60 GNU/Linux GNU/Linux

          好像把offline改成True就可以了

        4. 鸽子 鸽子 Google Chrome 60 Google Chrome 60 GNU/Linux GNU/Linux

          也许你根本没编译好

        5. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          报错的这个文件是Scratch.as文件的1266行,至于您说的offline是在哪个文件中呢?至于编译,他不应该是自动编译的吗,想Java一样,自动编译啊,或者您你能发一下您编译好的项目给我看看吗!10056747@qq.com,跪谢!

        6. 鸽子 鸽子 Google Chrome 60 Google Chrome 60 GNU/Linux GNU/Linux
        7. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          连接打不开

        8. 刘进洪 Firefox 54 Firefox 54 Windows 10 Windows 10

          谢谢博主,已经可以运行了