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