Commit Graph

9 Commits

Author SHA1 Message Date
Ying Wang d358f826e7 Use direct dependency on the JNI so files.
With the order-only dependency if the jni so files is updated,
make won't rebuild the system.img, which has dependency only on the apk
file.

Bug: 24865400
Change-Id: I9d5bee82b8a712a2c24dabaa0cd4c50174ea219f
2015-10-15 17:50:06 -07:00
Ying Wang 1fb0152ff7 Don't extract jni from prebuilt apks.
- We don't need LOCAL_PAGE_ALIGN_JNI_SHARED_LIBRARIES now, for we always
  page-align jni shared libraries and store them umcompressed.
- For prebuilt apks, we don't extract jni any more; Instead we always run
  uncompress-shared-libs on them.
- For apks built from source, we still install the jni separately, because
  that way multiple apks can share the same jni and it saves space.

With this change, for most prebuilt apks, we don't need to specify
LOCAL_PREBUILT_JNI_LIBS ("@lib/<abi>/foo.so") any more, for the build
system automatically replaces the embedded jni with uncompressed files;
But if a prebuilt is a fat apk (i.e. containing jni not needed by the
current product architecture), you still need LOCAL_PREBUILT_JNI_LIBS to
specify what jni to keep. Otherwise all embedded jni will be replaced with
uncompressed files, that wastes space.

Bug: 8076853
Change-Id: Ic3666dc72bf17cd293787414dd185470b365f967
2015-06-01 19:19:45 -07:00
Ying Wang 97dfa3177d Revert "Don't extract jni from prebuilt apks."
This reverts commit 3797466fbd.

Bug: 20810492
Bug: 20811499
Change-Id: Ic922d9daccc4550db489c0f3d4ad6b4ff85b5e60
2015-05-04 18:39:46 +00:00
Ying Wang 3797466fbd Don't extract jni from prebuilt apks.
- We don't need LOCAL_PAGE_ALIGN_JNI_SHARED_LIBRARIES now, for we always
  page-align jni shared libraries and store them umcompressed.
- For prebuilt apks, we don't extract jni any more; Instead we always run
  uncompress-shared-libs on them.
- For apks built from source, we still install the jni separately, because
  that way multiple apks can share the same jni and it saves space.

With this change, for most prebuilt apks, we don't need to specify
LOCAL_PREBUILT_JNI_LIBS ("@lib/<abi>/foo.so") any more, for the build
system automatically replaces the embedded jni with uncompressed files;
But if a prebuilt is a fat apk (i.e. containing jni not needed by the
current product architecture), you still need LOCAL_PREBUILT_JNI_LIBS to
specify what jni to keep. Otherwise all embedded jni will be replaced with
uncompressed files, that wastes space.

Bug: 8076853
Change-Id: Icf07e0998ac3602e6e05e80fed836fbafca33e01
2015-05-01 16:09:58 -07:00
Nick Kralevich 445e111def Error out if LOCAL_PREBUILT_JNI_LIBS and LOCAL_CERTIFICATE := PRESIGNED are used
LOCAL_PREBUILT_JNI_LIBS is an indication to the build system that
all shared libraries should be deleted from an APK, and the shared
libraries should be placed in the application's /system/app directory.

However, using this option isn't appropriate for pre-signed APKs.
Any attempt to delete files from a pre-signed APK will corrupt it's
signature or waste disk space.

Bug: 20247329
Bug: 8076853
Bug: 1162500
Change-Id: I89ce8f06d3889dd79dd9ffe86fc5fa60814498ad
2015-04-18 15:11:36 -07:00
Ying Wang e66d7c1de0 Support LOCAL_PREBUILT_JNI_LIBS in unbundled build.
Package up LOCAL_PREBUILT_JNI_LIBS when you do tapas (apps_only) build.

Change-Id: Ibdc920fee22d4940eebee080a940e8e9492c06cb
2015-02-12 11:29:41 -08:00
Ying Wang af9757e849 New installation path for apks and their JNIs.
Apk's path is changed to <parent_dir>/MyApp/MyApp.apk;
JNI path is changed to <parent_dir>/MyApp/lib/<arch_name>/libfoo.so.
Symlinks of JNIs are changed accordingly.

Bug: 16319961
Change-Id: Ib3b2309c95fa9aea27837fcc29e28d990b04747b
2014-07-18 16:26:24 -07:00
Dan Willemsen 731322a90d Fix partition_tag usage in install_jni_libs
This was expanding to TARGET_VENDOR_OUT_SHARED_LIBRARIES which was
empty. It should be expanding to TARGET_OUT_VENDOR_SHARED_LIBRARIES.

Change-Id: I32fe22e3e0b91a6d41f6a09a33d3ce2e4061d078
2014-07-01 18:56:31 -07:00
Ying Wang 8e20ef6205 Support to add JNI of both archs in multilib build.
Use "LOCAL_MULTILIB := both" to install jni libraries of both archs in
multilib build.
The build system will package jni of both archs to the apk, or install
them to the right location on the system image and create symlinks,
extract .so files from prebuilt apk, etc if appropriate.

Bug: 15849902
Change-Id: I7e147b5a47db476584c38250de7b36c75ea40d81
2014-06-25 09:07:01 -07:00