android模塊化
1. Android BSP 開發中哪個模塊比較有含金量
對硬體平台架構之類的比較熟悉,然後是對移動/TV平台熟悉,再一個重要的就是音頻,視頻,以及android BSP framework。
音頻驅動,hal,framework,CODEC熟悉,以及語音調優,AEC,noise cancer, tunning的技術。
Android BSP, 基本可以理解為:
linux 驅動;
linux BSP (CPU,電源管理比驅動更深入的硬體支持包);
Android HAL層;
2. android 模塊化 application應該放在哪
通過Intent你可以把一個應用當作你的高級庫,使你的代碼模塊化易復用。例如:Android主屏幕中的撥號功能,就是通過Intent調用的撥號程序。 * method queries the package manager for installed packages that can * respond to an intent with the specified action. If no suitable package is * found, this method returns false.** @param context The application's environment. * @param action The Intent action to check for availability.** @return True if an Intent with the specified action can be sent and * responded to, false otherwise.*/public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() 0;}使用方法如下:@Overridepublic boolean onPrepareOptionsMenu(Menu menu) { final boolean scanAvailable = isIntentAvailable(this, com.google.zxing.client.android.SCAN); MenuItem item; item = menu.findItem(R.id.menu_item_add); item.setEnabled(scanAvailable); return super.onPrepareOptionsMenu(menu);}在這個例子中,如果條形碼掃描應用沒有安裝菜單會被置灰,不可用。 另用簡單的方式是在調用startActivity()時捕獲ActivityNotFoundException, 但是這種方式只能異常發生後對用戶進行提醒,不能提前告知用戶,它可以用在提醒用戶安裝缺失應用的場合,你可引導用戶去應用市場上去下載安裝。
3. android studio中以library形式的模塊在androidmanifest文件中怎麼寫
是的,不管是eclipse還是studio,都是在AndroidManifest.xml中增加許可權。Android Studio 是一個Android開發環境,基於IntelliJ IDEA. 類似 Eclipse ADT,Android Studio 提供了集成的 Android 開發工具用於開發和調試。在IDEA的基礎上,Android Studio 提供 : 1. 基於Gradle的構建支持。 2. Android 專屬的重構和快速修復。 3. 提示工具以捕獲性能、可用性、版本兼容性等問題。 4. 支持ProGuard 和應用簽名。 5. 基於模板的向導來生成常用的 Android 應用設計和組件。 6. 功能強大的布局編輯器,可以拖拉 UI 控制項並進行效果預覽。
4. 如何使用ApkPlug進行Android平台下模塊化開發
步驟1:注冊ApkPlug官網賬號:
打開Apkplug官網後,點擊右上角的「注冊」,在跳轉頁面填入相關信息,注冊界面如下:
確認後注冊成功,使用你的賬號登錄網站。你就可以用Apkplug開發應用了
END
步驟2:開發插件
Apkplug中的插件也是一個完整的apk,它與普通應用的區別有以下3點:
1, 插件assets目錄下有一個plugin.xml文檔,通過它可判斷一個工程是主應用還是插件。
2, 插件有一個入口類BundleActivator
3, 插件會外部引用一個osgi.jar文件
開發插件的步驟有如下4步:
1,引入osgi.jar庫文件
Apkplug中插件需要導入的庫文件只有一個osgi.jar。
導入osgi.jar庫文件需要注意一下
osgi.jar文件只能引用不能編譯到apk文件中,否則會出現類沖突的情況
異常代碼:had used a different Lorg/osgi/framework/BundleActivator; ring pre-verification。
osgi.jar包導入方法:
這文件在Apkplug SDK中可以找到。2,編寫插件入口類BundleActivator
插件啟動時首先調用BundleActivator,其功能類似android中的application類。
public class SimpleBundle implements BundleActivator
{
private BundleContext mcontext = null;
public void start(BundleContext context) throws Exception
{
System.err.println("你好我是插件,我將為你展示啟動acitivty我已經啟動了 我的BundleId為:"+context.getBundle().getBundleId());
}
public void stop(BundleContext context)
{
System.err.println("你好我是插件,我被停止了 我的BundleId為:"+context.getBundle().getBundleId());
}
}
3,編寫plugin.xml配置文件
plugin.xml 是一個配置表,它跟AndroidManifest.xml作用類似。 plugin.xml文檔放置在assets中即可 重要屬性說明: Bundle-Name 插件名稱 Bundle-SymbolicName 插件包名 -與應用packagename可一一對應 Bundle-Version 插件版本 -1.0.0 Bundle-Activator 插件入口 -與Appliction 類似 Bundle-Activity 插件界面 -多個Activity可用 , 分割 Bundle-Service 插件Service -多個Service可用 , 分割 (v2.0.0新增) Bundle-Receiver 插件廣播 -多個廣播類可用 , 分割 (v2.0.0新增)
4, 編譯生成插件apk文件
插件工程中添加的文件目錄結構如下:
最後編譯運行插件工程,生成的apk文件即為插件文件
END
步驟3:開發主應用
Apkplug 主應用開發分兩步集成:
1. 獲取主應用授權AppAuth。
登錄賬號進入Apkplug後台後,切換到「應用授權頁面」,按要求填寫好應用信息,然後確定,你就擁有了一個等待開發的應用授權AppAuth。應用授權界面如下:
進入「授權列表」頁面,點擊「查看詳情」鏈接,進入「應用詳情界面」,就可以看到已申請的AppAuth,點擊其後面的「復制」,即可直接復制AppAuth,如下圖所示
2. 對接Apkplug SDK 導入相關庫文件。
①配置應用許可權
主應用需要幾個基礎的許可權配置,請將以下的幾個許可權加入到主應用的AndroidManifest.xml中。
<!-- 插件平台需要的許可權! -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
另外將一下加入到<application></application>節點中
<!-- 插件平台需要的配置! -->
<activity
android:name="org.apkplug.app.apkplugActivity"
android:theme="@style/android:Theme.Light"
android:configChanges="orientation|keyboardHidden"
/>
最後將我們從Apkplug管理後台申請到的AppAuth加入到配置文件中。
<meta-data android:name="apkplug-auth" android:value="xxxxxxxx" ></meta-data>
註:由於3.2.2節中我們直接復制了AppAuth,此處直接粘貼到AndroidManifest文檔中。
如下圖:
②導入SDK庫文件
主應用需要導入兩個文件,將其放入libs目錄中即可。
1, libndkfoo.so
2, Bundle2.0.0.jar
如下圖:
這兩個庫文件在Apkplug SDK中可以找到。
然後:
主應用啟動Apkplug最簡只需要一段代碼即可,建議在Application中啟動框架。
FrameworkInstance frame=FrameworkFactory.getInstance().start(List<BundleActivator>,Context);
將上一步驟開發好的插件apk,放置在主應用工程里的assets路徑下。
如下圖:
步驟4:啟動主應用
最後啟動主應用即可。簡單的插件化apk的方法就講完了,有興趣的關注我,下次講雲端託管插件實現應用內更新。
5. android studio 多個模塊相互依賴怎麼混淆
1.SDK項目多模塊,編譯後每個模塊自己生成了1個jar包。但是需求是只對外發布一個jar包,需要進行合並多個jar包。
2.生成的jar包中因為模塊引入了網路地圖定位導致jar包內有不需要的asset文件雜項
3.多模塊的混淆問題
6. Android studio怎麼為應用程序添加模塊依賴
1進行添加相關的依賴包模塊,就需要打開Android studio的程序,進行開發界面中之後,點擊菜單「file」》「project structure」。2打開project structure中,在mole中選中一個項目。3進入到該項目中點擊中間位置中的「Dependencies」後,進行點擊添加。可以看看安卓巴士教程:http://www.apkbus.com/thread-463755-1-1.html
7. 如何從成型的android應用中抽離獨立模塊
1. 將開發的第三方應用比如應用名為 VTest,項目結構如下圖所示:
將項目移到Android系統源碼:workspace_Android/packages/apps路徑下 [workspace_Android為Android工程,名字是自定義命名的],注意Android工程首先必須是全編過的。
2. 在當前目錄(workspace_Android/packages/apps/VTest)下新建一個 Android.mk 文件(這個文件的作用自己google),當然也可以從已有的系統項目,比如Browser中拷貝Android.mk文件然後修改。
修改如下所示:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
# Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := VTest
LOCAL_CERTIFICATE := platform
LOCAL_STATIC_JAVA_LIBRARIES := MapAPI
LOCAL_SHARED_LIBRARIES := MapApiEngine
include $(BUILD_PACKAGE)
# ============================================================
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=MapAPI:libs/mapapi.jar
LOCAL_PREBUILT_LIBS :=MapApiEngine:libs/armeabi/libBMapApiEngine_v1_3_5.so
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)
[說明]:其中 LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_SHARED_LIBRARIES 為靜態庫和共享庫,其中的區別自己搜索,這里不再闡述。
8. 如何實現一個簡單的Android推送模塊
是這樣子的,我跟你說下流程吧: 一、在素材管理裡面,新建推送的圖文或者圖片文字消息 二、點擊高級功能→編輯模式→自動回復(設置)→關鍵字自動回復→增加規則 規則名亂寫沒事 →關鍵字(也就是你要設置的數字或者字母)→選擇右下角的圖文或者圖片,選擇你編輯好的素材 →點保存吧,然後就ok啦 希望能看的明白
9. android 插件化怎麼把幾個模塊一起打包
1、java 裡面直接把 .class 文件打包到 .jar 文件裡面就可以了,但是 Android 的 Dalvik VM 是不認 Java 的 byte code 的,所以不能直接這么打包,而要用 dx 工具轉成 Dalvik byte code 才可以。當然,dx 工具轉了之後,jar 包裡面就不是 .class 文件了,而是 .dex 文件。 2、可以做成server 利用broadcast,pendingIntent,Intent去通信,再provider數據共享過濾器設置下就能實現這樣的效果 3、國內的各大應用市場的安卓客戶端就是這么做的,由市場客戶端可以下載各個功能客戶端,在市場里可以對這些功能客戶端進行更新、刪除、打開操作。其實如果需求是定製化的應用市場,比如「辦公應用市場」,在功能性的規則介面定義好之後,可以增加更多的業務邏輯,比如說「從市場客戶端開啟功能客戶端的具體某個頁面」,或者「從市場客戶端調用功能客戶端的某個功能」。
10. 如何將android模塊生成apk
執行:$ cd <android>源碼目錄 $. build/envsetup.sh $ mmm packages/apps/<xxx> 你所要編譯的模塊或者你直接打make也可以,模塊編譯後會在out/target/proct/generic/system/app下生成對應的.apk包