轉載請注明出處:csdn火木達人
一、多個jar包的處理
在開發Flash Android ANE中,Android端有可能使用第三方jar包。在Android端直接打出的jar包裡面不包含第三方庫的位元組碼。是以在生成了ane後使用會報錯。又由于Flash ane不能同時使用多個jar包,是以隻能把這個第三方庫也弄進你生成的那個jar包中。
可以使用jar指令解包和壓包
1.用 jar -xf 指令解壓第三方Jar包
2.用 jar -uf 指令合并第三方Jar包
另一種方式是把字尾名改為.rar,用解壓工具解壓,在合并這些jar檔案的位元組碼檔案,最後在壓縮改字尾名
這裡有一個别人寫的打包小工具:P013MergeJars.air
二、ane資源的處理
Flash Android ANE的資源可以分為兩種:
第一種:res資源
把res整個目錄放在Android-ARM目錄下,在打包的時候會直接打進去
使用getApplicationContext().getResources().getIdentifier(name,defType,defPackage)方法在ane中擷取資源
第二種:assets資源
把assets目錄下的資源拷貝到Flex手機項目的src根目錄下,對這工程點選右鍵-屬性-Flex建構項目-Google Android-包類容。
所有打勾的檔案都會打進apk的assets目錄下。apk打成功後可以解壓看看。
如果你的assets下包括.apk檔案,那麼就不能使用Flash Builder 工具去打包,因為Flash Builder 工具對.apk檔案檔案有過濾。及時你選擇了.apk檔案還是會剔除掉。
這時可以通過指令去打包
還一種方式通過Flash Builder 工具打包後,使用APKTool反編譯工具解壓後把檔案放入assets下,在生成新包。
反編譯:apktool d <file.apk> <dir>
如果你給定的<dir>已經存在,那麼輸入完該指令後會提示你,并且無法執行,需要你重新修改指令加入-f指令
apktool d –f <file.apk> <dir>
編譯:apktool b <dir>
dir内多了2個檔案夾build和dist,其中分别存儲着編譯過程中逐個編譯的檔案以及最終打包的apk檔案。
apktool新生成的新包時不帶簽名的,是以需要自己重新簽名:
jarsigner -verbose -keystore test.keystore -signedjar test2.apk test.apk test.keystore
用指令行建立keystore:
keytool -genkey -keystore test.keystore -keyalg RSA -validity 10000 -alias test.keystore
檢視keystore詳細資訊:
keytool -list -keystore test.keystore