曹瑩瑩 張金勇



【摘 要】本文基于Windows系統環境,以置入“小美”和“小德”卡通形象為例,介紹了通過反編譯AndroidAPK實現ScratchJr角色個性化定制的全過程。
【關鍵詞】反編譯Android APK;ScratchJr角色個性化定制
【中圖分類號】TP311.5 ??????【文獻標識碼】A
【文章編號】2095-3089(2019)11-0263-01
【問題】
ScratchJr是Scratch的姊妹版,是MIT媒體實驗室的Scratch團隊專為5-7歲兒童設計的圖形化編程工具,可以讓孩子像搭積木一樣“堆疊”創造帶交互性的故事、動畫、游戲、音樂等,是小學低年級開展STEAM編程啟蒙教育的不二選擇。
筆者在進行《基于ScratchJr的小學低年級STEAM編程課程構建研究》課題研究過程中,發現ScratchJr不允許導入外部圖像資源擴充角色,只能選擇資源庫的有限角色使用,無法實現角色的隨意個性化定制。雖然ScratchJr允許通過內置的繪圖編輯器創造個性化角色,對于小學低年級學生來說,可以進行簡單個性化角色的創造,但仍然不能滿足低年級學生對于個性化角色的使用需求。
因此,筆者通過多次實踐,通過反編譯Android APK實現了外部圖像資源的導入,從而實現了ScratchJr角色的任意個性化定制,大大提升了教學過程中的場景搭建能力。
通過上述方式,筆者的課題實現了以青島崇德小學“小美”和“小德”卡通形象作為故事主人公,采用STEAM項目式案例教學,共有“預備”、“動畫”和“故事”和“游戲”四個階段性專題和10個案例項目,每個項目都以【創設情境】、【項目探究】、【極限挑戰】和【創意激發】四個環節進行,對人文、數學、科學、信息等多個領域核心素養教育進行創新設計和有機整合,形成了一門充滿校園文化承載的編程教育啟蒙課程。
【工具】
1.APK文件逆向工程工具軟件:apktool
https://ibotpeaches.github.io/Apktool
2.JDK內置APK簽名工具:jarsigner
3.JOSN編輯器:
https://www.bejson.com/jsoneditoronline/
4.PNG圖片轉SVG工具:
https://www.bejson.com/convert/image_to_svg
5.圖像處理工具:Photoshop
【步驟】
1.下載ScratchJr APK文件。
ScratchJr目前最新版本是1.2.4,可以通過百度搜索或訪問ScratchJr官方網站(http://www.scratchjr.org)下載。
〖XC23.JPG;%22%22〗
2.訪問Oracle網站,下載安裝Java SDK,下一步我們會用到其內置的APK文件簽名工具jarsigner。
3.使用apktool反編譯APK文件。
訪問github網站,下載 apktool.bat與apktool.jar 文件,并將它們放在同一目錄下。
通過CMD運行指令 apktool d scratchjr1.2.4.apk,將 apk 文件解包,默認解包到當前目錄下的同名文件夾下。
4.添加角色圖片資源。
筆者所在的青島崇德小學非常注重校園美德文化建設,設計打造的“小美”和“小德”卡通形象受到學生們的熱烈歡迎,成為推廣實施美德教育的有效載體。
〖XC24.JPG;%22%22〗
〖XC25.JPG;%22%22〗
通過反復研究發現,ScratchJr在兒童美學方面下了很大功夫,內置的角色資源在篩選預覽時使用PNG格式,最終舞臺呈現時使用SVG格式,做到了舞臺背景透明而且放大不失真的最佳效果。PNG和SVG角色圖片資源分別存放在assets\\HTML5目錄pnglibrary和svglibrary文件夾內,通過media.json文件進行資源數據規格描述。
(1)使用Photoshop軟件裁剪切割得到PNG格式的角色資源包,使用PNG圖片轉SVG工具得到SVG格式的角色資源包。將準備好的PNG角色圖片資源放置到pnglibrary文件夾下,SVG角色圖片資源放置到svglibrary文件夾下。
(2)通過在線JOSN編輯器修改并替換數據描述文件media.json。JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式,采用完全獨立于編程語言的文本格式來存儲和表示數據,層次結構簡潔清晰,易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
注意以下事項:角色資源圖片的寬、高尺寸務必精確,否則會導致在ScratchJr使用時比例失調;不能破壞JSON數據文件的格式,可以仿照已有的角色資源描述格式逐個添加,否則會導致ScratchJr無法讀取角色資源;可以格式化JSON數據以方便進行編輯處理,但最終存儲要使用壓縮JSON格式,清除所有空白字符。
〖XC26.JPG;%29%28〗
5.通過CMD運行指令apktool b app -o other.apk(app 指需要打包的文件夾,-o other.apk 表示生產新文件),重新打包apk。
〖XC27.JPG;%29%28〗
6.剛剛打包生成的scratchjr1.2.5.apk無法進行正常安裝,必須進行重新簽名。
(1)利用JDK下的keytool工具生成簽名證書keystore。通過CMD運行指令:keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore,填寫相關信息,記好秘鑰口令。
(2)利用生成的簽名證書abc.keystore對scratchjr1.2.5.apk進行簽名。通過CMD運行指令:jarsigner -verbose -keystore abc.keystore -signedjar scratchjr1.2.5_cyy.apkscratchjr1.2.5.apk abc.keystore
7.在安卓平板或手機安裝scratchjr1.2.5_cyy.apk,此時角色庫里就有了“小美”和“小德”卡通形象,可以在舞臺中隨意添加使用了。到此大功告成!
【總結】
通過反編譯手段實現ScratchJr角色個性化定制,從而實現了教學場景搭建的多樣化需求,為STEAM編程啟蒙教育賦予了更多的可能性,對于滿足低年級學生的個性化學習需求具有重大意義。
最后,強調說明以下事項:(1)本文反編譯方法不僅可以實現ScratchJr中角色的個性化訂制,舞臺背景、聲音資源等都可以實現個性化訂制。(2)受限于蘋果iOS系統的封閉性,本文反編譯方法僅適用Android安卓系統。(3)本文反編譯方法僅限于編程教育教師本人用于課堂教學過程,工具和方法僅供學習交流,不可用作它途。(4)“小美”和“小德”卡通形象版權歸青島崇德小學所有,未經允許不可私自用于其它商業用途。