summaryrefslogtreecommitdiffstats
path: root/include/androidfw
diff options
context:
space:
mode:
authorMÃ¥rten Kongstad <marten.kongstad@sonymobile.com>2014-01-31 14:01:52 +0100
committerZoran Jovanovic <zoran.jovanovic@sonymobile.com>2014-02-03 09:47:16 +0100
commit65a05fd56dbc9fd9c2511a97f49c445a748fb3c5 (patch)
treef832a1d344dc2102ebbf247a46dcd2839761161a /include/androidfw
parentc064a1b5d9a68bb5513e6ed64a067ab822e98764 (diff)
downloadframeworks_base-65a05fd56dbc9fd9c2511a97f49c445a748fb3c5.zip
frameworks_base-65a05fd56dbc9fd9c2511a97f49c445a748fb3c5.tar.gz
frameworks_base-65a05fd56dbc9fd9c2511a97f49c445a748fb3c5.tar.bz2
New command line tool 'idmap'
Introduce a new tool 'idmap' to handle generation and verification of idmap files. The tool is modelled on 'dexopt', and is intended to be used similarly, notably by 'installd'. See cmds/idmap/idmap.cpp for further documentation on 'idmap'. Note: this commit is interdependent on a commit in project build/ to add 'idmap' to PRODUCT_PACKAGES. Note: the changes to androidfw are only stubs. The actual implementation will be provided in Runtime resource overlay, iteration 2. Change-Id: I7131b74ece1e46c8a9c0a31d103e686aa07da2bb
Diffstat (limited to 'include/androidfw')
-rw-r--r--include/androidfw/AssetManager.h8
-rw-r--r--include/androidfw/ResourceTypes.h25
2 files changed, 31 insertions, 2 deletions
diff --git a/include/androidfw/AssetManager.h b/include/androidfw/AssetManager.h
index a010957..e0c6183 100644
--- a/include/androidfw/AssetManager.h
+++ b/include/androidfw/AssetManager.h
@@ -69,6 +69,7 @@ struct ResTable_config;
*/
class AssetManager : public AAssetManager {
public:
+ static const char* RESOURCES_FILENAME;
typedef enum CacheMode {
CACHE_UNKNOWN = 0,
CACHE_OFF, // don't try to cache file locations
@@ -218,6 +219,13 @@ public:
*/
void getLocales(Vector<String8>* locales) const;
+ /**
+ * Generate idmap data to translate resources IDs between a package and a
+ * corresponding overlay package.
+ */
+ bool createIdmap(const char* targetApkPath, const char* overlayApkPath,
+ uint32_t targetCrc, uint32_t overlayCrc, uint32_t** outData, uint32_t* outSize);
+
private:
struct asset_path
{
diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h
index 6799766..7779f7f 100644
--- a/include/androidfw/ResourceTypes.h
+++ b/include/androidfw/ResourceTypes.h
@@ -1545,9 +1545,19 @@ public:
// Return value: on success: NO_ERROR; caller is responsible for free-ing
// outData (using free(3)). On failure, any status_t value other than
// NO_ERROR; the caller should not free outData.
- status_t createIdmap(const ResTable& overlay, uint32_t originalCrc, uint32_t overlayCrc,
+ status_t createIdmap(const ResTable& overlay, uint32_t targetCrc, uint32_t overlayCrc,
void** outData, size_t* outSize) const;
+ status_t createIdmap(const ResTable& overlay,
+ uint32_t targetCrc, uint32_t overlayCrc,
+ const char* targetPath, const char* overlayPath,
+ void** outData, uint32_t* outSize) const
+ {
+ (void)targetPath;
+ (void)overlayPath;
+ return createIdmap(overlay, targetCrc, overlayCrc, outData, outSize);
+ }
+
enum {
IDMAP_HEADER_SIZE_BYTES = 3 * sizeof(uint32_t),
};
@@ -1556,7 +1566,18 @@ public:
// This function only requires the idmap header (the first
// IDMAP_HEADER_SIZE_BYTES) bytes of an idmap file.
static bool getIdmapInfo(const void* idmap, size_t size,
- uint32_t* pOriginalCrc, uint32_t* pOverlayCrc);
+ uint32_t* pTargetCrc, uint32_t* pOverlayCrc);
+
+ static bool getIdmapInfo(const void* idmap, size_t size,
+ uint32_t* pTargetCrc, uint32_t* pOverlayCrc,
+ String8* pTargetPath, String8* pOverlayPath)
+ {
+ if (*pTargetPath)
+ *pTargetPath = String8();
+ if (*pOverlayPath)
+ *pOverlayPath = String8();
+ return getIdmapInfo(idmap, size, pTargetCrc, pOverlayCrc);
+ }
void print(bool inclValues) const;
static String8 normalizeForOutput(const char* input);