2014-09-29 64 views
1

更新:爲了澄清,我可以成功構建過程。問題是關於直接在設備上安裝示例項目(儘管我認爲模擬器也不行)。鈦手機:無法在3.3.0版本中創建Android模塊

大約兩年前,我開發了一個模塊,允許Android上的藍牙連接。我相信當時最新版本的Titanium SDK大約2.0。我相信模塊的細節和示例應用程序與這個問題無關。我會首先問我的問題,然後嘗試解釋我所經歷的步驟,以引導我回到實際問題。

我的問題是:在我的環境中配置錯誤,或者這是Titanium SDK中的錯誤?

如果是後者,我很驚訝我無法找到任何有關它的信息,因爲它阻止了android模塊在最新的SDK中使用ant進行安裝。

  • 的Mac OS 10.9.5
  • 鈦工作室3.3.0.GA
  • 鈦CLI 3.3.0
  • Android的19
  • java -version:java的

    我的編譯環境信息版本「1.6.0_65」

  • Java(TM)SE運行環境(版本1.6.0_65-b14-462-11M4609)
  • 的HotSpot的Java(TM)64位服務器VM(建20.65-b04-462,混合模式)

我想現在在寫這篇文章的時候建造它最新的SDK,3.3.0 。我發現,當我試圖建立(安裝)與螞蟻,它導致了下面的輸出:

[exec] [ERROR] /var/folders/x7/h7lgzf1n4nx7fcwr26fdrzxr0000gn/T/mTUYC62ti/testmodule/build/android/res/values-v14/themes_base.xml:133: error: Error: No resource found that matches the given name: attr 'android:actionBarWidgetTheme'. 
[exec] [ERROR] /var/folders/x7/h7lgzf1n4nx7fcwr26fdrzxr0000gn/T/mTUYC62ti/testmodule/build/android/res/values-v14/themes_base.xml:148: error: Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Holo.Light.DialogWhenLarge'. 
[exec] [ERROR] /var/folders/x7/h7lgzf1n4nx7fcwr26fdrzxr0000gn/T/mTUYC62ti/testmodule/build/android/res/values-v14/themes_base.xml:159: error: Error: No resource found that matches the given name: attr 'android:actionBarWidgetTheme'. 
[exec] [ERROR] Error generating R.java from manifest 
[exec] [ERROR] Build Failed. 

BUILD SUCCESSFUL 
Total time: 20 seconds 

不僅如此,而且創造了一個全新的移動模塊項目,並建設通俗易懂螞蟻時:

cd proj/android && ant install 

錯誤是一樣的。我還應該指出,我在不久之前就重新格式化了,所以我發現我已經不可能已經對我的鈦合金安裝進行了佈置。現在,從這裏開始,我已經加入了Titanium構建腳本來試圖弄清楚發生了什麼。首先,從鈦SDK 3.3.0版本說明:

Due to the addition of the appcompat library, there are a number of behavior changes to the application: 
... 
The target SDK must be set to API level 14 (Android 4.0.x) or higher, or you must have API level 14 or higher installed. 

現在在構建輸出爲我的項目:

[exec] [TRACE] Writing out AndroidManifest.xml 
[exec] [DEBUG] /path/to/my/androidsdk/build-tools/17.0.0/aapt package -m -J /var/folders/x7/h7lgzf1n4nx7fcwr26fdrzxr0000gn/T/mTUYC62ti/testmodule/build/android/gen -M /var/folders/x7/h7lgzf1n4nx7fcwr26fdrzxr0000gn/T/mTUYC62ti/testmodule/build/android/AndroidManifest.xml -S /var/folders/x7/h7lgzf1n4nx7fcwr26fdrzxr0000gn/T/mTUYC62ti/testmodule/build/android/res -I /path/to/my/androidsdk/platforms/android-10/android.jar 

注意,它使用的工具爲Android-10,而不是Android的14 +這是奇怪的考慮我的timodule.xml和build.properties的相關位: timodule.xml:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> 
<tool-api-level>19</tool-api-level><!-- deprecated - see below --> 

build.properties:

titanium.platform=/Users/trey/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.GA/android 
android.platform=/Users/trey/sdk/android-sdk-macosx/platforms/android-19 
google.apis=/Users/trey/sdk/android-sdk-macosx/add-ons/addon-google_apis-google-19 
android.ndk=/Users/trey/sdk/android-ndk-r9d 

事實證明,它似乎只是不重要的元素,而不是在timodule.xml中。構建腳本可在$titanium_sdk/$os/$version/android/ 觀察:在builder.py中設置MIN_API_LEVEL = 19(或14)而不是10可修復問題。所以構建腳本忽略了我的配置並使用默認值。這似乎在構建器類的初始化方法發生:

temp_tiapp = TiAppXML(self.project_tiappxml) 
if temp_tiapp and temp_tiapp.android: 
    if 'tool-api-level' in temp_tiapp.android: 
     self.tool_api_level = int(temp_tiapp.android['tool-api-level']) 
     tool_api_level_explicit = True 

這臺tool_api_level的構建腳本使用,但在我的情況下,它不會被調用,因爲沒有tiapp.xml。所以我做了一個tiapp.xml,並將其放入我的示例項目中。它具有與timodule.xml相同的配置。作爲構建過程的一部分,它將與示例項目的其餘部分一起復制到將用於構建和運行項目的臨時文件夾中。 self.project_tiappxml在上面的代碼中是項目的根。而且在那裏還沒有tiapp.xml,因爲它被複制到Resources目錄中,所以tool_api_level總是被設置爲默認值10.這基本上就是我所得到的。

所以,我的問題再次出現:是我的配置錯了,還是這是一個錯誤。在我看來,如果它是一個bug,那麼沒人能夠構建android模塊,我可以告訴。所以,如果這是我的錯,我做了什麼導致它,我怎樣才能解決它。

更新:如果你看到我最後一次編輯,那是錯誤的,我很抱歉 - 我選擇的ti版本的SDK是3.2.3!修正了這個問題,它創建了新的項目。它也構建。然而,在安裝示例項目仍然會導致同樣的錯誤如上:

[exec] [ERROR] Error generating R.java from manifest 
[exec] [ERROR] Build Failed. 

我還添加了調用上面一行AAPT,澄清這些錯誤發生在試圖寫AndroidManifest.xml中的示例項目。

回答

0

其良好的您正在使用3.3.0的工作,因爲從這個版本的Android模塊創建相對easy.by查看您的build.properties我覺得缺了點什麼,或者你忘了這裏完全應該到了接近補充:

titanium.platform=/Users/xxxxxx/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.GA/android 
android.platform=/Users/xxxxxx/Documents/adt-bundle-mac/sdk/platforms/android-16 
google.apis=/Users/xxxxxx/Documents/adt-bundle-mac/sdk/add-ons/addon-google_apis-google-16 
android.ndk=/Users/xxxxxx/Documents/android-ndk 

,但我的建議是檢查下列各項,因爲他們得到錯過經常:

  1. 你應該安裝的Android NDK和路徑
  2. 您必須的gperf INSTAL率領您的系統(適用於Mac自帶的Xcode命令行工具)

其次在終端中運行以下命令:

ti create -p android -t module -d <WORKSPACE_DIR> -n <MODULE_NAME> -u <MODULE_URL> --id <MODULE_ID> 
## Sample Command 
ti create -p android -t module -d ~/Documents/Sample_Workspace/ -n calc -u http:// --id org.appcelerator.calc 

如果一切正常,你將有一個模塊在Sample_Workspace文件夾與名稱calc和給定的ID。

你可以通過將它導入到eclipse中直接使用它。一旦完成,可以在目錄上使用ant來構建它。

希望它有幫助。檢查module creation guide

+0

感謝您的答覆。我沒有發佈我的整個build.properties。很快就會發布cli的輸出。我確實安裝了所有必需的軟件。這是新AppCompat要求的一個問題。 – threeve 2014-09-30 11:30:32