2014-09-29 42 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