1. 程式人生 > >Android 打包aar給unity3d使用 專案心得

Android 打包aar給unity3d使用 專案心得

步驟

  • 製作androidproject
  • 修改build.gradle配置
  • 打包aar
  • 1.混淆打包aar
  • 2.jar包匯出
  • 3.在其他的android工程引入aar
  • 匯入unity專案
  • 執行unity3d輸出apk包

新建一個project

開啟AS,新建–>project
這裡寫圖片描述
切換到project專案下面
找到app Moudle
找到libs,將unity3d 提供的jar包拷貝到libs下面,右鍵 ->open Moudle setting ,選擇Moudle ,點選dependence
如圖
新增lib
選擇拷貝到libs下面的檔案unity_class.jar
MainAvtivity extends UnityPlayerActivity
注意要將setContentView()註釋掉,不載入介面
終於到設定build.gradle
開啟app的build.gradle,將apply plugin: ‘com.android.application’修改為apply plugin: ‘com.android.library’,並且刪除applicationId “com..

.*
如果需要混淆打包配置buildtypes
buildTypes {
release {
// Set minifyEnabled to true if you want to run ProGuard on your project
minifyEnabled true

        //對齊
        zipAlignEnabled true

        //移除無用的resource 檔案
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'


    }
}

不需要混淆打包就設定minifyenable false;
修改完gradle 點選Sync Now,完成之後找到 gradle project視窗,找到app(本Moudle的gradle),右鍵 refresh external project,開啟build,找到build命令,執行,生成aar檔案,檔案一般聲稱在outputs->aar裡面,debug是沒有混淆的,release是混淆的。
但是但是,我們不需要混淆所有的類檔案,這就需要找到gradle裡面的這句話
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-unity.txt’
,這裡的混淆的規則檔案在proguard-unity.txt 裡面
-keep是不混淆
-keep class *.R
不混淆R檔案
-keep class com.example.zhcase.unity3d.MainActivity{*;}
不混淆MainActivity類
-keep class com.example.zhcase.unity3d.BLEDeviceManager{*;}
-keep class com.example.zhcase.unity3d.BleDevice{*;}
-dontwarn com.unity3d.player.**
-keep class com.unity3d.player.UnityPlayerActivity{*;}
-keep class com.unity3d.player.* {

;}
不混淆com.unity3d.player包下面所有的類

大概就是這樣子 不明白的可以查下百度
類似的文章還是蠻多的

打成jar包

*在build.gradle 加入
//task makeJar(type: Copy) {
// delete ‘build/libs/mysdk.jar’
// from(‘build/intermediates/bundles/release/’)
// into(‘build/libs/’)
// include(‘classes.jar’)
// rename (‘classes.jar’, ‘mysdk.jar’)
//}
//
//makeJar.dependsOn(build)*
大概的意思就是新建一個task,刪除舊的mysdk.jar包將jar包拷貝到libs下面,mysdk是匯出的jar的包名。
還是Sync Now,在gradle project介面的other的下面找到exportjar,執行輸出jar包,要是minifyEnabled還是true,輸出的jar包還是混淆的。
為了測試自己匯出的aar包是否可用,我自己新建了一個android project,就做一個簡單的介面。
在As project中引用aar 還是需要將aar拷貝到libs資料夾,在gradle的dependencies 中加入
compile(name:’app-release’, ext:’aar’)
name後面的是aar包的包名,
rebuild project,成功的話在project會在build->intermediates下面看到explored-aar中含有這個包
然後按照普通的libs包用就可以了

匯入到unity3d之前需要將原來引入的unity3d_classes.jar檔案刪除,因為unity3d編譯時會生成自己的jar包,要是混淆打包的aar就有一個問題,需要-keep class 所有的jar檔案不被混淆,然後用解壓工具刪除classes.jar的包含的unity3d_classes的檔案。

在unity工程中Assets->plugins->android
這裡寫圖片描述
Mainfest的檔案是從As中專案拷貝過來的,unity的projectname和Mianfest的packagename一致

Unity呼叫android的方法

AndroidJavaClass jc = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject jo = jc.GetStatic(“currentActivity”);
jo.CallStatic(“StarScane”);

帶引數

public void connect(string address)
{
#if UNITY_ANDROID
text.text += “連線裝置”;
AndroidJavaClass jc = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject jo = jc.GetStatic(“currentActivity”);
jo.CallStatic(“connect”,address);
#endif
}

最後build&run,我在這一步還是遇到很多問題,配置SDK路徑,顯示platforms的Api is 0 ,這類錯誤基本是SDK路徑錯誤,或者去AS下面的SDKManager更新下SDk版本,也可能會和build tools有關係,反正覺得有問題的你都下載吧 我就是這麼解決的,JDK的路徑和AS的一樣就好
build&run執行到手機就可以
[TOC]
感謝http://www.cnblogs.com/xtqqkss/p/6387271.html的分享,大家可以看看,一步步做,慢慢查問題,還是可以做出來的,雖然我打個包花了我好幾天
再見

相關推薦

Android 打包aarunity3d使用 專案心得

步驟 製作androidproject 修改build.gradle配置 打包aar 1.混淆打包aar 2.jar包匯出 3.在其他的android工程引入aar 匯入unity專案 執行unity3d輸出apk包 新建一個project

Android Stuido匯出AAR Unity3D呼叫注意事項

1. 匯出 AAR過程需要注意,依賴的檔案並沒有打進去,所以要收到拷入到 Unity專案中,如下圖中的 support包,是我專案中要用到的: 2.刪除aar包中重複的 libs下的 jar檔案和 jni下的  .so檔案,否則呼叫的時候會報錯。 3. Manif

SpringBoot專案打包提供其他專案依賴

1. 剔除不需要的檔案:如Application和ApplicationTests 2. 打包     注意:不能使用springboot自帶打包 <build> <plugins> <plugin>

解決Android 打包aar 無法引用類庫中 dependencies 遠端依賴

前言: 最近在專案中使用到Maven本地倉庫,之前用Maven只是用別人的庫做依賴。而對與上傳本地倉庫或外部倉庫還不是很瞭解,在學習了別人的技術文章後在這裡做一些總結。 基本描述: maven的倉庫分兩類: 1、本地倉庫 maven在本地儲存構件的地方。 maven

Android打包aar檔案上傳到JCenter倉庫指南

目錄 說明 操作步驟 總結: 說明 為什麼要將包上傳到JCenter呢?  我們日常開發中,對於一些公共的元件總是打成jar包或aar包來提高利用性,但是如果多個專案中要用到這些jar包就需要將jar包copy到每一個專案中,非常麻煩。 An

2017最最最最新的Android釋出aar別人使用方法

目測現在網上釋出aar的方法的教程都是一個版本,也就是maven-plugin為1.3,jfrog為1.0那個版本,老掉牙了有木有,還是自己寫個給自己備用吧。授之以魚不如授之以肉,從頭開始流程走一遍。 零、新建專案 新建一個專案起名為YourLi

Android 打包aar、jar,上傳倉庫

1、打包aar、jar: 成功編譯工程之後,在對應module之下,路徑 build/intermediates/bundles/ 可找到對應的 jar 檔案:classes.jar 在路徑 build/outputs/aar 下可以 找到對應aar檔案 :xx-debu

Android提供aarUnity3d呼叫

1.aar包製作 下面通過手機振動為例:PhoneVibrate package com.gamestar.nativesoundpool; import android.Manifest; import android.app.Activity; import android.app.S

Android Studio專案打包AAR,以及專案中嵌入AAR檔案,過程中出現R檔案報錯的坑

這幾天接到新需求,將ec專案嵌入到公司as總專案中,第一次搞,弄了好久,才搞定,入正題. 首先將ec專案匯入as中,解決各種報錯,比如png圖片,.9圖,以及各種不規範的log,吐死之類的,不細說,這個不難. 將專案遷移到AS中,成功執行,OK,開始打包AAR,打包AAR不

Android Studio導出jarUnity3D

player single cti con extend style unity3d 輸入 exclude 1、新建一個Android Studio工程,選擇空Activity 2、創建一個Module 3、將Unity的依賴jar包拷貝到工程的

Android Studio 打包AAR和第三方靜態庫

contain ise ply appcompat pla 依賴 prop 三方庫 spa 需求 現在有一個第三方庫libstatic_add.a和對應的頭文件static.h,要求封裝一個Module,該Module依賴這個靜態庫,要求打包的Module包含該靜態庫。

基於android的汽車租賃平臺專案需求分析心得

背景和目標   當下,汽車行業的發展給人們帶來了巨大的便捷,人們出行對車輛的需求也大大增加,由此興起的汽車租賃服務行業也帶給人們巨大便利,人們對租賃服務的大量需求,也使得汽車租賃行業有廣闊前景。隨著計算機網路快速發展,智慧手機的普及,同時Android系統在移動裝置中得到了廣泛的應用,Android APP

unity3d安卓Android打包流程

1.配置安卓,安裝AndroidSDK 和 JDK,然後下載安裝,就可以了。 2.配置unity使用安卓 Editor→Preference 3.釋出設定Ctrl+Shift+B開啟Build Setting; ①切換到Android平臺Switch Platfor

Android 打包上傳AAR檔案到本地Maven倉庫並且引用

1.前言 建議電腦端觀看,多圖慎入 平常專案中遇到的一些公共元件,公共模組,多個專案都在使用的情況下,我們一般有以下幾種做法 1.整個module匯入工程,如果module中有什麼bug,修改了還要其他專案再重新新增進去,很不方便 2.module打包A

關於Android Studio3.0版本把專案打包生成apk檔案(安卓手機下載可執行)

為了能在手機上體驗開發的專案實際體驗效果,故而查詢學習了,如何生成apk檔案。方法如下:首先在選單欄點選Build,再點選Generate Signed APK得到下圖,並點選Create new...下面Key store path:生成的jsk檔案等路徑設定Passwor

android從入門到精通-專案實戰(心得及原始碼)

個人心得 這個周的時間,我用了三天的時間跟著書籍上面的內容實現了,家庭理財通這個小的app,算是用來練手的開始。首先開始實現的時候,我是先從專案的架構開始,首先你的先理解者這個APP具體是幹什麼的,有幾個模組,每個模組有幾個功能。大致瞭解了之後就可以跟著編寫程

Android Studio 使用Gradle建立遠端本地倉庫,解決打包AAR包時丟失所有dependencies庫

使用Gradle建立遠端本地倉庫,解決打包AAR包時丟失所有dependencies庫 Android的打包AAR功能就是個笑話… 為什麼這麼說? 因為依賴庫打包AAR只會打包依賴庫的程式碼,如果依賴庫引用了其他東西則無法打包進去,所以會出現各種找不到類的問題

Android引入 和打包AAR 檔案

引入 aar 方法一、通過 libs 引入到 app 中 把 aar 檔案放在 libs 目錄下 在 app 的 build.gradle 中新增如下內容 repositories {     flatDir {         dirs 'libs'      }

基於Android硬體裝置跟微信伺服器通訊的專案心得,以UDP Byte通訊為例,建立無向連線,0530手札

這段時間挺忙的,微信企業號等微信系列的教程全部停滯了,原因是我手頭上抓著幾個專案,加班就不說了,今天剛剛把新接手的專案整到大概%80的樣 子吧,準備明天整整,星期一過來直接對接測試,很多朋友跑過來問問題,我是真沒時間,請見諒! 今天就分享下這個專案的總結,原始碼就不貼上了

Android Studio + MAT 你看真實專案實戰的記憶體洩露分析

先貼出我要進行實戰的專案背景;專案已經出爐快半年時間了,現在要對它進行效能上的優化,這時候就要使用到 MAT 。然後隨便記錄一下我的分析歷程。 首先要了解兩個概念:記憶體溢位和記憶體洩漏 記憶體溢位