So I decided to make this post as there is some confusion over how to create a Zooper Skin APK. There is an official tutorial on the website, but I think it could be done better, so I’ve tried.
Things you will need:
- zwapk.zip files of you templates (saved in sdcard/ZooperWidget/APKZips)
- a nice icon (Tip: create a 512×512 version and use this tool to get the various resolutions needed)
- an IDE (I use AIDE, but you can use eclipse with ADT or android studio)
- Android Market developer account
- Zooper Sample project (Download zip from here)
- Extract the sample project and rename it.
- Extract everything from the assets folder in the zwapk.zip files to the assets folder of the project (this should include all fonts, bitmaps, iconsets, etc that you’ve used).
- Extract the ‘drawable’ folders from the icon creator tool to the project’s /res/ folder.
- Import/open the project in your IDE and rename the package name like com.company.zwskin.skinname (changing the company and the skinname)
- Open res/values/strings.xml and change the “app_name” to what your skin is called.
- Open res/values/zooper.xml and change the “zooper_pack_desc” and “zooper_pack_author” to a brief description and your name. Change “zooper_pack_allowsave” to 0 if you don’t want users to be able to save their own version of the skin.
- Edit the AndroidManifest.xml
- Check that the package name is what you set above in 4 (com.company.zwskin.skinname)
- Set version to 100 and 1.00 (if it’s the initial release)
- If it’s a free skin you can jump to 8.
- If you want to create a paid skin you need to uncomment the <provider/> section (delete the “<!–” and “–>” bit on either side) and edit.
- Change the “android:authorities=”edit manually to your package name+zwprovider (e.g. com.company.zwskin.skinname.zwprovider).
- Refresh project.
- Compile apk.
- Test on your device.
- Load to play store.
The manifest for a paid skin should looks like this:
<?xml version="1.0" encoding="utf-8"?><!-- == Sample Zooper Widget Skin == Please include in the app name or in the package the word "zwskin" --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.zwskin.skinname" android:versionCode="100" android:versionName="1.00"> <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <!-- START Zooper Widget definitions --> <!-- This is the templates activity, if you are developing a skin project for a launcher or something else do the following: - Add both activity and provider (so copy from START to END in your AndroidManifest.xml) - Copy the source tree org.zooper.zwskin in your src directory - Copy zooper.xml in res/values - Add template and resources to the assets folder - If skin is commercial also uncomment <provider> below and follow instructions --> <activity android:name="org.zooper.zwskin.ZooperTemplate" android:exported="true"> <intent-filter> <action android:name="org.zooper.zw.TEMPLATES" /> </intent-filter> </activity> <!-- COMMERCIAL SKINS ONLY: - Uncomment provider entry - Set android:authorities="PACKAGENAME.zwprovider" If package is "my.pkg.name.zwskin.sample" set it to "my.pkg.name.zwskin.sample.zwprovider" --> <provider android:name="org.zooper.zwskin.TemplateProvider" android:authorities="com.company.zwskin.skinname.zwprovider "/> <!-- END Zooper Widget definition --> </application> </manifest>
If you have any issues with things still not showing up right, try removing the .jet extensions from all assets. This is not recommended by the developer though, so probably best not to do…