天天看點

Flash Android ANE 多個jar包和資源的處理

轉載請注明出處: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