Commit Graph

12 Commits

Author SHA1 Message Date
Dan Willemsen
121e284b46 Fix link_type checking
This was printing "error:", but not actually triggering an error.
Instead of trying to write a single line bash script to handle this,
move the actual check into python. This allows us to print all of the
errors for a single module before triggering the failure.

Also updates the warning format and the warn.py script to properly parse
these warning. Many of the java:sdk -> java:platform warnings are false
positives due to the lack of LOCAL_SDK_VERSION markings on prebuilts.

Individual tags can be marked as warnings now, which lets us check for
system libraries linking against vendor libraries (which won't work on
AOSP). I'm not sure this is a completely valid check, which one reason
that it's just a warning.

Test: m all_link_types (with some missing libs commented out)
Change-Id: I333e418c9a4511b7c7e826891ae481da08fbf6f9
2016-09-15 14:40:39 -07:00
Dan Albert
609fa6c0c3 Account for LOCAL_NDK_VERSION when packaging.
Previously an app built with `LOCAL_NDK_VERSION := r10` would still
be packaged with r11's library.

Test: make checkbuild
Change-Id: I1dcbd65057adaa1af605b9770283f7da994fc3cf
2016-08-08 17:13:31 -07:00
Dan Willemsen
b097fbed0a Check that NDK-built modules only link to NDK-built modules
Modules built against the NDK should only link against modules also
built against the NDK (or link to the NDK prebuilts). This patch
attempts to catch these cases, and prints a large warning when this is
violated. Once the tree is cleaned up, this will change to an error.

Change-Id: Ib6ffcc38d9161abdbe45a58af26ba429fb6f1876
2016-06-15 20:22:19 -07:00
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