ubuntu 下 使用android 源码编译生成apk实现静默安装
来源:互联网 发布:淘宝网店运营策划案 编辑:程序博客网 时间:2024/05/20 22:26
转:http://blog.csdn.net/sdvch/article/details/16832629
http://blog.csdn.net/dzy_mails/article/details/51909112
http://blog.csdn.net/mwq384807683/article/details/71512505
http://blog.csdn.net/xiaowan0404/article/details/52166969
编译生成apk大体步骤
1.源码目录新建文件夹,放你的项目
2.在源码目录配置编译环境
source build/envsetup.sh
3.lunch
选择自己用的开发板
4.进入你要编译项目的目录:mm
5.编译成功后会提示apk存放的路径
静默安装代码
1、首先必须实现一个观察者的类,来监听apk安装成功或者失败,所以我们先写一个类去继承IPackageInstallObserver.Stub,
由于IPackageInstallObserver.Stub不是开放api,所以我们自己必须在改类前面加import Android.content.pm.IPackageInstallObserver;
具体代码如下:
class PackageInstallObserver extends IPackageInstallObserver.Stub { public void packageInstalled(String packageName, int returnCode) { // 该方法里面可以根据returnCode的值判断apk安装成功或者失败 // 1表示成功 0表示失败 if (returnCode == 1) { Log.e(TAG, packageName + " install Success"); } else { Log.e(TAG, packageName + "install fail "); } } }
2、现在就来看看静默安装的方法了
其中方法中的参数packageName是你需要安装的应用apk的包名 , path表示apk在本地所在的路径
...import android.content.pm.IPackageInstallObserver;import android.content.pm.IPackageManager;....public void SilentInstall(String packageName, String path) { Uri uri = Uri.fromFile(new File(path)); int installFlags = 0; PackageManager pm = getPackageManager(); try { PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); if (packageInfo != null) { installFlags |= PackageManager.INSTALL_REPLACE_EXISTING; } } catch (NameNotFoundException e) { Log.e(TAG, "NameNotFoundException = " + e.getMessage()); } PackageInstallObserver observer = new PackageInstallObserver(); // PackageInstallObserver // 就是1中实现的观察者类 pm.installPackage(uri, observer, installFlags, packageName); }
以上源码在android studio 上运行不了,要掉进源码目录下编译生成apk
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />编写Android.mk
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := InstallActivityLOCAL_CERTIFICATE := platforminclude $(BUILD_PACKAGE)
Android.mk引用第三方jar,aar文件
http://blog.csdn.net/xiaowan0404/article/details/52166969
http://blog.csdn.net/dzy_mails/article/details/51909112
android studio编写的app,Android.mk放在app/src/main目录下,在该目录下新建libs目录,用于存放第三方jar包和aar文件,
查看app/src/main目录下的build.gradle文件,在这个文件中会写明在开发中引用了哪些包,如果不是android源码中带有的(如android-support-v4,android-support-v7-xxx等),那么要去android studio的安装目录下找到这些jar包,放到app/src/main/libs/目录下(没有就自己创建一个)
android studio 查看第三方jar 目录
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS) (经典开头两句)LOCAL_PACKAGE_NAME := xxx(apk的名字,如果这个值写的是Test,那么编译出来的就是Test.apk)LOCAL_CERTIFICATE := platform (系统签名)LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/ressrc_dirs := java/LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))##声明使用的java文件和资源文件地址,如果使用到aidl,需要特别声明,常见写法如下#LOCAL_SRC_FILES += \# src/xx/xx/xx/aidl/XxxOne.aidl \# src/xx/xx/xx//aidl/XxxTwo.aidlLOCAL_MULTILIB := 32(添加这句是为了防止在编译后使用apk时,提示so是32位而不是64位导致应用fc)LOCAL_PREBUILT_JNI_LIBS_x86 := jniLibs/x86/libxxx.soLOCAL_PROGUARD_ENABLED := disabled (添加这句是为了防止在编译后使用apk时,提示找不到so库中对应的方法导致fc)#如果使用了jni就要这么写LOCAL_STATIC_JAVA_LIBRARIES += design \ android-support-v4 \ android-support-v7-appcompat \ android-support-v7-recyclerview \ recyclerview-v7 \ itextpdf(第三方包名)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += \ itextpdf:libs/itextpdf-5.5.9.jar#第三方包需要通过LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES声明LOCAL_PROGUARD_FLAG_FILES := proguard.flags ##在编译时如果提示包中有warning时,需要按照要求在文件中写dontwarn,proguard.flags需要自行创建,android studio不会创建这个文件
Android.mk
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_PACKAGE_NAME := edlgame1LOCAL_CERTIFICATE := platform#如果使用的系统的包,需要引入他们使用的资源文件,否则会提示编译资源找不到的错误LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/resLOCAL_RESOURCE_DIR += frameworks/support/v7/gridlayout/resLOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/resLOCAL_RESOURCE_DIR += frameworks/support/design/resLOCAL_RESOURCE_DIR += $(LOCAL_PATH)/ressrc_dirs := java/LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))#程序包之间最好不要有空格,有空格执行mm可能有错LOCAL_STATIC_JAVA_LIBRARIES += \android-support-design \android-support-v4 \android-support-v7-appcompat \android-support-v7-recyclerview \#第三方jar包名字,名字随便取greendao \greendao-api \glide \okhttp \okio \okhttputils \gson \recyclerviewheader#第三方aar(viewpager)文件别名,名字随便取#LOCAL_STATIC_JAVA_AAR_LIBRARIES:= viewpagerLOCAL_AAPT_FLAGS := --auto-add-overlayLOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompatLOCAL_AAPT_FLAGS += --extra-packages android.support.v7.gridlayoutLOCAL_AAPT_FLAGS += --extra-packages com.android.datetimepickerLOCAL_AAPT_FLAGS += --extra-packages android.support.v7.recyclerviewLOCAL_AAPT_FLAGS += --extra-packages android.support.design#LOCAL_AAPT_FLAGS += --extra-packages com.xyzlf.autoplay.viewpagerLOCAL_PROGUARD_ENABLED := disabledinclude $(BUILD_PACKAGE)include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += \greendao:libs/greendao-3.2.0.jar \greendao-api:libs/greendao-api-3.2.0.jar \glide:libs/glide-3.5.2.jar \okhttp:libs/okhttp-3.4.1.jar \okio:libs/okio-1.9.0.jar \okhttputils:libs/okhttputils-2.6.2.jar \gson:libs/gson-2.3.1.jar \recyclerviewheader:libs/recyclerviewheader-1.2.0.jar #viewpager:libs/viewpager-0.0.3.aar#第三方包需要通过LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES声明include $(BUILD_MULTI_PREBUILT)include $(call all-makefiles-under,$(LOCAL_PATH))
这里主要是LOCAL_STATIC_JAVA_AAR_LIBRARIES,剩下的和jar包大同小异,注意在manifest文件里minSdkVersion要满足aar文件的要求
使用greenDao 先在android studio 上Build->make Project,再把代码复制到源码目录下编译
error: Error: This attribute must be localized. (at 'text' with value '更新任务').
http://blog.csdn.net/qinyun188/article/details/7466973
编译目录结构(即 android studio 的app/src/main目录 )
libs目录
AndroidManifest.xml 配置版本号版本名,并声明为系统应用
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xx.xx" android:sharedUserId="android.uid.system" android:versionCode="13" android:versionName="13.0" >。。。。。。</manifest>
- ubuntu 下 使用android 源码编译生成apk实现静默安装
- Android下实现静默安装指定APK
- Android面试题-Android源码编译实现静默安装和静默偷拍
- android静默安装apk已经成功实现
- android静默安装apk已经成功实现
- android静默安装apk已经成功实现
- android静默安装apk已经成功实现
- Android 实现Apk的后台静默安装
- Android 无需root实现APK静默安装
- android 中静默安装APK实现代码
- android 静默安装apk
- android 静默安装Apk
- Android静默安装apk
- android静默安装apk
- android apk静默安装
- Android静默安装apk
- android APK静默安装
- Android 静默安装apk
- Android进阶之路
- 1,key 的问题
- D3 笔记八:布局
- JAVA代码片段
- 麻将胡牌算法 极速(速度接近理论极限)
- ubuntu 下 使用android 源码编译生成apk实现静默安装
- css3鼠标移动图片上去会变大
- Mathf.Clamp
- 如何判断一家软件公司是否靠谱
- PHP断点续传下载
- vim的安装与基本命令操作
- DNS 解析流程
- String、StringBuffer
- 系统自带方法设置日间和夜间模式切换